【免费下载链接】universal-modder
Point Claude at any game. Skills, tools and the fal MCP that let Claude Code mod almost any PC game you own: recon, reverse engineering, fal-generated art/3D/audio, in-game testing, showcase videos.
本篇技术指南围绕 Starfield 动画与物理格式笔记 展开,它回答一个关键判断:Starfield 中"长得像 Havok"的数据实际上分成两条完全独立的管线——动画是 BGS 自研的
.af/.rig自定义容器,物理/碰撞才是真正的 Havok 2019.02 chunked packfile。读完本文,你将掌握如何用现有开源工具(CALUMI.Animation +sf_animation_ioBlender 插件、StarfieldMeshConverter)在纯离线、不依赖 SFSE 脚本扩展器的前提下读取并转换 Starfield 的骨骼、动画与碰撞数据,并理解为什么"把动画喂给 Havok 工具"是注定失败的错误路线。
背景:Starfield 把两个"Havok 形状的问题"拆成了两条管线
Starfield(Bethesda Game Studios,2023,Creation Engine 2,PC)的一个核心工程事实是:它没有把动画和物理放在同一个中间件里。
- 物理/碰撞仍然使用 Havok,但版本与形态都升级了——采用的是2019.02版本的 chunked packfile(chunked tagfile)格式,特征签名是
SDKV="20190200",包含TAG0/SDKV/DATA/TYPE/INDX/PTCH等 chunk。 - 动画则彻底脱离了 Havok:BGS 放弃了 Havok 动画管线,改为发布自定义的
.af(animation)与.rig(skeleton)容器格式。
这意味着在选工具之前必须先分清数据类型:StarfieldMeshConverter只覆盖模型、morph、几何与物理,不管动画;而动画必须走 CALUMI.Animation /sf_animation_io。这一点在本仓库的引擎 playbook bethesda.md 中也有呼应——传统 Bethesda 系游戏"动画使用 Havok behavior 文件(难度高),因此 mod 通常复用现有 behavior",而 Starfield 用自研.af/.rig恰恰是这条规则的一个例外分支。
环境与工具清单(Setup)
| 项 | 内容 |
|---|---|
| 游戏 | Starfield(Bethesda,2023),Creation Engine 2,PC |
| 动画格式 | BGS 自定义.af(动画)+.rig(骨骼) |
| 动画工具 | CALUMI.Animation(转换 DLL,作者 Calaverah,LGPLv3)+sf_animation_ioBlender 插件(作者 Deveris256,v1.0.0,2026-03-18,内部封装/调用 CALUMI) |
| 动画运行环境 | Blender 4.3;不需要 SFSE(Starfield Script Extender) |
| 物理格式 | Havok2019.02chunked packfile(SDKV="20190200",chunk 标签TAG0/SDKV/DATA/TYPE/INDX/PTCH) |
| 物理工具 | StarfieldMeshConverter(Blender 3.5/3.6 Geometry Bridge),范围是模型/morph/几何/物理——不含动画 |
| 样本文件 | bipeda_skeleton.rig(13.7 KB)+ 四个.af动画:relaxed_walkforward_start、staggerbackwardmedium、threat_curious01、walkbackward |
需要注意工具与版本的匹配:动画侧要求 Blender 4.3(sf_animation_io在其上工作),物理侧StarfieldMeshConverter面向 Blender 3.5/3.6 的 Geometry Bridge——两条管线不仅格式不同,连宿主 Blender 版本要求也不同。
技术路线选择与原因(Route and why)
本条笔记的 route 是asset-only(纯资源转换)。选择这一路线的理由是:
- 动画不是 Havok:Starfield 的动画数据不需要 Havok SDK 参与,最短路径就是通过 Blender 插件调用 CALUMI DLL 完成
.af/.rig的文件级转换。 - 物理格式足够自描述:2019.02 chunked 格式是自描述的(self-describing),2019.02 解析器可以不依赖 SDK直接读取,详见 Havok HKX chunked packfile 家族技术笔记。
这条路线完全绕开了"需要商业授权 Havok SDK"这一最大障碍,也绕开了运行时注入(无需 SFSE),代价是只做离线文件转换,不涉及游戏内实时读写。
Starfield 的实际工作机制(How the game works)
动画被刻意地从 Havok 拿掉了
.af/.rig是 BGS 自定义容器,与 Havok 的.hkx/behavior 文件毫无关系。不要试图把它们喂给任何 Havok 工具——Havok 解析器会直接拒绝这类文件。
物理留在了 Havok,但是新的 chunked 形态
物理/碰撞仍走 Havok,但版本是2019.02,且采用的是较新的chunked tagfile形态,而不是 Fallout 4 时代的 classic binary packfile。chunk 标签(TAG0/SDKV/DATA/TYPE/INDX/PTCH等)与 Watch Dogs: Legion(WDL)的 2017.2.0 属于同一个结构家族,因此为其中一方编写的解析器可以直接读取另一方(详见下文"2019.02 chunked tagfile 结构"一节)。
无 SFSE 依赖
动画转换是纯文件 I/O,不需要在游戏进程内挂钩,因此它可以实现为 Blender 插件而非进程内 hook——这也是为什么"Blender 插件就够了"。
实际操作步骤(Build steps)
- 安装
sf_animation_ioBlender 插件(Blender 4.3)。该插件自带/调用 CALUMI.Animation 转换 DLL,安装后即可在 Blender 中导入 Starfield 动画资产。 - 将
.af/.rig样本转换为 Blender 可导入的形式并检查骨骼/动画:以bipeda_skeleton.rig为骨骼样本,配合relaxed_walkforward_start、staggerbackwardmedium、threat_curious01、walkbackward四个动画样本,验证导入链路。 - 物理/碰撞走另一条路:使用
StarfieldMeshConverter处理模型/morph/几何/物理——不要把物理文件交给动画插件,也不要拿动画文件去喂物理解析器。
深入:Havok 2019.02 chunked tagfile 结构
Starfield 物理侧的格式细节可以结合 Havok HKX:跨代 chunked packfile 家族技术笔记 深入理解。
SDKVchunk 是版本真相
chunked tagfile 在字面SDKVchunk 中携带自己的版本。Starfield 真实零售资产测得SDKV="20190200"(即 2019.02),这是识别写作者最可靠的依据——不要轻信 wiki 或社区笔记中的版本猜测。下表是已知家族的版本映射(节选):
| 游戏 / 资产 | Havok 版本 | 格式 |
|---|---|---|
| Fallout 4 | 2014.1.0-r1(v11,64-bit LE) | classic binary packfile |
| Watch Dogs: Legion 零售资产 | 2017.2.0(SDKV="20170200") | chunked tagfile |
| Starfield 物理/碰撞 | 2019.02(SDKV="20190200") | chunked tagfile |
| TDU2 车辆/关卡碰撞 | 5.5.0-r1(v5,32-bit LE) | classic binary packfile |
chunk 家族与 TAG0/ITEM/PTCH 记录结构
标准 chunked 文件是四字节魔数 chunk 的序列,野生环境中可见的标签包括:TAG0、SDKV、DATA、TYPE(含子标签TPTR/TSTR/TNA1/FSTR)、BITS、STORAGE、ENUM、VALID、ITEM、PTYPE、ITYPE、MASK、INDX、PTCH。每个 chunk 由uint32 size_and_flags后接 4 字节魔数组成,TAG0本身也是同类子 chunk 的容器。
结合 Disrupt 引擎 HKX 碰撞读取/注入技术笔记 中对 TAG0 家族的解析实现,可以推断 2019.02 物理对象图的读取方式:
ITEM:12 字节记录(type_and_flags, dataOffset, count),type_id取低 24 位、flags占 bit 24–27,条目内容即DATA[dataOffset : dataOffset + count];PTCH:12 字节记录(pointerType, pointerLocation, targetItem),是把 item 串联成对象图的修复表(fixup table)。
与 WDL 2017.2.0 同族:解析器可互相读取
Starfield 的 2019.02 与 WDL 的 2017.2.0 属于同一结构家族——为一方编写的解析器可直接读取另一方。StarfieldMeshConverter正是这一家族的参考实现:它既是 2019.02 的完整 chunked 解析器,也是 WDL 2017.2.0 的参考实现。
什么时候才需要 Havok SDK
读取自描述的 portable/chunked 文件不需要 SDK;真正需要 SDK 的场景是在 Havok 版本之间转换,或读取 vendor 定制的 compact 变体(经由hkCompatFormats.dll)。Havok SDK 需要商业授权,且 2015–2017 年的 SDK 基本不可获取,因此对 Starfield 物理资产而言,优先走自描述 chunked 解析、完全跳过 SDK 转换路径是更务实的选择。
验证情况(Verification)
本条笔记明确记录了验证边界:
- 已验证(格式识别):
.rig/.af由 CALUMI 处理;物理 chunk 头解码得到sdk_version="20190200"。 - 已验证(工具同步性):
StarfieldMeshConverter解析器仓库在记录时与上游保持同步(HEAD00e5529)。 - 未验证:编辑后动画的游戏内往返(in-game round-trip),以及任何依赖 SFSE 的环节。因此本笔记应被视为工具/格式知识,而非已发布的 mod——这是 知识库编写规范 所要求的诚实边界("说清楚你验证了什么、没验证什么")。
常见陷阱(Gotchas)
- 不要把动画交给 Havok 工具。症状:Havok 解析器拒绝一个 Starfield 动画文件。原因:Starfield 动画是 BGS 自定义格式,不是 Havok。修复:改用 CALUMI.Animation /
sf_animation_io。 - 物理与动画是两条独立管线。症状:一个"Starfield 网格"工具无视动画文件。原因:
StarfieldMeshConverter的范围限定为模型/morph/几何/物理。修复:按数据类型选工具,不要指望一个工具通吃。 - 2019.02 chunk 布局不是 FO4 布局。症状:classic-packfile 解析器在 Starfield 物理文件上失败。原因:2019.02 是 chunked tagfile,不是 FO4 时代的 classic packfile。修复:使用 chunked 解析器;WDL 2017.2.0 参考实现可用。
- 不要默认依赖 SFSE。症状:为格式转换任务计划做游戏内挂钩。原因:误以为动画需要运行时访问。修复:这是离线文件转换,Blender 插件即可胜任。
资产与成本
- Assets:不适用——本笔记关注的是读取/转换既有游戏资产,而非创作新资产。
- Cost and time:未记录。
待解决问题(Open questions)
- 编辑后的
.af/.rig能否完成游戏内往返验证(目前未验证); .af/.rig的完整字段级规格尚未公开(CALUMI 目前是事实上的解码器);- Starfield 物理路径是否任何情况下都需要 Havok SDK,还是 chunked 解析始终足够(目前证据支持后者)。
延伸阅读
- Starfield 动画与物理原始笔记(本文的基础文档,含完整 front matter 元数据)
- Havok HKX:跨代 chunked packfile 家族(
SDKV识别、chunk 家族、何时需要 SDK) - Disrupt 引擎 HKX 碰撞读取/注入(TAG0/ITEM/PTCH 解析实现参考)
- Bethesda 引擎 playbook(Creation Engine 2 家族工具链背景)
- 知识库索引(Starfield 条目收录于 games 列表)
【免费下载链接】universal-modder
Point Claude at any game. Skills, tools and the fal MCP that let Claude Code mod almost any PC game you own: recon, reverse engineering, fal-generated art/3D/audio, in-game testing, showcase videos.
相关推荐
告别AI编码陷阱:掌握Karpathy四大黄金法则,让你的代码更简洁高效
告别AI编码陷阱:掌握Karpathy四大黄金法则,让你的代码更简洁高效 你是否曾遇到过AI助手为你生成过度复杂的代码?或者发现它默默做出了错误的假设而不告诉你
AI 技能提示工程Altair 的 Rule Mark 完全指南:线段标记的两种形态与六类实战用法
Altair 的 Rule Mark 完全指南:线段标记的两种形态与六类实战用法 导读 rule (线段)标记是 Altair 中一种轻量却极具表达力的可视化原
数据可视化gsd-2 图标变形动画指南:morphing-spring-rotation 规则与 Spring 物理旋转实战
gsd 2 图标变形动画指南:morphing spring rotation 规则与 Spring 物理旋转实战 导读 本篇文章聚焦 gsd 2 仓库中 UI
人工智能AI Agent代码智能体Agent 编排CLIAI 应用
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考