部署工具目录

Apollo Mods

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的标准目录格式如下:

img

developer_mods

服务端加载的mod目录,不会被传送到客户端。 下面以neteaseDatabase为例介绍其目录结构:

文件/文件夹 解释
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控制服务端行为,behavior_packs控制客户端行为。
  • behavior_packs会下载给客户端,developer_mods不会。
  • developer_mods可以使用Server Mod SDK全部接口和MOD SDK中服务端相关接口,behavior_packs使用MOD SDK中客户端相关接口。
  • behavior_packs必须包含pack_manifest.json文件,且需要在地图目录下world_behavior_packs.json文件中配置pack id和version。

developer_mods支持多个mod,每个mod对应一个目录,下面是neteaseDatabase和neteaseMongoDb两个mod的目录结构:

resource_packs

  • 存放客户端资源

  • 资源版本信息存放在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_packs

  • 存放客户端MOD
  • pack_manifest.json& world_behavior_packs.json配置与resource_packs类似
  • behavior_packs里只允许有一个目录,如果有多个,则只有第一个会被使用,请按*behavior格式命名,大小写不敏感
  • *behavior目录内脚本需要存放在*scripts目录内,且只允许有一个
  • *behavior目录内需包含版本信息配置pack_manifest.json

worlds

  • 只允许有一个子目录,如demo中的level
  • 目录名作为地图名称,不允许使用中文
  • 不要忘了配置world_behavior_packs.json等两个json

一个示例的目录结构如下:

文件/文件夹 解释
worlds 存放服务器地图目录,名字不可以更改
level 存放一个地图存档目录,目录名也就是地图名
db 地图存档目录
level.dat 存储关于地图的全局信息
levelname.txt 地图的名字
world_behavior_packs.json 配置客户端需要下载的behavior mods
world_resource_packs.json 配置客户端需要下载的resource mods

bat,sh

windows、linux版简易使用脚本,脚本用途详见部署脚本

template

一个文件夹代表一个网络服,文件夹名称即项目名 用于存放这个网络游戏的核心配置account.jsondeploy.json

scripts

一键部署脚本,一般不必理会,部署工具更新时整个替换即可

开发机目录

  • 开发者统一预分配账号为fuzhu
  • 以下目录均为使用部署工具搭建官方demo完成后方会生成
  • 网络游戏相关东西统一存放在/home/fuzhu/netgame/
  • 不要在netgame目录存放未经备份的重要信息,会被部署工具删除

以sample为例

应用部署目录

  • 应用部署根目录:/home/fuzhu/netgame/app/sample
  • 本机部署服务配置:/home/fuzhu/netgame/app/sample/config
  • 本机部署master:/home/fuzhu/netgame/app/sample/master
  • 本机部署game:/home/fuzhu/netgame/app/sample/game
  • 本机部署lobby:/home/fuzhu/netgame/app/sample/lobby
  • 本机部署proxy:/home/fuzhu/netgame/app/sample/proxy
  • 本机部署service:/home/fuzhu/netgame/app/sample/service

部署mods目录

  • 部署mods根目录:/home/fuzhu/netgame/mods/sample
  • 存放push上来的mods
  • 如果开启了pack_mcp,部署后behavior里的scripts会被转换成mcp
  • 如果开启了压缩上传push_mods,则同步前会删除旧的整个目录,否则会进行差量上传

logs目录

  • logs的真实存放路径:/home/fuzhu/netgame/logs/sample
  • app目录内的logs是软链接到这里

config & scripts

  • 部署工具使用的目录,一般情况无需关注
  • config缓存了部署配置
  • scripts存放了部署脚本