前言
相关内容来自RimWorld Wiki ,本文仅做翻译和有限的补充,除非另有说明,所属内容均在 CC BY-SA 3.0 下提供。
RimWorld Wiki:https://www.rimworldwiki.com/wiki/Main_PageRimWorld
RimWorld Wiki - About.xml:https://www.rimworldwiki.com/wiki/Modding_Tutorials/About.xml
水平有限,如有错漏,敬请见谅
如果您喜欢这篇文章,麻烦大家帮我点个赞,谢谢大家的支持!
About.xml
是一个必要文件,用于RimWorld识别模组,使模组可以被加载。About.xml
定义了模组的内部标识符和面向用户名称,以及在游戏内模组管理器中显示的简短描述。并定义了兼容性问题,比如模组之间依赖关系和加载顺序。
开始
About.xml
文件应该直接放在About文件夹中。请注意,文件夹和文件名都是区分大小写的,必须完全按要求拼写。请参阅模组文件夹结构指南了解更多信息。
Mods
└ MyModFolder
└ About
└ About.xml
About.xml
的是一个标准的XML文件,使用<ModMetaData>
作为根标签:
<?xml version="1.0" encoding="utf-8"?>
<ModMetaData>
<!-- 其他标签 -->
</ModMetaData>
必需标签
<packageId>
:模组标识符
<packageId>AuthorName.ModName</packageId>
- 模组的内部标识符,用于依赖模组,加载顺序或
MayRequire
属性的识别。packageid
由字母和数字组成,并**至少使用一个句点(.)**分隔两个字符串。通常建议使用YourName.YourModName
,YourProjectName.YourModName
,YourName.YourSeriesName.YourModName
,或者类似的命名方式; packageId
在所有模组中必须是全局唯一的。如果RimWorld遇到多个具有相同packageId
的模组(即使这些模组不在当前启用的模组列表中),将会抛出错误并且只有第一个模组可用。- 使用相同
packageId
的唯一的例外是,如果本模组是你正在fork或continue一个模组,并希望它作为原模组的一个替代。这种情况下,玩家必须取消订阅原始模组才能使用本模组; - 注意:
packageId
不区分大小写,因为RimWorld会在内部将所有id转换为小写,大写是为了可读性。因此除了大小写外的两个相同的id将被解析为相同。
<name>
:模组名称
<name>My Mod Name</name>
- 模组名称不需要是全局唯一的,大多数情况下都使用
packageId
对模组进行引用; - 但是
PatchOperationFindMod
仍然使用模组名称,因此应该尽量避免在非必要情况下改变模组名称; - 可以使用中文。
<author>
:作者名
<author>Author Name, Another Author Name, A Third Author Name</author>
<!-- 或 -->
<authors>
<li>Author Name</li>
<li>Another Author Name</li>
<li>A Third Author Name</li>
</authors>
模组的作者,通常是你自己。可以通过用逗号分隔或使用<li>
节点来指定多个作者。
<description>
:模组描述
<description>This is the description of this mod.</description>
- 模组的纯文本描述。用来作为模组在模组管理器(包括原版模组管理器)中的内容描述;
- 如果将模组上传到Steam创意工坊,这也将作为模组在创意工坊中的初始描述。创意工坊项目描述可以在不影响模组本身的情况下更改,因此通常建议在
About.xml
中使用较为简短的模组描述; - 可以使用中文。
<supportedVersions>
:支持版本
<supportedVersions>
<li>1.4</li>
</supportedVersions>
-
模组支持的 RimWorld 版本。如果试图在没有明确指定支持的版本下加载模组,将会给玩家一个警告,但如果玩家选择继续加载模组,模组仍将被加载;
-
强烈建议只对已明确测试过兼容性的版本指定支持。RimWorld 在不同版本之间发生了巨大的变化,即使是纯xml模组也不能保证在没有对特定版本进行适配的情况下正常工作。
可选标签
<modVersion>
:模组版本
<modVersion>1.0</modVersion>
<!-- 或 -->
<modVersion IgnoreIfNoMatchingField="True">1.0</modVersion>
警告: 该标签是在RimWorld v1.4游戏版本中引入的,在之前的游戏版本中,除非使用了IgnoreIfNoMatchingField
属性,否则会产生错误。如果模组计划支持旧版本的RimWorld,并且想要使用<modVersion>
,则必须添加IgnoreIfNoMatchingField
属性。
<modIconPath>
:模组图标
<modIconPath>Path/To/Icon</modIconPath>
<!-- 或 -->
<modIconPath IgnoreIfNoMatchingField="True">Path/To/Icon</modIconPath>
在游戏加载界面和设置界面(如果本模组有模组设置)中显示的模组图标。ModIcon.png该是一个 32x32 或 64x64 的 PNG 文件,应避免包含过多的细节或颜色。Unity 纹理压缩会使过于复杂的图标变得非常粗糙。
RimWorld v1.5及以上的游戏版本会自动加载About/ModIcon.png
,因此不需要此标签也可添加模组图标。因此只有当出于某种原因需要将模组图标存储在Textures文件夹(即贴图文件夹)中时才需要该标签。
警告: 该标签是在RimWorld v1.5游戏版本中引入的,在之前的游戏版本中,除非使用了IgnoreIfNoMatchingField
属性,否则会产生错误。如果模组计划支持旧版本的RimWorld,并且想要使用<modIconPath>
,则必须添加IgnoreIfNoMatchingField
属性。
<url>
:网络链接
<url>https://steamcommunity.com/workshop/filedetails/?id=2009463077</url>
示例URL是最新版本Harmony的Steam创意工坊页面。
一个可以在模组信息中显示的网页链接。可以是任何链接,大多数模组会链接到它们的主要下载源,如Steam创意工坊页面,GitHub存储库或Ludeon论坛。
<descriptionsByVersion>
:模组描述(特定游戏版本)
<descriptionsByVersion>
<v1.4>A different description.</v1.4>
</descriptionsByVersion>
用于为RimWorld的不同版本指定不同的模组描述。Steam创意工坊不使用此功能。
<modDependencies>
:模组依赖
<modDependencies>
<li>
<packageId>brrainz.harmony</packageId>
<displayName>Harmony</displayName>
<steamWorkshopUrl>steam://url/CommunityFilePage/2009463077</steamWorkshopUrl>
</li>
</modDependencies>
-
用于指定本模组的依赖模组。如果本模组的依赖模组没有在玩家的模组列表中启用并加载,玩家将被警告,尽管玩家可以选择忽略并强制加载;
-
请注意,Steam创意工坊并不会自动识别使用该标签内容;如果想让玩家知道他们应该下载一个依赖模组,必须通过Steam 创意工坊的“必需物品”功能添加。
<modDependenciesByVersion>
:模组依赖(特定游戏版本)
<modDependenciesByVersion>
<v1.4>
<li>
<packageId>brrainz.harmony</packageId>
<displayName>Harmony</displayName>
<steamWorkshopUrl>steam://url/CommunityFilePage/2009463077</steamWorkshopUrl>
</li>
</v1.4>
</modDependenciesByVersion>
用于为模组指定仅适用于特定版本的依赖模组。
<loadBefore>
:在~之前加载
<loadBefore>
<li>CETeam.CombatExtended</li>
</loadBefore>
-
本模组应该在指定模组之前加载。如果本模组不在模组列表中的正确位置,RimWorld会警告玩家;
-
以
packageId
指定模组。<loadBeforeByVersion>
:在~之前加载(特定游戏版本)
<loadBeforeByVersion>
<v1.4>
<li>CETeam.CombatExtended</li>
</v1.4>
</loadBeforeByVersion>
与<loadBefore>
相同,但仅适用于指定的RimWorld版本。
<forceLoadBefore>
:强制在~之前加载
<forceLoadBefore>
<li>CETeam.CombatExtended</li>
</forceLoadBefore>
与<loadBefore>
相似,不同的是<forceLoadBefore>
不光只是显示警告,RimWorld会强制要求将本模组放在所有指定模组之前加载,不允许在任何指定模组之后加载本模组。请注意,外部模组管理器(如RimPy)可能不尊重此字段。
<loadAfter>
:在~之后加载
<loadAfter>
<li>erdelf.HumanoidAlienRaces</li>
</loadAfter>
- 本模组应该在指定模组之后加载。如果本模组不在模组列表中的正确位置,RimWorld会警告玩家;
- 以
packageId
指定模组。
<loadAfterByVersion>
:在~之后加载(特定游戏版本)
<loadAfterByVersion>
<v1.4>
<li>erdelf.HumanoidAlienRaces</li>
</v1.4>
</loadAfterByVersion>
与<loadAfter>
相同,但仅适用于指定的RimWorld版本。
<forceLoadAfter>
:强制在~之后加载
<forceLoadAfter>
<li>erdelf.HumanoidAlienRaces</li>
</forceLoadAfter>
与<loadAfter>
相似,不同的是<forceLoadAfter>
不光只是显示警告,RimWorld会强制要求将本模组放在所有指定模组之后加载,不允许在任何指定模组之前加载本模组。请注意,外部模组管理器(如RimPy)可能不尊重此字段。
<incompatibleWith>
:不兼容模组
<incompatibleWith>
<li>CETeam.CombatExtended</li>
</incompatibleWith>
-
用于指定与本模组相互不兼容的模组。如果指定模组与本模组同时加载,玩家将被警告;
-
通常只用于与本模组根本上不兼容的模组,而不应该粗暴的用于和本模组同时加载会仅会产生一些bug的模组。
<incompatibleWithByVersion>
:不兼容模组(特定游戏版本)
<incompatibleWithByVersion>
<v1.4>
<li>CETeam.CombatExtended</li>
</v1.4>
</incompatibleWithByVersion>
与<incompatibleWith>
相同,但仅适用于指定的RimWorld版本。
示例
一个包含了所有标签(包括必需和可选)的About.xml
示例:
<?xml version="1.0" encoding="utf-8"?>
<ModMetaData>
<packageId>AuthorName.ModName</packageId>
<name>My Mod Name</name>
<authors>
<li>Author Name</li>
<li>Another Author Name</li>
<li>A Third Author Name</li>
</authors>
<description>This is the description of this mod.</description>
<supportedVersions>
<li>1.4</li>
</supportedVersions>
<!--以下为可选标签-->
<modVersion IgnoreIfNoMatchingField="True">1.0</modVersion>
<descriptionsByVersion>
<v1.4>A different description.</v1.4>
</descriptionsByVersion>
<modDependencies>
<li>
<packageId>brrainz.harmony</packageId>
<displayName>Harmony</displayName>
<steamWorkshopUrl>steam://url/CommunityFilePage/2009463077</steamWorkshopUrl>
</li>
</modDependencies>
<modDependenciesByVersion>
<v1.4>
<li>
<packageId>brrainz.harmony</packageId>
<displayName>Harmony</displayName>
<steamWorkshopUrl>steam://url/CommunityFilePage/2009463077</steamWorkshopUrl>
</li>
</v1.4>
</modDependenciesByVersion>
<loadBefore>
<li>CETeam.CombatExtended</li>
</loadBefore>
<loadBeforeByVersion>
<v1.4>
<li>CETeam.CombatExtended</li>
</v1.4>
</loadBeforeByVersion>
<forceLoadBefore>
<li>CETeam.CombatExtended</li>
</forceLoadBefore>
<loadAfter>
<li>erdelf.HumanoidAlienRaces</li>
</loadAfter>
<loadAfterByVersion>
<v1.4>
<li>erdelf.HumanoidAlienRaces</li>
</v1.4>
</loadAfterByVersion>
<forceLoadAfter>
<li>erdelf.HumanoidAlienRaces</li>
</forceLoadAfter>
<incompatibleWith>
<li>CETeam.CombatExtended</li>
</incompatibleWith>
<incompatibleWithByVersion>
<v1.4>
<li>CETeam.CombatExtended</li>
</v1.4>
</incompatibleWithByVersion>
</ModMetaData>