Mod入门介绍请参考mod开发简介。
Apollo Mods通常由控制服Mod,功能服Mod,大厅服Mod与游戏服Mod等组成,各种类型的Mod概念如下:
控制服Mod:包含控制服(master)的developer_mods目录下所有mod。
功能服Mod:包含功能服(service)的developer_mods目录下所有mod。
大厅服Mod:包含大厅服的 behavior_packs、resource_packs、developer_mods目录下所有的mod以及worlds(地图存档)。
游戏服Mod:包含游戏服的 behavior_packs、resource_packs、developer_mods目录下所有的mod以及worlds(地图存档)。
一个游戏服Mod的标准目录格式如下:

服务端加载的mod目录,不会被传送到客户端。 下面以neteaseDatabase为例介绍其目录结构:
neteaseDatabasenetease_require.jsonneteaseDatabase__init__.pycallplayerdata.pydatabaseServer.pymodMain.py
| 文件/文件夹 | 解释 |
|---|---|
| neteaseDatabase | 顶层neteaseDatabase,表示mod的名字;第二级neteaseDatabase表示行为包的目录,开发者从从该目录开始import module,比如import neteaseDatabase.callplayerdata as callplayerdata |
__init__.py |
是python module的标识,表示这是一个可以import的module,同时也可以做一些初始化的操作,内容可为空,但是文件必须有。 |
| callplayerdata.py | mod中db相关的接口 |
| databaseServer.py | mod业务逻辑 |
| modMain.py | 该文件名称不可以更改,用来初始化我们的Mod,具体使用参考mod开发简介 |
| netease_require.json | 用于控制服务器Mod加载顺序的配置文件,非必须,具体内容见《1-9 控制服务器Mod加载顺序的办法》 |
developer_mods和behavior_packs区别:
developer_mods支持多个mod,每个mod对应一个目录,下面是neteaseDatabase和neteaseMongoDb两个mod的目录结构:
xxxxxxxxxxneteaseDatabaseneteaseDatabase__init__.pycallplayerdata.pydatabaseServer.pymodMain.pyneteaseMongoDbneteaseMongoDb__init__.pymodMain.pydatabaseServer.pyMongoDbServer.py
存放客户端资源
资源版本信息存放在pack_manifest.json:
{ "format_version": 1, "header": { "description": "By tnm", "name": "tnm_glove_pve", "uuid": "1c850d23-64f4-46be-aec0-16c8e4618072", "version": [0, 0, 1] }, "modules": [ { "description": "By tnm", "type": "resources", "uuid": "637ff742-7003-4a8b-8d99-722a1b704f12", "version": [0, 0, 1] } ] }
并非所有resource_packs都会被客户端下载
需要将pack_manifest.json配置header中uuid配置到worlds/level/world_resource_packs.json中才会被客户端下载
world_resource_packs.json内容如下:
[
{
"pack_id" :
"1c850d23-64f4-46be-aec0-16c8e4618072",
"version" : [ 0, 0, 1 ]
}
]
*behavior目录内脚本需要存放在*scripts目录内,且只允许有一个*behavior目录内需包含版本信息配置pack_manifest.jsonworld_behavior_packs.json等两个json一个示例的目录结构如下:
xxxxxxxxxxworldsleveldblevel.datlevelname.txtworld_behavior_packs.jsonworld_resource_packs.json
| 文件/文件夹 | 解释 |
|---|---|
| worlds | 存放服务器地图目录,名字不可以更改 |
| level | 存放一个地图存档目录,目录名也就是地图名 |
| db | 地图存档目录 |
| level.dat | 存储关于地图的全局信息 |
| levelname.txt | 地图的名字 |
| world_behavior_packs.json | 配置客户端需要下载的behavior mods |
| world_resource_packs.json | 配置客户端需要下载的resource mods |
windows、linux版简易使用脚本
一个文件夹代表一个网络服,文件夹名称即项目名
一键部署脚本,一般不必理会,部署工具更新时整个替换即可
以sample为例
push_mods,则同步前会删除旧的整个目录,否则会进行差量上传