Altermatic - 运行时替换框架

Altermatic - 运行时替换框架

Altermatic是一个替换框架,能在运行时自动更改游戏内资源,实现动态且高度可配置的替换器,并提供用户自定义选项!Altermatic使用JSON配置文件,这些文件既快速又

实用工具

<<>> 交替模式 - 运行时替换框架 <<>>

由 Michael "Spirit Shard" Stanich 创建并维护
Discord - 损坏的聊天框 - https://discord.gg/h3vB7S4FEw
网站 - https://www.michaelpstanich.com/
v (捐赠!=^-^=) v
订阅之星(18+警告!)- https://subscribestar.adult/michaelpstanich


>> 什么是交替模式? <<

Altermatic 是一款运行时自动替换游戏内资源的替换框架,能够实现动态且高度可配置的替换效果,并提供用户自定义选项。它采用 JSON 配置文件,使模组制作者和用户都能快速轻松地定制需要替换的内容。Altermatic 最常见的用途包括:用新模型替换帕鲁、实现性别二态性、为幸运帕鲁添加独特特征/纹理,或是简单地给它们戴上炫酷的眼镜。您还可以整合其他替换模组——只要这些模组不覆盖游戏基础资源,就能通过 Altermatic 的 JSON 配置文件进行定义,从而在游戏中呈现它们!~

>> 自我宣传 <<

乞讨捐款确实不是我的风格,但嘿,如果从不开口就没人会知道,这意味着我将缺少资源来开发这些模组!如果你有兴趣支持我的作品并希望看到更频繁的更新,请考虑在SubscribeStar上赞助我!- https://subscribestar.adult/michaelpstanich (Altermatic完全免费且永不设付费墙,但订阅者能在Discord获得特殊身份,并享有其他项目相关福利!)如果无法经济支持也没关系!任何形式的帮助我都感激不尽,无论是提供反馈和错误报告,还是仅仅发条友好消息!

>> 公告 <<

