从单机 Mod 到网络游戏 Mod
有单机 Mod(脚本)基础的开发者,可以把已有 Mod 改造成网络游戏 Mod。这一篇讲两种转换方式(手动 / MC Studio 一键)和调试方法。
网络游戏 Mod 的组成
网络游戏 Mod = 服务端 Mod + 客户端 Mod:
- 客户端 Mod(行为包 + 资源包):跑在玩家手机上,处理界面交互、特效、entity 行为,只能用 Mod SDK 客户端组件/事件
- 服务端 Mod:跑在 Linux 机器上,从数据库存取玩家数据、实现玩家交互,可用 Apollo SDK 全部功能 + Mod SDK 服务端组件/事件
方式一:手动转换
把「入门脚本模板」这样的单机 Mod 转成网络游戏 Mod,步骤:
- 新建 Mod 根目录(如
tutorialApolloMod),下建behavior_packs、resource_packs、worlds、developer_mods四个文件夹 - 找到脚本模板里的
tutorialBehaviorPack_xxx和tutorialResourcePack_xxx - 把
tutorialBehaviorPack_xxx拷进behavior_packs,重命名为tutorialBehavior;把tutorialResourcePack_xxx拷进resource_packs,重命名为tutorialResource developer_mods下新建tutorialDev,把行为包里的tutorialScripts复制进来(作为服务端脚本)- 在
worlds/level下建world_behavior_packs.json和world_resource_packs.json,把行为包/资源包manifest.json里 header 的uuid、version分别配进去
方式二:MC Studio 一键转换
MC Studio 能直接转换,省去手动搬目录:
- MC Studio → 新建 → 基岩版组件 → 入门脚本模板 → 新建(生成一个 AddOn)
- 基岩版组件里找到它 → 更多 → 转换为服务端 Mod
- 输入 Mod 名(如
tutorialApolloModV2)→ 转换,得到网络游戏 Mod
转换后仍要分离逻辑
MC Studio 只是替你执行了「手动转换」的搬目录过程,转换后客户端和服务端逻辑还没分离,仍需按 客户端/服务端分离 手动调整(注释掉对侧的 Init/Destroy、删对侧 System 文件)。
调试:打 Log
网络游戏 Mod 目前只能靠打 Log 调试。用 print 或 mod_log 模块:
python
# 简单调试用 print,正式日志建议用 mod_log
from mod_log import logger
logger.info("print log: %s", "OK")- 客户端日志:显示在「脚本测试日志」窗口
- 服务端日志:MC Studio 找到网络游戏 → 更多 → 查看服务端日志 → 弹出「服务器日志」窗口,选对应服(如「大厅服 4000」)查看
服务端 Mod 默认跑在大厅服
当前服务器 Mod 运行在大厅服。服务端 modMain.py 里 InitServer 函数打印的日志(如 ===== init tutorial server =====)会出现在大厅服日志里。验证功能时用客户端进游戏服,比如聊天框输入触发词看效果。
上手路径
- 读「ModSDK 模组开发」,从
modMain.py入手理解代码 - 在服务端事件/组件里挑几个感兴趣的,加到 Mod 里试运行
- 读 Apollo「SDK」文档,学更多 Apollo 用法
- 读「官方插件介绍」,开发自己的小游戏
- 遇到解决不了的问题及时和官方沟通反馈
