保姆级教程:手把手教你从零写一个Rimworld 1.4 Mod的About.xml配置文件
从零构建Rimworld 1.4 Mod的About.xml配置文件新手避坑指南当你第一次打开Rimworld的Mod文件夹时那些看似简单的XML文件背后其实隐藏着整个Mod生态的通行证。About.xml就像你Mod的身份证——它不仅决定了玩家在订阅列表中看到什么更影响着Mod加载时的生死存亡。我曾见过一个标点符号的错误导致整个Mod列表崩溃也遇到过因为packageId冲突让玩家无法启动游戏的惨剧。让我们从最基础的自动厨房Mod案例开始一步步拆解这个不到1KB却能决定Mod命运的关键文件。1. 创建About.xml的基础框架打开你喜欢的文本编辑器VSCode、Sublime Text甚至Notepad都可以新建一个名为About.xml的纯文本文件。第一行必须声明XML版本和编码这是所有XML文件的通用规范?xml version1.0 encodingutf-8? ModMetaData /ModMetaData这个骨架就像房子的地基——没有它后续所有内容都无法被游戏正确识别。保存时务必确认文件名严格区分大小写必须是About.xml而非about.xml或ABOUT.XML编码选择UTF-8无BOM格式在Notepad中通过编码菜单转换文件直接放在Mod文件夹的根目录下不要放在子文件夹中提示在VSCode中安装XML扩展后输入时会自动补全闭合标签大幅降低语法错误概率2. 核心字段Mod的身份证信息2.1 name字段第一印象的艺术name自动厨房 (Auto Kitchen)/name命名禁忌禁止包含、等XML特殊字符可用lt;等实体代替避免使用连续空格或制表符长度控制在50个字符以内以保证UI显示完整最佳实践中英文对照方便国际玩家识别添加版本号如[1.4]帮助玩家确认兼容性使用|、-等符号分隔修饰词2.2 author字段你的开发者签名!-- 单作者写法 -- author你的Steam昵称/author !-- 团队开发写法 -- authors li主开发者/li li美术设计/li li测试人员/li /authors如果使用authors列表游戏只会显示第一个作者名等字商业Mod注意这里填写的作者名将作为版权声明的依据2.3 packageId不可重复的Mod DNA这是整个About.xml中最重要的字段相当于Mod的全局唯一标识符。格式规范如下packageIdyourname.mod.autokitchen/packageId命名规则对照表错误示例正确示例原因分析Auto Kitchenautokitchen不能有空格自动厨房autokitchen只能用ASCII字符1stKitchenfirstkitchen不能数字开头yourname..modyourname.mod不能连续小数点致命错误我曾见过两个Mod使用相同的packageId导致玩家整个Mod列表崩溃。检查方法是在Steam Workshop搜索你的packageId确认未被占用3. 版本兼容性与依赖管理3.1 supportedVersions适配多版本策略Rimworld 1.4的Mod可以这样声明版本兼容性supportedVersions li1.4/li li1.3/li /supportedVersions当游戏版本与列表中的任何一项匹配时Mod会正常显示否则会黄色高亮并移至列表末尾。特殊技巧用li1.4/li精确匹配特定版本用li1./li匹配所有1.x版本但不推荐3.2 依赖关系的三种控制方式必须依赖modDependenciesmodDependencies li packageIdbrrainz.harmony/packageId displayNameHarmony库/displayName !-- 可选 -- steamWorkshopUrlsteam://url/CommunityFilePage/2009463077/steamWorkshopUrl /li /modDependencies当依赖Mod不存在时你的Mod根本不会加载加载顺序loadAfter/loadBeforeloadAfter librrainz.harmony/li liOskarPotocki.VanillaFactionsExpanded.Core/li /loadAfter这就像告诉游戏请把我的Mod排在Harmony和VFE核心之后加载强制不兼容incompatibleWithincompatibleWith liCETeam.CombatExtended/li /incompatibleWith当检测到CE Mod时游戏会阻止同时启用这两个Mod4. description字段你的Mod广告牌描述字段支持多行文本和简单HTML标签但要注意description lt;size14gt;自动厨房 v1.4lt;/sizegt; ■ 功能亮点 • 自动完成食材拣选 • 智能避免食物腐败 • 可配置工作优先级 ■ 已知问题 - 与冰箱Mod同时使用时需要手动调整加载顺序 联系作者youremail.com /description排版技巧对照表效果写法注意事项换行直接回车或br/需要两个空格才会显示换行加大字号size14文本/size最大不超过20颜色color#FF0000警告/color要用HEX颜色码列表■、•等符号不要使用ul标签实测发现描述框的显示宽度约450像素超过10行会被截断关键信息应放在前五行5. 高级配置与版本分流对于需要区分游戏版本的复杂Mod可以使用*ByVersion系列标签descriptionsByVersion v1.4 1.4专属功能新增电磁炉系统 /v1.4 v1.3 基础厨房功能不含电磁炉 /v1.3 /descriptionsByVersion modDependenciesByVersion v1.4 li packageIdnewlib.1.4/packageId /li /v1.4 /modDependenciesByVersion这种写法特别适合不同版本有重大API变更时依赖库本身有版本分化时需要为不同版本玩家提供差异化描述时6. 验证与调试技巧完成About.xml后用这个检查清单确认无误基础验证用 XML验证器 检查语法确认文件编码为UTF-8无BOM检查所有标签闭合且嵌套正确游戏内测试# 启动游戏时添加日志参数 RimWorldWin.exe -log查看生成的Player.log文件搜索你的packageIdMod [你的Mod名] loaded successfully表示成功Duplicate packageId说明有冲突XML error指向具体的格式问题极端情况测试临时修改packageId为已存在的值观察冲突表现故意写错supportedVersions看黄色警告效果测试依赖Mod缺失时的提示信息记得每次更新About.xml后删除ModsConfig.xml让游戏重建Mod列表检查所有依赖Mod的packageId是否随版本更新而变化如果上架Steam Workshopdescription的HTML标签需要额外转义当你的Mod开始与其他创作者产生依赖关系时一个规范的About.xml就像良好的API文档——它让整个生态更稳定。有次我忘记更新supportedVersions导致玩家在1.4版本看到警告提示这个教训让我养成了每次游戏更新都检查版本号的习惯。现在你的自动厨房已经拥有了合法的身份证明接下来就可以进入真正的C#编码环节了。