mhw-lmt-engine

mhw-lmt-engine

怪物猎人:世界 PC 版 LMT 文件的离线 CLI 工具包——检查、验证并编辑骨骼关键帧、事件树和动作时序,并将 FSM 动作编号映射到候选动画槽位。

[size=4][b]描述[/b][/size]

[color=#D4D4D8]mhw-lmt-engine 是一个用于《怪物猎人:世界》PC 版 .lmt 动画文件的离线命令行工具包。它将 LMT95 数据解析为无损的结构化 JSON,保留原始字节与偏移量,并允许对骨骼关键帧、事件树和动作时序进行受控编辑。它还可以使用随附的 engine.lmtpkg 包,将 FSM 动作编号映射到候选的 LMT 动画和插槽。

这是一个模组制作/分析工具,而非玩法模组。它不会解密文件、启动游戏、读取游戏内存或下载数据。你必须提供自己已解包并解密好的游戏文件。

[size=5]安装说明[/size]

下载发布压缩包并解压到你选择的文件夹。

在运行该工具之前,将 game-data-38612 文件夹复制到与 lmt-engine-cli.exe 相同的目录中(即复制到 bin 文件夹中)。

从 bin 文件夹运行 lmt-engine-cli.exe。只要 game-data-38612 就在它旁边,双击该 exe 也可以运行。

准备你自己已解包/解密的《怪物猎人:世界》文件。例如:
<unpacked>/hm/wp/wp03/wp03_action.fsm
<unpacked>/hm/wp/wp03/mot/w03_00/w03_00.lmt

要使用引导式菜单,请在运行 lmt-engine-cli.exe 时不带任何参数,或双击它。

要使用命令行,请在 bin 文件夹中打开 PowerShell 并运行如下命令:

powershell
./lmt-engine-cli.exe inspect <file.lmt> > inspect.json
./lmt-engine-cli.exe roundtrip <file.lmt>
菜单模式的输出默认写入 out/。命令行输出写入你指定的位置。源 LMT 文件不会被覆盖。

在编辑之前,请运行 inspect 和 roundtrip,以确认文件可读且无编辑的往返转换是字节完全一致的。

[size=5]主要功能[/size]

将 LMT95 无损解析为结构化 JSON,具有稳定的 ID 和原始字节范围。

只读检查工具:inspect、sample 和 roundtrip。

在未进行编辑时进行字节一致的往返验证。

通过 patch 和基于事务的 apply 进行骨骼关键帧编辑。

对共享曲线、表和动作进行写时复制处理,因此编辑不会意外影响其他插槽。

事件树读取、解释和编辑:组、轨道、键、哈希标签和带类型的事件值。

帧时序编辑:插入、重复和删除帧,并通过 time-inspect 进行试运行。

通过 associate --package 进行动作编号查找,返回候选插槽、指针表偏移、动作头偏移和帧数。

交互式菜单模式,用于引导文件选择、插槽浏览、FSM 关联、关键帧编辑和输出验证。

适合脚本编写和批处理工作流的 JSON 输出。

[size=5]要求[/size]

提供的 lmt-engine-cli.exe 构建版本需要 Windows。

你已解包并解密的《怪物猎人:世界》PC 版文件。本工具不会解密 .lmt、.fsm 或 .mbd 文件。

必须按照安装步骤中的说明,将 game-data-38612 文件夹复制到 lmt-engine-cli.exe 旁边。动作编号查找需要随附的 engine.lmtpkg。

仅使用随附的 engine.lmtpkg。它与本发布版本的分析器版本和分析限制相绑定。不要将其与其他来源或游戏版本的包混用。

对于命令行 associate,LMT 路径必须包含完整的资源路径锚点 wpNN/mot,例如:
<unpacked>/hm/wp/wp03/mot/w03_00/w03_00.lmt
当存在 wpNN/mot 时,菜单可以自动补全 hm/wp/,但 CLI 不会。

本发布版本不包含完整的解密快照。因此,associate --snapshot 和 package-extract 在本发布版本中不可用。

编辑前请备份你的文件。该工具会避免覆盖源文件,但仍建议进行备份。

[size=5]致谢[/size]

感谢《怪物猎人:世界》模组制作社区以及所有上游研究人员,他们记录并标记了 LMT、FSM、MBD、动画哈希及相关格式。


[size=5]重要说明 / 限制[/size]

ActionNo 不等于 LMT 插槽编号。该工具仅输出候选结果。请始终在游戏内或通过你自己的测试确认最终插槽。

时间编辑只会更改 LMT 时序。FSM 或动作代码仍可能在游戏内提前结束某个动作。

未知的 event data_type 值会被保留,且无法写入。

如果某些曲线使用了不支持的压缩方式或产生诊断信息,它们可能无法编辑。[/color]