前言
相关内容来自RimWorld Wiki ,本文仅做翻译和有限的补充,除非另有说明,所属内容均在 CC BY-SA 3.0 下提供。
RimWorld Wiki:https://www.rimworldwiki.com/wiki/Main_PageRimWorld
RimWorld Wiki - Mod Folder Structure:https://www.rimworldwiki.com/wiki/Modding_Tutorials/Mod_Folder_Structure
水平有限,如有错漏,敬请见谅
如果您喜欢这篇文章,麻烦大家帮我点个赞,谢谢大家的支持!
Mod文件夹结构
本地Mods
文件夹可以在以下默认安装位置找到,该文件夹用于手动安装本地模组:
操作系统 | 默认文件路径 |
---|---|
Windows | C:\Program Files (x86)\Steam\steamapps\common\RimWorld\Mods |
Mac | ~/Library/Application Support/Steam/steamapps/common/RimWorld/RimWorldMac.app/Mods |
Linux (standalone) | ~/.steam/steam/steamapps/common/RimWorld/Mods |
Linux (GoG) | /home/<user>/GOG/Games/RimWorld/game/Mods/ |
如果你改变了steam游戏的默认按照路径或者Rimworld的安装路径,Mods
文件夹的路径也将随之改变。
每个模组都应该在Mods
文件夹中拥有自己的子文件夹。单个模组子文件夹的名称并不重要,可以按照个人习惯自由命名;模组的ID和标题在About.xml
中定义(见下文)。除非另有说明,否则下面提到的所有特定文件夹及文件的名称都必须按要求大写并正确拼写,否则RimWorld将无法识别它们。
Mod 文件夹示例
下面是一个包含所有可识别子文件夹的mod文件夹的示例:
Mods(Mods文件夹)
└ MyModFolder(模组根文件夹)
├ About
│ ├ About.xml
│ └ Preview.png
├ Assemblies
├ Defs
├ Languages
├ Patches
├ Sounds
└ Textures
About(必须)
About文件夹是模组唯一必须拥有的文件夹,About文件夹包含Rimworld的识别并加载模组所需的信息。
如今的About文件夹一般包括下面两个文件:
文件名 | 描述 |
---|---|
About.xml (必须) | About.xml用于RimWorld识别模组,使模组可以被加载,也可以用于指定模组之间依赖关系和加载顺序,以实现模组之间的兼容。 本人所翻译的边缘世界Wiki - About.xml的站内译文译文:RimWorld:About.xml文件 |
Preview.png (必须) | preview.png用于模组在游戏内模组管理器以及Steam创意工坊中的图像预览。 建议使用640x360的PNG文件,因为RimWorld所设定的默认大小和宽高比(16/9),使用其他大小可能会导致模糊或letterboxing。也可以选择使用1280x720更高分辨率的艺术作品,但预览文件必须保持在1MB以下,否则Steam创意工坊将拒绝上传。如果出现“limit exceeded”错误,请再次检查Preview.png的大小。 注意:虽然png文件是标准要求,RimWorld实际上并不强制要求真正意义上png文件。可以使用jpg甚至gif动画文件,只需将其重命名为“Preview.png”,但必须使用png扩展名,否则RimWorld将无法识别它。 |
ModIcon.png (可选) | 在游戏加载界面和设置界面(如果本模组有模组设置)中显示的模组图标。ModIcon.png该是一个 32x32 或 64x64 的 PNG 文件,应避免包含过多的细节或颜色。Unity 纹理压缩会使过于复杂的图标变得非常粗糙。 仅适用于RimWorld v1.5及以上游戏版本 |
Assemblies
Assemblies文件夹中包含可用于以编译的动态链接库(dll文件),这些文件可以RimWorld添加自定义代码。正确的已编译程序集将被RimWorld自动加载。
Defs
Defs文件夹中包含用于Def
定义的xml文件。
xml定义(Defs
),定义构造了RimWorld的主要内容。这些Defs
定义了包括物品、植物、动物、派系类型和文化形态等在内的各种游戏内容。并且作为一般规则,任何为RimWorld添加额外内容的模组都可能添加一些Defs
。请参阅Def
指南了解更多信息。
Defs
文件夹中的子文件夹名甚至文件名并不重要,因为所有xml文件都从每个单独的模组中读取到内存。可以按照个人习惯自由命名,但是仍建议遵循原版惯例(SoundDefs
在/SoundDefs
文件夹中,ThingDefs
在各种/ThingDef_×××
文件夹中)以保证模组的可读性。
一个例外是,如果使用了是版本化的LoadFolders.xml
(见下文),具有相同解析路径的xml文件将相互覆盖,以最后加载的文件优先。
Languages
Languages文件中包含用于游戏本地化的xml文件。
本地化是针对不同语言创建和翻译游戏和模型语言内容的过程。包括Defs
和代码引用文本的翻译,以及用于程序名称和内容生成的单词列表。有关Languages文件夹及其子文件夹的更多信息,请参阅本地化指南了解更多信息。
Patches
PatchOperations
是一种以安全和可互操作的方式修改游戏本体,DLC甚至其他模组的Defs
的方法。可以用来平衡或调整原版内容,删除或禁用不需要的内容,或提供可选的更改或内容,以获得更好的模组兼容性。请参阅PatchOperations指南了解更多信息。
本人所翻译的边缘世界Wiki - PatchOperations的站内译文:RimWorld:PatchOperations
Sounds
Sounds文件夹包含mod的自定义音效文件。通常建议使用ogg文件,尽管Unity也可以识别和使用mp3和wav文件。请参阅Sounds指南了解更多信息。
像纹理(Textures)一样,RimWorld中的声音文件是通过其路径名来识别的;如果一个模组包含一个路径和文件名与游戏本体、DLC或另一个模组均相同的音效文件,那么最后一个加载的模组将覆盖之前加载的文件。在想要改变原版或其他模组的音效时可以这么做。
为了避免意外冲突,建议为文件名加上前缀或使用命名空间文件夹(一个单独的子文件夹)来减少与另一个模组具有完全相同路径的可能。
Mods
└ MyModFolder
└ Sounds
└ MyNamespace(命名空间文件夹:可选)
├ MyCustomSound.ogg
└ AnotherCustomSound.ogg
Textures
Textures文件夹用于保存模组的自定义纹理文件。一般建议使用PNG文件。请参阅纹理指南了解更多信息。
像音效(Sounds)一样,RimWorld中的纹理文件是通过其路径名来识别的;如果一个模组包含一个路径和文件名与游戏本体、DLC或另一个模组均相同的纹理文件,那么最后一个加载的模组将覆盖之前加载的文件。在想要改变原版或其他模组的纹理的时可以这么做。
为了避免意外冲突,建议为文件名加上前缀或使用命名空间文件夹(一个单独的子文件夹)来减少与另一个模组具有完全相同路径的可能。
Mods
└ MyModFolder
└ Textures
└ MyNamespace(命名空间文件夹:可选)
├ MyCustomTexture.png
└ AnotherCustomTexture.png
版本文件夹(可选)
注意:强烈建议不要声明支持没有亲自测试过的RimWorld版本,因为在每个版本之间,RimWorld代码和XML都可能发生了重大变化。
- 针对特定版本的RimWorld内容可以通过将它们放在以其次要版本号命名的文件夹中来实现;
Mods
└ MyModFolder(模组根文件夹)
├ 1.4(版本文件夹)
│ ├ Assemblies
│ ├ Defs
| ├ Languages
│ ├ Sounds
│ ├ Patches
│ └ Textures
├ 1.3(版本文件夹)
│ └ ...
├ 1.2(版本文件夹)
│ └ ...
├ 1.1(版本文件夹)
│ └ ...
│
├ Common(Common文件夹)
│ └ ...
│
├ About
├ Defs
├ Languages
├ Sounds
├ Patches
└ Textures
- 所有版本文件夹和
Common
文件夹可以包含模组根文件夹中除About
文件夹外的相同文件夹。 - 对于RimWorld v1.1及更高版本,游戏将加载与游戏版本兼容的第一个版本文件夹。例如,如果只有1.4和1.2版本的版本文件夹,那么RimWorld v1.4将加载1.4版本文件夹,而RimWorld v1.3和v1.2都将加载1.2版本文件夹。所有版本都将加载
Common
文件夹和模组根文件夹。 - RimWorld v1.0版本无法识别
Common
文件夹。 - RimWorld v1.0版本能够识别1.0版本文件夹,但如果使用1.0版本文件夹,那么游戏将不再加载模组根文件夹;
- 对于支持RimWorld v1.0版本的模组,通常建议将内容放在根文件夹中,并将更新的游戏版本(v1.1及以上)的内容放在对应版本文件夹中。
- 具有相同相对路径的文件将相互覆盖,最具体的文件优先;这适用于xml文件(
Def
和Patch
文件)、音效文件、语言文件和纹理。因此,如果有Defs/MyFile.xml
,Common/Defs/MyFile.xml
和1.4/Defs/MyFile.xml
,则只会加载最后一个。优先级上:版本文件夹 >Common
文件夹 > 模组根文件夹。
LoadFolders.xml
(可选)
通过使用名为LoadFolders.xml
的特殊文件,可以为特定游戏版本指定所加载的文件夹,也可以为特定DLC或模组指定加载文件夹。这个文件应该放在模组根文件夹中。
Mods
└ MyModFolder(模组根文件夹)
└ LoadFolders.xml
LoadFolders.xml
允许为特定游戏版本指定所加载的文件夹。这将取代了版本文件夹和Common
文件夹的加载规则。因此如果希望在使用LoadFolders.xml
的同时使用根文件夹或Common
文件夹,则需要在LoadFolders.xml
中明确的指定。
示例:
<?xml version="1.0" encoding="utf-8" ?>
<loadFolders>
<v1.3>
<li>/</li>
<li>1.3</li>
<li IfModActive="Ludeon.RimWorld.Ideology">Ideology/1.3</li>
<li IfModActive="CETeam.CombatExtended">CombatExtended/1.3</li>
</v1.3>
<v1.4>
<li>/</li>
<li>1.4</li>
<li IfModActive="Ludeon.RimWorld.Ideology">Ideology/1.4</li>
<li IfModActive="CETeam.CombatExtended">CombatExtended/1.4</li>
</v1.4>
</loadFolders>
这个示例文件指定了RimWorld v1.3和v1.4版本应该加载模组根文件夹和对应的版本文件夹,并根据是否加载了 文化DLC 和/或Combat Extended
模组而选择加载额外的文件夹。这个示例可能对应如下的模组文件夹结构:
Mods
└ MyModFolder
├ 1.4
│ ├ Assemblies
│ ├ Defs
│ └ Patches
├ 1.3
│ └ ...
│
├ Ideology
│ ├ 1.4
│ │ └ ...
│ └ 1.3
│ └ ...
├ CombatExtended
│ ├ 1.4
│ │ └ ...
│ └ 1.3
│ └ ...
│
├ About
├ Sounds
├ Textures
└ LoadFolders.xml
-
如果无法确定是否加载了模组和DLC,应该加载的文件夹可以使用
IfModNotActive
来指定。使用IfModActive
或IfModNotActive
可以根据模组和DLC的加载情况对加载文件夹进行条件控制; -
如果有具有相同相对路径的文件,则将使用加载顺序指定的最后一个文件。因此,在上面的示例设置中,如果有
Defs/MyFile.xml
,1.4/Defs/MyFile.xml
和Ideology/1.4/Defs/MyFile.xml
,那么Ideology版本将被加载。这适用于所有xml文件(Defs
和patch
)、音效、纹理和语言文件。
其他
核心游戏(Core)以及所有DLC文件夹在功能上与模组文件夹相同,除了官方内容纹理和声音文件被捆绑到Unity资产包中,而不是直接保存到各自的文件夹中。可以在RimWorld目录下的/Data
文件夹下找到这些文件。