C 模块
C 模块是一种包类型,允许扩展 nanos world 脚本 API 的功能
C 模块允许你在服务器端扩展 nanos world 脚本 API 的功能。 目前仅支持 C 模块。
注意
请注意,脚本 API 的这部分内容目前正在开发中,可能会随时发生变化。
注意
这是一个高级操作,因此可能会出现不稳定甚至崩溃的情况。
创建你的 C 模块二进制文件
要创建你自己的模块,首先请确保你的电脑上安装了 Visual Studio 及其 使用 C++ 的桌面开发(以及 CMake),或者 Linux 上的任何其他 C 编译器。
第一步
- 然后,将我们的示例模块克隆到你的电脑上以开始使用。
- 克隆完成后,你需要使用
git submodule update --init --recursive下载其子模块——这会自动将 module-sdk 作为 git 子模块下载到 deps/ 文件夹中。
理解示例
重要文件位于 src/example.cpp:
src/example.cpp
loading...
编译你的 C 模块
要编译该示例,请按照以下步骤操作:
- 创建一个名为
build/的文件夹:mkdir build - 进入 build 文件夹:
cd build - 使用
cmake ..生成 cmake 构建文件 - 最后使用
cmake --build . --config Release进行构建
这将在以下路径生成编译好的库:
- Windows:
build/Release/example.dll - Linux:
build/libexample.so
提示
如果你打算让你的模块同时支持 Linux 和 Windows 服务器,你还必须在 Linux 机器上编译 .so 文件,并将这两个库文件随你的包一起交付。
创建 C 模块包
首先,创建一个类型为 c-module 的新包,并将你的 .dll (Windows) 和/或 .so (Linux) 文件添加到该包的根文件夹中。
如下所示:
Packages/
└── my-module/
├── Package.toml
├── example.dll
└── libexample.so
然后将你的模块库名称(在我们的示例中为 example)添加到 Package.toml 的 modules 列表中:
my-module/Package.toml
# 资源库配置
[meta]
# 易读名称
title = "我超棒的 C 模块"
# contributors
author = "贡献者名称"
# version
version = "0.1.0"
# c 模块配置
[c_module]
# 要加载的模块列表(不带文件扩展名)
modules = [
"example",
]
加载并使用你的 C 模块
现在你可以像往常一样加载你创建的包,将其添加到 Config.toml 的 Packages 需求列表中,或者将其作为依赖项添加到另一个包的 Package.toml 中,例如:
Server/Config.toml
...
# 游戏配置
[game]
# 默认启动地图
map = "default-blank-map"
# 要加载的游戏模式包(设置要加载的主游戏模式包——一次只能加载一种“游戏模式”包类型)
game_mode = ""
# 包列表(设置要加载的包)
packages = [
"my-module",
]
...
在你的包中,你可以像这样加载并使用它:
my-awesome-package/Server/Index.lua
-- 调用模块函数“test”
-- 将在控制台打印“Hello World”
Console.Log(example.test())