允许通过组合某些资产修改来同时运行影响游戏玩法的模组
仅适用于 Modders:如何在编辑器中使用以及其工作原理:
此插件旨在通过合并对某些文件类型所做的更改(游戏模组需要或很可能同时编辑这些文件类型),允许同时使用多个影响游戏玩法的模组。这五种文件类型包括:NetworkRegistryAsset、UIMetaDataAsset、WSTeamData、ProfileOptionAsset 和 MeshVariationDatabase。
合并如何进行:本节详细介绍了每种文件类型的合并工作原理。这不会教您如何使用合并功能,但了解其工作原理至关重要,因为它在处理 Mod 的资源类型时确实存在一些限制。
1)
网络注册中心:合并程序会将网络寄存器对象列表中发现的所有新指针引用(通过与未编辑文件进行比较)合并到一个列表中。当发现多个模块编辑同一个网络寄存器时,它会将指针引用合并到一个列表中。我已经专门编程使其不会重复添加同一个指针,所以不用担心。
2)
网格变异数据库:MVDB 合并与网络注册基本相同。它会获取你 mod 中所有新的 MVDB 条目列表,并将它们合并。
3)
配置文件选项资产:合并器将再次获取文件中的新指针引用列表并进行合并,但这次对于 ProfileOption 类型,我仅将其设置为执行在“Options”和“OptionsWin”(以红色突出显示)类中找到的新选项,因为执行其他操作对于 PC 改装来说毫无意义
4)
UIMetaDataAsset:事情变得更加复杂了。Frosty 当前 alpha 版本中自定义处理程序/合并器的一个重要问题是,它们不适用于新创建的资源。因此,我提出了一个策略,您需要使用它来合并来自多个 mod 的元数据。1) 您无法向基础游戏中已存在的 UIMetaDataAssets 添加新的元数据。您必须创建一个副本 MetaDataAsset 来包含所有新的元数据,如下所示:
2) 这些新的元数据文件必须由基础游戏元数据资产(例如 UI/MetaData/UIMetaData)在资产类中引用,如下所示:
合并操作会为每个修改过的基础游戏资源创建一个来自 Asset 类的新元数据文件指针引用列表,并将这些列表与其他模组的列表合并。它不会合并“Items”类中的任何内容,只会合并“Assets”类。
5)
WSTeam数据:团队文件是另一个需要合并的重要文件类型,了解它们的工作原理至关重要。合并操作将在 WSTeamData 中保存 11 个不同类的内容列表。
上图中红色的“WSFaction”、“Soldiers”和“AutoPlayerSoldiers”类不会被合并。相反,游戏处理器会按照 FMM 加载顺序,让第一个编辑队伍文件的 mod 直接使用其对应的类版本,而不会被后续加载的 mod 所更改。
另一方面,蓝色职业的装备列表会被保存并合并。例如,如果两个模组各自在“特殊装备”中添加了一套新装备,那么他们的装备列表就会合并。
游戏处理程序还会自动填充各种 ID 集合类,因此您无需担心。需要注意的是,合并操作会在内部保存所有装备列表的内容,即使该装备列表来自引用文件(例如 Heroes_Light)。
如何在 Frosty Editor 中使用:
现在到了棘手的部分。这并非 Frosty 开发者设置的典型自定义处理程序插件(例如本地化插件)。通常情况下,自定义处理程序会在您创建文件时保存更改,而不是在导出到 fbmod 时保存。这就是为什么您必须使用新版 Frosty 重新制作本地化文件才能使字符串编辑生效的原因。我遇到的问题是,如果我以这种方式创建游戏处理程序/合并器,那么我所有的旧项目文件都必须重新制作才能使用这种方法。这是不可能的,所以我选择了一个略显 hack 却可行的替代方案。游戏处理程序并非随时处于活动状态,而是在您即将将 mod 导出到 fbmod 时,您需要激活“我的工具”下一个名为“Swbf2 游戏处理程序”的按钮,它将遍历您的整个项目文件,并将您对 5 种受支持资源类型所做的编辑重写为 FMM 合并器可以使用的内容。
从某种意义上说,这会“损坏”数据并使您无法再打开这些文件,或者您的 Frosty 将崩溃。
但是,如果您直接导出该 mod,应该不会出现任何问题。不过,在使用游戏处理程序之前,您需要使用一些工具,例如 Bundle Manager。
因此顺序应如下:Bundle Manage > Gameplay Handler > Export
我还建议您在导出时备份项目文件,因为如果您将这些更改保存到主项目文件中,您将无法再对这些资源进行任何更改。所以请务必小心。
此外,每当您要导出模组时,Frosty 编辑器插件中都应该只包含该插件,否则从 Frosty 编辑器启动游戏时会遇到问题。我推荐的最佳方法是将游戏处理程序保存在插件文件夹中的 zip 文件中。然后在需要导出模组时解压它。导出完成后,您可以删除 dll 文件,但保留 zip 文件以备将来使用。