欢迎来到使用C ++构建的Mod.io SDK存储库。它允许游戏开发人员在其游戏中托管并自动安装用户生成的内容。它连接到mod.io Rest API。
允许的MIT/BSL许可
异步基于回调的接口
用“带上自己的线程”模型的非阻滞IO
自动下载和更新
电子邮件 /蒸汽 / EGS / Consoles /自定义SSO身份验证
mod浏览 /过滤
C ++ 17编译器,仅标题,直接编译或静态库支持
通过我们的专用插件可用的本机非现实引擎集成
平台 | 支持 | 编译器 |
视窗 | ✔ | MSVC C ++ 2019 |
Windows(GDK) | ✔(联系我们) | 供应商提供 |
任天堂开关 | ✔(联系我们) | 供应商提供 |
Xbox(GDK) | ✔(联系我们) | 供应商提供 |
PlayStation®4 | ✔(联系我们) | 供应商提供 |
PlayStation®5 | ✔(联系我们) | 供应商提供 |
Linux | ✔ | 叮当10 |
macos | ✔ | 叮当10 |
ios | ✔ | 叮当10 |
安卓 | ✔ | 叮当10 |
配置 | 版本 |
仅标头 | C ++ 17(Windows) |
静态库 | C ++ 17 |
编译此SDK的先决条件在入门文档中列出
可以从此网页下载源代码作为zip文件。但是,递归克隆下载所有依赖性。因此,建议是执行以下内容:
git clone --recurse-submodule https://github.com/modio/modio-sdk
cd modio-sdk
要使用Mod.io SDK,您可以使用以下角度之一进行安装:
在一个CMAKE项目中
独立:仅标题模式
独立:单独的汇编模式
独立:静态库模式
mod.io SDK需要一个带有放置支持的Linux内核(v5.1或更高版本)。 io_uring系统调用提供异步输入/输出操作。为了满足这一要求并准备好开发工具,以下命令采用“ APT”软件包管理器(在Ubuntu 20.04 focal Fossa上进行了测试):
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
笔记 | 如果您使用的是“ header_only”发布模式,则mod.io sdk包含MBEDTLS标头,但需要在系统中安装的库,该库在Ubuntu中使用libmbedtls-dev 2.28.0进行了测试。 “静态”模式在与libmodiostatic.a的同一文件夹中包含这些库 |
MACOS / iOS开发的Mod.io SDK需要clang 10或GCC 10或更高版本,这包括在Xcode安装中。建议使用XCode 14或更高版本。要安装Cmake 3.20或Ninja 1.10,建议使用以下啤酒:
brew install cmake ninja
iOS默认为模拟器编译。如果您需要部署到设备,请在cmake中添加变量MODIO_IOS_DEVICE
。在平台readme.adoc中查看文档以获取更多详细信息。
最小部署目标是MACOS 12.0。如果是移动设备,则是iOS 15.0
克隆存储库,或将其添加为子模块
确认your_project
使用CMAKE 3.20或更高版本
cmake_minimum_required ( VERSION 3.20)
指定目标平台,带有选项:Win或Linux
set (MODIO_PLATFORM WIN)
将SDK子目录添加到您的项目
add_subdirectory (<modio-sdk folder> EXCLUDE_FROM_ALL )
target_compile_features (your_project PUBLIC cxx_std_17)
将图书馆链接到您的项目
使用仅标题配置:
target_link_libraries (your_project PUBLIC modio)
或使用静态库配置:
target_link_libraries (your_project PUBLIC modioStatic)
为了简化SDK汇编,文件CMakePresets.json
包括最常见的配置作为默认情况下使用忍者的presets
。因此,除非要覆盖使用的CMAKE GENERATOR,否则请确认它可以在PATH
上使用。
平台 | 预设 | 目标 | 构建系统 |
视窗 | 赢 | 发布 | Visual Studio 2019 |
视窗 | 获奖者 | 调试 | Visual Studio 2019 |
视窗 | Win-dbginfo | 预释放 | Visual Studio 2019 |
Linux | Linux64 | 发布 | 忍者 |
Linux | linux64-debug | 调试 | 忍者 |
Linux | linux64-dbginfo | 预释放 | 忍者 |
macos | macos | 发布 | 忍者或Xcode |
macos | macos挑战 | 调试 | 忍者或Xcode |
macos | macos-dbginfo | 预释放 | 忍者或Xcode |
ios | ios | 发布 | 忍者或Xcode |
ios | iOS挑战 | 调试 | 忍者或Xcode |
ios | ios-dbginfo | 预释放 | 忍者或Xcode |
调试预设具有-debug
后缀,并且释放debug-info为-dbginfo
。如果要在调试配置中构建SDK,则指定名称,例如win-debug
作为预设名称。
使用默认构建和安装目录构建SDK:
cmake -S <modio-sdk folder> --preset=win
这将使用Ninja Generator在<modio-sdk folder>/out/build/win
中创建忍者构建系统。它将编译的库/标头安装到<modio-sdk folder>/out/install/win
。要构建示例,请附加`-dmodio_build_examples = true`。
cmake --build <modio-sdk folder>/out/build/win
此步骤将SDK编译为静态库。
cmake --install <modio-sdk folder>/out/build/win
这将产生一个文件夹<modio-sdk folder>/out/install/win
以下:
header_only
标题,仅标题版本的SDK
source
- 包含SDK的实现文件的目录,用于“拆分”模式
static
- 包含静态图书馆二进制文件和必要公众的目录包括标题
笔记 | 如果要使用不同的体系结构对Mod.io SDK进行编译,则可以通过修改“ CMAKE_INSTALL_PREFIX”路径来更改预设编译文件夹。 |
只需将header_only
中的每个子目录添加到您的包含目录。然后,在your_project
源文件中添加#include "modio/ModioSDK.h"
如果您希望直接编译源代码,请在source
目录中添加cpp
文件,以及来自仅标头模式的include
。您必须在项目的编译器定义中添加MODIO_SEPARATE_COMPILATION
。然后,在your_project
源文件中添加#include "modio/ModioSDK.h"
将inc
目录内部static
添加到您的include
,并链接到lib
文件夹中的静态二进制文件。您必须在项目的编译器定义中添加MODIO_SEPARATE_COMPILATION
。然后,在your_project
源文件中添加#include "modio/ModioSDK.h"
如果您使用不同的构建系统或希望生成项目文件以包含在现有的Visual Studio解决方案中,则可以覆盖默认的CMake Generator。例如,可以使用基于MSBUILD的Visual Studio解决方案:
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/win
请注意,使用Visual Studio代码生成器时,您还必须传递目标配置(即发布或调试):例如:
cmake -S <modio-sdk folder> --preset=win -G "Visual Studio 16 2019" --Config=Release
如果您正在使用Visual Studio的clang
编译器,请在Visual Studio中查看部分Clang编译器以获取更多详细信息
如果您有FMT库的自定义版本,则可以修改定义MODIO_USE_CUSTOM_FMT
的链接阶段。这定义了信号CMake Build System使用库的自定义版本。另外,它要求您将MODIO_CUSTOM_FMT_PATH
定义为包含要使用的FMT库的系统路径。
给出的MODIO_CUSTOM_FMT_PATH
的目录应包含一个cmakelists.txt,该目录揭示了fmt
和/或fmt-header-only
目标。
默认情况下,SDK将消耗fmt-header-only
目标。将MODIO_CUSTOM_FMT_STATIC
定义为true
以覆盖此问题并要求消耗fmt
静态库目标。
当您编译Mod.io SDK并且需要Windows中的X64库时,请确认使用“ X64本机工具命令提示for VS 2019”,默认情况下使用X64编译器。为了验证静态或共享库是使用X64架构编辑的,您可以使用“ dumpbin”命令:
dumpbin outbuildwinmodiomodioStatic.lib /headers
然后搜索以下确认:
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
请参阅“入门文档”,以了解Mod.io SDK的概念和使用情况,包括:
SDK初始化和事件循环
验证
mod浏览
mod订阅管理
如果您需要第一方批准的帮助,或者需要私人标签UGC解决方案。联系我们讨论。
我们的SDK是公共和开源。欢迎游戏开发人员直接利用它,以增加对游戏中的mod的支持,或为其定制使用。如果您想为SDK做出贡献,请提交带有建议更改的拉动请求以进行审查。
Mod.io为用户生成的内容提供了开放的API。欢迎您查看,分叉并为我们发布的其他代码库做出贡献。