UniPalUI 集成
截至0.4 DEV版本,Altermatic现在需要UniPalUI来实现用户界面和输入功能。
虽然Altermatic无需UniPalUI也能运行,但如果你想自定义设置、更换角色模型,或体验未来新增的UI功能,就必须安装UniPalUI!
(UniPalUI链接 - https://www.nexusmods.com/palworld/mods/1894/)

模组开发中
Altermatic目前仍处于早期开发阶段,您可能会在某些地方遇到异常情况。如果您有关于添加内容或改进Altermatic的建议,请告诉我;我需要了解模组制作者/用户希望从这个替换框架中获得什么!(提出建议和报告错误的最佳地点是我们的Discord——The Broken Chatbox——https://discord.gg/h3vB7S4FEw)

>> 潜在问题/故障点 <<

  • 目前Altermatic使用了一些内部功能和捕获方法来检测生成并尝试替换内容。然而,这些功能可能存在我们未知的错误,在非常特定的情况下"可能"导致不一致的结果。

>> 已知不兼容项 <<

  • OK框架:当安装“One of a Kind”时,替换资源有时会比Altermatic耗时更长,这可能导致纹理/模型损坏或更改被还原。建议将您的OK框架替换器转换为Altermatic,然后卸载OK框架以避免冲突。(通过JSON配置文件可以轻松完成转换,无需重新打包)
  • 骨架替换器:某些模组可能会用一个与基础游戏不兼容的骨架资源完全替换原有骨架。在这些罕见情况下(不应替换完整骨架,仅应添加骨骼),可能会导致动画损坏!这是因为当用不兼容的骨架完全替换原有骨架时,它们还需要替换动画资源,然而Altermatic无法替换这些动画。建议避免使用这些替换器,因为它们不保证游戏版本兼容性,并可能破坏游戏内部系统。
  • 多个“默认”替换器:Altermatic 无法更改资产文件路径,这意味着具有相同文件路径的资产会自然地相互覆盖。这并不是与 Altermatic 不兼容,而是虚幻引擎 5 的工作原理。在这些替换器因文件路径冲突的情况下,需要重新打包为非冲突的文件路径。

>> 功能列表 <<

<> 游戏版本安全设计

  • 采用自定义系统设计,在游戏更新时更不易损坏
  • Altermatic不会替换任何基础游戏资源,确保其稳定性
  • 利用内部游戏系统识别帕鲁/NPC/资产,意味着当新增帕鲁/NPC/资产时,只要Altermatic正常运行就能替换它们!

<> JSON配置加载

  • 易于编辑和阅读的JSON配置文件,用于替换器
  • 任何非默认替换器都不需要重新打包
  • 轻松与朋友/粉丝分享和使用!

<> 骨骼网格替换

  • 替换任何帕鲁/NPC模型(玩家替换功能将在未来版本中支持!)
  • 在运行时进行替换,因此你可以将Altermatic与默认替换器一起使用,实现最大程度的自定义!
  • 无需创建自定义模型,即可使用'MatReplace'替换特定材质/纹理
  • 通过定义“性别”实现性别二态性
  • 通过将'IsRarePal'设为'True'来为幸运伙伴使用独立网格
  • 通过定义'SkinName'来替换游戏内的皮肤为你自己的
  • 为一只帕鲁/NPC包含多个网格模型,Altermatic会随机选择一个使用!
  • 随机选择的最佳匹配系统,综合考虑多种需求以找到最佳替代者
  • 设置必需和偏好特性,使拥有特性的帕鲁可通过'ReqTrait'和'PrefTrait'拥有独特外观
  • 动态应用变形目标,通过'MorphTarget'为每次交换提供更多变化!
  • 项目糖霜蛋糕(SCake)整合了扩展性别支持、兴奋变形支持以及性能优化功能!

<> 使用UniPalUI实现的游戏内界面与按键绑定

  • 按下"Shift+O"键重新随机查看角色的骨骼网格交换(完整用户界面功能计划中)

( 更多替换功能正在规划中! )

>> 给模组制作者的建议 <<

Altermatic 没有任何硬编码的方面或路径!这意味着 Altermatic 可以从 JSON 中定义的任何路径获取模型,这包括基础游戏和模组资源!为了获得最佳体验,在为 Altermatic 制作替换包时,请将你的模型网格分离到 'mods/你的包名/' 目录下,这样它们就不会与其他替换包发生冲突。如果你想制作一个 OK 兼容的替换包,你仍然可以将它们分离到各自的文件夹中,在 OK Framework DT 中定义参数,然后配置一个 Altermatic JSON 配置文件并随下载一起提供。这样,用户就可以使用 OK Framework 或 Altermatic 来使用这个包!(另外,请打包一个包含和不包含 IO Store 的版本,这样 Steam 和 Xbox/Gamepass 玩家都可以享受你的包!)

>> 如何安装Altermatic <<

  • 下载Altermatic和UniPalUI,解压压缩包后,从您对应平台的文件夹中复制'LogicMods'和'~mods'文件夹到"[Palworld Install]/Pal/Content/Paks"目录下
  • 在“~mods”文件夹中,进入“SwapJSON”文件夹并运行“Create_Load_List.bat”文件以自动填充加载列表(每次安装新的Altermatic .json文件时都需要运行此操作)

[ + 如果.bat文件运行失败或显示“访问被拒绝”,你可以尝试将整个SwapJSON文件夹移动到桌面,运行.bat文件,然后再移回原处。记得检查它是否确实将.json名称填入了_LoadList.json。如果仍然失败,你将不得不手动为每个已安装的Altermatic JSON配置输入.json文件名到_LoadList.json中,使用JSON格式(例如"MeshReplace1","MeshReplace2","",""等,可以使用https://jsoneditoronline.org/来帮助格式化)。 ]

[ + 确保在UE4SS安装目录内,打开"mods"文件夹中的"mod.txt"文件,确认"BPModLoaderMod"设置为1 ]
[ + 如果安装UE4SS后游戏开始崩溃,请打开UE4SS安装目录中的UE4SS-settings.ini文件,将"bUseObjectArrayCache"设置为false ]

[可选的,某种程度上]

  • 要让Altermatic发挥作用,你需要安装替换包及其关联的.json配置文件,或者创建自己的JSON配置。
  • 请记住,每次安装新的 JSON 配置文件后都要运行 "Create_Load_List.bat" 文件!(如果 .bat 文件无法运行,你可以手动将想要在游戏中加载的动画的 .json 文件名输入到 _LoadList.json 文件中)

>> 如何创建JSON配置文件 <<

模组压缩包内包含"Altermatic - Metadata.txt"文件,该文件定义了Altermatic可用的不同参数,而JSON模板可在"JSON_Templates"文件夹中找到。您可以使用这些来更好地了解Altermatic的功能以及如何实现您梦想中的替换器!

让我们用一个非常简单的例子来设置,将所有Cattiva替换为游戏中戴眼镜的皮肤(创意名称为Skin001 X.x)。
首先,创建一个新的json文件,命名为"AllGlassesCattiva.json"(你可以创建一个空的.txt/text文件,然后直接修改文件扩展名)。创建完成后,用任意文本编辑器打开它,我们将输入以下内容...(从"{"开始)

{
"PackName":"示例眼镜猫替换包",
 "骨骼网格交换":[
&nbsp; {
"角色ID":"粉红猫",
"SkelMeshPath":"/Game/Pal/Model/Character/Monster/PinkCat_Skin001/SK_PinkCat_Skin001",
"Gender":"男性"
&nbsp; },
&nbsp; {
"CharacterID":"粉红猫",
"SkelMeshPath":"/Game/Pal/Model/Character/Monster/PinkCat_Skin001/SK_PinkCat_Skin001",
"Gender":"女性"
&nbsp; }
]
}

在此JSON中,我们为帕鲁猫猫(内部称为"PinkCat")配置了2个网格替换器。

包名称:一个可选参数,用于帮助人们了解JSON内容,并集成到用户界面实现中。
SkelMeshSwap:告诉Altermatic接下来的条目数组是骨骼网格(帕鲁/NPC模型)的替换器
角色ID : 我们想要替换角色的内部名称。游戏将Cattiva识别为"PinkCat",因此我们在此处填入该名称,以告知Altermatic对任何遇到的Cattiva尝试此替换器。(您可以在模组维基上查看许多内部名称 - https://pwmodding.wiki/docs/game-data/monster-table 或通过使用FModel并查找PalParametersDatatable)
SkelMeshPath:这是我们要替换为的骨骼网格路径,换句话说,这是模型资产的内部文件路径。您可以使用FModel或询问模组制作者来找到这些路径。(对于制作资源包的模组制作者,您可以右键点击并复制引用路径粘贴到这里,删除“/Game”之前的所有内容,并移除文件名重复部分及.uasset扩展名(如果存在的话))
性别:这是我们要替换的性别。默认情况下,非帕鲁NPC内部未被分配性别,因此对于人类NPC替换者,您将使用“无”,但对于帕鲁,它们有雄性和雌性分配。我们创建了两个条目,各对应一种性别,因此Altermatic将替换两种性别。(注意:安装SCake后,默认情况下所有NPC都会被分配性别,因此仍建议为“调皮”替换者设置性别)

现在我们已经生成了JSON文件,将其放入SwapJSON文件夹,运行__Create_Load_List__.bat快速填充_LoadList.json(这个加载列表会告诉Altermatic需要加载哪些JSON文件)。然后,一旦我们进入游戏加载后,你就会看到所有普通的Cattiva都被替换成了游戏内戴眼镜的皮肤!

需要注意几点,替换模型时请确保只使用为该帕鲁/NPC设计的模型。由于UE5的工作原理,如果将随机模型替换到使用不同骨骼的不兼容帕鲁/NPC上,会彻底破坏动画效果,并可能影响视觉模型、碰撞箱、动画、AI等各个方面。人类NPC几乎都使用相同的骨骼,因此它们之间可以轻松互换,但所有帕鲁都有自己独特的骨骼,除了变种(比如Dinossom和Dinossom Lux),它们会共享相同的骨骼。

>> 权限 / 使用权利 <<

以下权限和使用条款适用于所有与Altermatic相关的内容,无论是第一方还是第三方创作。

所有内容必须免费提供,不得设置付费墙或兑换要求

  • 无付费墙、付费抢先体验、订阅要求、访问限制、高级版本等
  • 不适用于创建过程中使用的源文件,这些文件并非实现完整和预期功能所必需

配置/外部文件可自由获取,对编辑或分发无任何限制

  • 允许任何人讨论、定制/编辑、分享、分发/再分发、重复使用任何模组或用户提供的所有配置文件
  • 任何人都可以无限制或无报复地引用任何模组、包或资源中的任何资产
  • 这也适用于任何模组或用户提供的与Altermatic交互的模板或文件
  • 适用于所有格式/扩展名/方法

不要故意破坏或进行恶意行为

  • 不要故意导致用户的存档损坏、游戏卡死、崩溃或采取其他恶意行为
  • 未经许可,不得故意导致其他模组无法运行或覆盖其作者信息
  • 不得包含或隐藏可能有害的内容而不事先警告

作为建议,请在JSON配置中合理使用描述性名称、标签和注释来清晰标注您的内容,这样其他人可以更方便地启用/禁用您模组中包含的各种模型/材质/替换内容。同时考虑根据内容将您的模组拆分成多个JSON配置文件,这样人们可以快速选择要包含的内容(这也有助于管理大量数据,并在加载时提高性能,因为较小的JSON文件比大文件加载和处理得更快)。由于Altermatic的工作原理,在游戏中禁用特定的替换内容并不可行,因此某些用户可能需要自定义json文件。请记住要体谅他人,并鼓励他人编辑和分享配置,以帮助每个人从您的模组中获得最佳体验!

>> 常见问题解答 (FAQ) <<

问题:我可以将这个与其他不是为Altermatic制作的替换器一起使用吗?
回答:是的,但具体方法取决于替换器的类型。对于使用其他框架(如OK Framework)的替换器,您需要通过为该替换器创建JSON配置文件并移除不兼容的其他框架来转换为Altermatic。对于默认替换器(不使用替换器框架的替换器),您只能安装一个,但仍可与Altermatic配合使用!在这种情况下,您只需避免替换特定的CharacterID/Gender组合以防止Altermatic覆盖它,或者如果您希望默认替换器参与Altermatic的随机选择过程,可以创建一个JSON条目,其中包含默认网格路径(推荐)或不设置路径(即仅"")。如果使用默认替换器,由于任何冲突都会相互覆盖,每个文件路径只能使用一个替换器,除非模组制作者重新打包他们的模组以支持Altermatic,否则我们对此无能为力。

问题:如果我不再想使用某个替换器并将其移除,会发生什么?游戏中的角色现在会损坏吗?
回答:完全不会!Altermatic 会在加载 JSON 配置时记录所有路径,如果已保存角色的网格不再列表中,那么当该角色加载进游戏时,它会重新随机生成网格,就像从未保存过一样。

问题:有些人使用自定义骨骼来添加物理效果,Altermatic 未来会支持这个功能吗?
回答:Spring Bone 已经得到支持,因为你不需要替换原始骨骼(布料物理也应该能正常工作),但对于新增的骨骼,Altermatic 无法替换原始骨骼并确保替换器之间的兼容性。理论上,你可以为每个文件路径使用一个单独的替换器骨骼(即每个帕鲁或NPC一个,玩家一个),只要它们完全不改动原始骨骼。遗憾的是,由于虚幻引擎5处理动画和验证的方式,我们无法支持在运行时替换骨骼,因为每个动画都需要针对每个文件路径和骨骼重新定向,这在当前工具下既不可行也不可能。在引擎的后续版本中,有一些运行时重新定向的功能,所以如果幻兽帕鲁更新了他们的引擎版本,这可能成为一个特性,但实现起来可能比它的价值要复杂得多。


>> 想要制作一些替换模组吗?欢迎随时联系我或加入我们的Discord互动! ( https://discord.gg/h3vB7S4FEw ) 我们是一个充满创意的社区,非常乐意提供帮助! <<