RimWorld:模组文件夹结构

本文详细解释了RimWorld游戏中的Mod文件夹结构,包括必需的About.xml、Defs定义、本地化、Patches操作和资源文件如Assemblies、Sounds和Textures的组织方式,以及如何处理版本兼容性和命名空间以避免冲突。
摘要由CSDN通过智能技术生成

前言

相关内容来自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文件夹可以在以下默认安装位置找到,该文件夹用于手动安装本地模组:

操作系统默认文件路径
WindowsC:\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文件(DefPatch文件)、音效文件、语言文件和纹理。因此,如果有Defs/MyFile.xmlCommon/Defs/MyFile.xml1.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来指定。使用IfModActiveIfModNotActive可以根据模组和DLC的加载情况对加载文件夹进行条件控制;

  • 如果有具有相同相对路径的文件,则将使用加载顺序指定的最后一个文件。因此,在上面的示例设置中,如果有Defs/MyFile.xml1.4/Defs/MyFile.xmlIdeology/1.4/Defs/MyFile.xml,那么Ideology版本将被加载。这适用于所有xml文件(Defspatch)、音效、纹理和语言文件。

其他

核心游戏(Core)以及所有DLC文件夹在功能上与模组文件夹相同,除了官方内容纹理和声音文件被捆绑到Unity资产包中,而不是直接保存到各自的文件夹中。可以在RimWorld目录下的/Data文件夹下找到这些文件。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值