Bienvenido al repositorio de Mod.io SDK, construido con C ++. Permite a los desarrolladores de juegos alojar e instalar automáticamente contenido generado por el usuario en sus juegos. Se conecta a la API REST Mod.io.
MIT/BSL-licencia permisiva
Interfaz async basada en devolución de llamada
IO sin bloqueo con un modelo de 'trae tu propio hilo'
Descargas y actualizaciones automáticas
Correo electrónico / vapor / egs / consolas / autenticación SSO personalizada
Mod de navegación / filtrado
Soporte de compilación directa o biblioteca estática con solo encabezado con compilador C ++ 17
Integración nativa de Unreal Engine disponible a través de nuestro complemento dedicado
Plataforma | Apoyo | Compilador |
Windows | ✔ | MSVC C ++ 2019 |
Windows (GDK) | ✔ (contáctenos) | Proporcionado por el proveedor |
Nintendo Switch | ✔ (contáctenos) | Proporcionado por el proveedor |
Xbox (GDK) | ✔ (contáctenos) | Proporcionado por el proveedor |
PlayStation®4 | ✔ (contáctenos) | Proporcionado por el proveedor |
PlayStation®5 | ✔ (contáctenos) | Proporcionado por el proveedor |
Linux | ✔ | Clang 10 |
macosa | ✔ | Clang 10 |
iOS | ✔ | Clang 10 |
Androide | ✔ | Clang 10 |
Configuración | Versión |
Solo encabezado | C ++ 17 (Windows) |
Biblioteca estática | C ++ 17 |
Requisitos previos para compilar este SDK se enumeran en la documentación inicial
Es posible descargar el código fuente como un archivo zip de esta página web. Sin embargo, un clon recursivo descarga todas las dependencias. Por lo tanto, la sugerencia es realizar lo siguiente:
git clone --recurse-submodule https://github.com/modio/modio-sdk
cd modio-sdkPara usar el Mod.io SDK, puede continuar con la instalación utilizando una de las siguientes perspectivas:
Dentro de un proyecto Cmake
Independiente: modo de solo encabezado
Independiente: modo de compilación separado
Independiente: modo de biblioteca estática
El Mod.io SDK requiere un núcleo Linux con soporte de libring (v5.1 o posterior). Las llamadas del sistema IO_uring proporcionan operaciones de entrada/salida asincrónicas. Para cumplir con ese requisito y tener las herramientas de desarrollo listas, los siguientes comandos emplean al Administrador de paquetes "APT" (probado en Ubuntu 20.04 fosa focal):
sudo apt update
sudo apt upgrade
sudo apt install llvm clang lldb make wget python3 ninja-build git unzip libsdl2-dev
# # Install Cmake
wget -q -O cmake-linux.sh https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0-Linux-x86_64.sh
sh cmake-linux.sh -- --skip-license --prefix=/usr/
# # Install liburing-dev
wget http://mirrors.kernel.org/ubuntu/pool/main/libu/liburing/liburing-dev_0.7-3ubuntu3_amd64.deb
wget http://mirrors.kernel.org/ubuntu/pool/main/libu/liburing/liburing1_0.7-3ubuntu3_amd64.deb
sudo apt install ./liburing * deb Nota | Si está utilizando el modo de liberación "Header_Only", el SDK Mod.io incluye encabezados MBedTLS, pero requiere la biblioteca instalada en su sistema, que se probó con libmbedtls-dev 2.28.0 en Ubuntu. El modo "estático" incluye estas bibliotecas en la misma carpeta que el libmodiostatic.A |
El SDK Mod.io para el desarrollo en MacOS / IOS requiere Clang 10 o GCC 10 o posterior, que se incluye en la instalación de Xcode. Se recomienda Xcode 14 o posterior. Para instalar CMake 3.20 o Ninja 1.10, se recomienda utilizar la cerveza de la siguiente manera:
brew install cmake ninja iOS se compila de forma predeterminada al simulador. Si necesita implementar en un dispositivo, agregue variable MODIO_IOS_DEVICE a cmake. Consulte la documentación en la plataforma ReadMe.Adoc para obtener más detalles.
El objetivo mínimo de implementación es MACOS 12.0. En caso de móvil, es iOS 15.0
Clonar el repositorio, o agréguelo como un submódulo
Confirme que your_project use cmake 3.20 o posterior
cmake_minimum_required ( VERSION 3.20)Especifique la plataforma de destino, con opciones: Win o Linux
set (MODIO_PLATFORM WIN)Agregue el subdirectorio SDK a su proyecto
add_subdirectory (<modio-sdk folder> EXCLUDE_FROM_ALL )
target_compile_features (your_project PUBLIC cxx_std_17)Enlace la biblioteca a su proyecto
Para usar la configuración de solo encabezado:
target_link_libraries (your_project PUBLIC modio)O para usar la configuración de la biblioteca estática:
target_link_libraries (your_project PUBLIC modioStatic) Para simplificar la compilación SDK, el archivo CMakePresets.json incluye las configuraciones más comunes como presets que emplean ninja de forma predeterminada. Por lo tanto, confirme que está disponible en su PATH a menos que desee anular el generador CMake en uso.
Plataforma | Programar | Objetivo | Sistema de construcción |
Windows | ganar | Liberar | Visual Studio 2019 |
Windows | nuco | Depurar | Visual Studio 2019 |
Windows | ganar-dbginfo | Prestación previa | Visual Studio 2019 |
Linux | Linux64 | Liberar | Ninja |
Linux | Linux64-debug | Depurar | Ninja |
Linux | linux64-dbginfo | Prestación previa | Ninja |
macosa | macosa | Liberar | Ninja o xcode |
macosa | mate-debug | Depurar | Ninja o xcode |
macosa | macOS-dbginfo | Prestación previa | Ninja o xcode |
iOS | iOS | Liberar | Ninja o xcode |
iOS | ios-debug | Depurar | Ninja o xcode |
iOS | iOS-dbginfo | Prestación previa | Ninja o xcode |
Los preajustes de depuración tienen el sufijo -debug , y la liberación-with-debug-info es -dbginfo . Si desea construir el SDK en la configuración de depuración, especifique el nombre, por ejemplo win-debug como nombre preestablecido.
Para construir el SDK utilizando los directorios de construcción e instalación predeterminados:
cmake -S <modio-sdk folder> --preset=win
Esto utilizará el generador Ninja para crear un sistema de compilación Ninja en <modio-sdk folder>/out/build/win . Instala las bibliotecas/encabezados compilados en <modio-sdk folder>/out/install/win . Para construir los ejemplos, agregue `-dmodio_build_examples = true`.
cmake --build <modio-sdk folder>/out/build/win
Este paso compila el SDK como una biblioteca estática.
cmake --install <modio-sdk folder>/out/build/win
Esto produce una carpeta <modio-sdk folder>/out/install/win con lo siguiente:
header_only - Directorio con la versión solo de encabezado del SDK
source : directorio que contiene los archivos de implementación del SDK para su uso en el modo 'compilación dividida'
static - Directorio que contiene los binarios de la biblioteca estática y el público necesario incluye encabezados
Nota | Si está compilando el SDK Mod.io usando diferentes arquitecturas, puede cambiar la carpeta de compilación preestablecida modificando la ruta "CMake_install_Prefix". |
Simplemente agregue cada uno de los subdirectorios en header_only a sus directorios de incluido. Luego, en your_project archivo fuente_project, agregue #include "modio/ModioSDK.h"
Si prefiere compilar el código fuente directamente, agregue los archivos cpp en el directorio source , junto con la include desde el modo de solo encabezado. Debe agregar MODIO_SEPARATE_COMPILATION a las definiciones del compilador de su proyecto. Luego, en your_project archivo fuente_project, agregue #include "modio/ModioSDK.h"
Agregue el directorio inc dentro de static a su include y un enlace contra el binario estático en la carpeta lib . Debe agregar MODIO_SEPARATE_COMPILATION a las definiciones del compilador de su proyecto. Luego, en your_project archivo fuente_project, agregue #include "modio/ModioSDK.h"
Si utiliza un sistema de compilación diferente o desea generar archivos de proyecto para su inclusión en una solución de Visual Studio existente, puede anular el generador CMAKE predeterminado. Por ejemplo, es posible utilizar una solución Visual Studio basada en MSBuild:
cmake -S <modio-sdk folder> --preset=win -G "Visual Studio 16 2019"
cmake --build <modio-sdk folder>/out/build/win
cmake --install <modio-sdk folder>/out/build/winTenga en cuenta que al usar el generador de código Visual Studio, también debe pasar en la configuración de destino (es decir, la versión o depuración), por ejemplo:
cmake -S <modio-sdk folder> --preset=win -G "Visual Studio 16 2019" --Config=Release Si está utilizando el compilador clang con Visual Studio, verifique la sección Compilador Clang en Visual Studio para obtener más detalles
Si tiene una versión personalizada de la biblioteca FMT, puede modificar la etapa de enlace que define MODIO_USE_CUSTOM_FMT . Esto define señala el sistema de compilación CMake para usar una versión personalizada de la biblioteca. Además, requiere que defina MODIO_CUSTOM_FMT_PATH a la ruta del sistema que contiene la biblioteca FMT para usar.
El directorio dado a MODIO_CUSTOM_FMT_PATH debe contener un cmakelists.txt que expone los objetivos fmt y/o fmt-header-only .
De forma predeterminada, el SDK consumirá el objetivo fmt-header-only . Defina MODIO_CUSTOM_FMT_STATIC a true para anular esto y solicite el consumo del objetivo de la biblioteca estática fmt .
Cuando compile el SDK de Mod.io y necesita una biblioteca X64 en Windows, confirme el uso del "X64 Solicitud de herramientas nativas para VS 2019", que por defecto emplea el compilador X64. Para verificar que la biblioteca estática o compartida se compiló con la arquitectura x64, puede usar el comando "dumpbin":
dumpbin outbuildwinmodiomodioStatic.lib /headersLuego busque la confirmación de la siguiente manera:
Dump of file outbuildwinmodiomodioStatic.lib
File Type: LIBRARY
FILE HEADER VALUES
8664 machine (x64)
34A number of sections
63336D7D time date stamp Wed Sep 28 10:39:09 2022
136EC file pointer to symbol table
AC9 number of symbols
0 size of optional header
0 characteristics Consulte la documentación de Getting Start para obtener un desglose de los conceptos y el uso del Mod.io SDK, que incluye:
Inicialización SDK y bucle de eventos
Autenticación
Navegación de mod
Gestión de suscripción de mod
Si necesita ayuda con las aprobaciones de 1st Party, o requiere una solución privada de UGC de etiqueta blanca. Contáctenos para discutir.
Nuestro SDK es público y de código abierto. Los desarrolladores de juegos pueden utilizarlo directamente, para agregar soporte para modificaciones en sus juegos o bifurcándolo para su uso personalizado. Si desea contribuir al SDK, envíe una solicitud de extracción con sus cambios recomendados para su revisión.
Mod.io proporciona una API abierta para contenido generado por el usuario. Usted puede ver, bifurcarse y contribuir a otras bases de código que lanzamos.