Skip to content

从单机 Mod 到网络游戏 Mod ​

有单机 Mod(脚本)基础的开发者,可以把已有 Mod 改造成网络游戏 Mod。这一篇讲两种转换方式(手动 / MC Studio 一键)和调试方法。

前置要求

网络游戏 Mod 的组成 ​

网络游戏 Mod = 服务端 Mod + 客户端 Mod:

  • 客户端 Mod(行为包 + 资源包):跑在玩家手机上,处理界面交互、特效、entity 行为,只能用 Mod SDK 客户端组件/事件
  • 服务端 Mod:跑在 Linux 机器上,从数据库存取玩家数据、实现玩家交互,可用 Apollo SDK 全部功能 + Mod SDK 服务端组件/事件

方式一:手动转换 ​

把「入门脚本模板」这样的单机 Mod 转成网络游戏 Mod,步骤:

  1. 新建 Mod 根目录(如 tutorialApolloMod),下建 behavior_packs、resource_packs、worlds、developer_mods 四个文件夹
  2. 找到脚本模板里的 tutorialBehaviorPack_xxx 和 tutorialResourcePack_xxx
  3. 把 tutorialBehaviorPack_xxx 拷进 behavior_packs,重命名为 tutorialBehavior;把 tutorialResourcePack_xxx 拷进 resource_packs,重命名为 tutorialResource
  4. developer_mods 下新建 tutorialDev,把行为包里的 tutorialScripts 复制进来(作为服务端脚本)
  5. 在 worlds/level 下建 world_behavior_packs.json 和 world_resource_packs.json,把行为包/资源包 manifest.json 里 header 的 uuid、version 分别配进去

方式二:MC Studio 一键转换 ​

MC Studio 能直接转换,省去手动搬目录:

  1. MC Studio → 新建 → 基岩版组件 → 入门脚本模板 → 新建(生成一个 AddOn)
  2. 基岩版组件里找到它 → 更多 → 转换为服务端 Mod
  3. 输入 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 =====)会出现在大厅服日志里。验证功能时用客户端进游戏服,比如聊天框输入触发词看效果。

上手路径 ​

  1. 读「ModSDK 模组开发」,从 modMain.py 入手理解代码
  2. 在服务端事件/组件里挑几个感兴趣的,加到 Mod 里试运行
  3. 读 Apollo「SDK」文档,学更多 Apollo 用法
  4. 读「官方插件介绍」,开发自己的小游戏
  5. 遇到解决不了的问题及时和官方沟通反馈

下一篇部署与插件系统——改完代码怎么生效、怎么用官方插件。回到基岩版网络游戏首页。