跳到主要内容

MOD 制作入口

路线档案

适合:想制作 CCB MOD 的创作者 · 前置:会编辑文本文件 · 最终成果:一个能加载、验证并登记到 CCB-MOD 的 MOD

CCB 当前只有一套可执行 MOD 接口:Lua Platform v1。新的行为、条件、效果和工作流用 Lua 编写;物品数值等静态、可校验的数据仍可使用 JSON。两种内容都不需要修改 C++ 或重新编译游戏。

你要做什么从这里开始
编写行为、事件、条件、交互或 UILua Platform v1 快速上手
添加静态物品、配方、怪物或地图数据创建第一个 JSON MOD
找 MOD、安装 MODCCB MOD 中心
登记作者仓库中的民间 MOD民间 MOD 登记说明

完整学习路线​

课程你会完成
创建第一个 JSON MOD选择安装位置,写出由当前代码支持的静态 MOD_INFO
添加物品与配方理解 ID、引用、单位、文件拆分与查找现有例子
调试与验证使用 --check-mods、独立用户目录、日志和调试菜单
依赖与兼容处理依赖、冲突、跨 MOD 交互和存档稳定性
测试与发布制作发布包,说明版本与许可,满足内置 MOD 维护要求

Lua、静态 JSON 和 C++ 的边界​

需求优先方案
新行为、条件、效果、事件和交互流程Lua Platform v1
只包含静态字段的物品、配方、怪物、职业和地图数据JSON MOD
调整数值、继承现有对象、增删 flagsJSON 的 copy-from、relative、proportional、extend/delete
只在另一个 MOD 启用时加载兼容内容mod_interactions/<对方 mod id>/
新增当前 Platform 不支持的底层能力先讨论 C++ / Lua Platform API 改动
修改渲染后端、性能热路径或系统级输入C++ 与平台代码

不要为新 MOD 使用已经移除的 Lua API v5、game.* 全局表、Capability Manifest 或旧 JSON 行为教程。接口细节以 CCB 的 ccb_platform_v1.d.lua、机器契约和测试为准。

事实来源的优先级​

CCB 会选择性同步上游,旧教程可能已经过时。发生冲突时按以下顺序判断:

  1. 当前 CCB 代码:加载器实际读取了什么字段;
  2. 当前 CCB 内置数据:最新版本确实加载成功的例子;
  3. 当前 CCB 仓库文档:doc/JSON/、doc/MODDING.md 等;
  4. 本站教程;
  5. 第三方文章、视频和旧版 CDDA 教程。

本站在关键章节直接链接 CCB master 文件,方便发现变化。若网站与代码不一致,请按提交 Issue反馈页面、代码位置和当前行为。

仓库地图​

CCB 路径用途
src/mod_manager.cpp、src/mod_manager.hMOD 扫描、元数据字段、分类、依赖与冲突
data/mods/dda/modinfo.jsonCCB 当前核心模组 ID 和内容路径
data/json/核心游戏对象,可搜索当前字段范例
data/mods/随游戏发布的 MOD 和跨 MOD 兼容范例
doc/MODDING.mdMOD 基础与常见内容例子
doc/JSON/JSON_INFO.mdJSON 总入口
doc/JSON/*.md物品、怪物、地图、EOC、对话等专题
doc/MOD_COMPATIBILITY.mdmod_interactions 规则
doc/TRANSLATING_MOD.mdMOD gettext 提取与编译
tools/load_all_mods.sh仓库内 MOD 组合加载检查

开始前准备​

  • 使用能显示 JSON 语法错误、UTF-8 和括号匹配的编辑器;
  • 准备一份与目标 CCB 版本一致的游戏;
  • 新建专用测试世界,不用重要存档试验;
  • 为 MOD 选择不会与别人冲突的短 ID 前缀;
  • 每增加一个小功能就加载验证,不要最后一次性排几十个错误。
不要在发布包里覆盖核心文件

第三方 MOD 应放在自己的目录,通过 JSON 合并、继承和兼容机制扩展游戏。直接覆盖 data/json/ 会让更新、卸载、复现和多人协作都变得困难。

从创建第一个 MOD开始。