Files
mtgodot-poc/tools/granny-oracle/GRANNY-VERSION.md
T
shenleiandClaude Opus 5.5 a46093104c layout: restructure into src/ tests/ android/ scripts/ tools/
- extension/src/{port,platform,codepage} -> src/; native_render -> src/host
  (+ dxt, shaders/); libgr2 -> src/gr2; extension/third_party -> third_party
- extension/tests -> tests/port, libgr2/tests -> tests/gr2
- android-native -> android (build.sh, push-client.sh moved in)
- script -> scripts; tools/40250 -> tools/server; oracle -> tools/granny-oracle;
  perf tools -> tools/perf
- all build trees under build/ (native, release, android, port-gate)
- xrender:: CMake aliases -> mt::; port-map ledger impl paths rewritten

No code changes. ctest 15/15, port_gate macos+android PASS, port_map check 0 errors.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-29 19:08:19 +09:00

2.8 KiB
Raw Blame History

Granny 版本判定(oracle T1)

已知(M0 T2)

  • 资产由 Granny Standard Exporter, SDK version 2.4.0.7 导出(从解压后的 gr2 内嵌串读到)。
  • 9166 个 gr2 里 9155 个文件格式 v6、11 个 v7(magic:v6=GRNFileMV_Old,v7=GRNFileMV_32Bit_LittleEndian)。
  • libgr2 自研,bind_pose_self_check 全量 2013/2017 多骨 skeleton < 1e-3(warrior_cheongrin 6.1e-5)。

候选 runtime

DLL 来源 状态
granny2_x64.dll 2.9.12 泄露 SDK lib/win64/ 先用这个(SDK 自带、能直接链)。容器 + 组合公式在 2.4–2.11 稳定。
granny2.dll 2.4.x 需另找(对应 2.4.0.7 exporter 的 runtime) 若 2.9.12 在曲线 / B 样条边界上和 libgr2 分歧且 Blender 仲裁站 libgr2 这边,换这个。
granny2.dll 2.11.x m2dev-client-src 头文件写的版本 兜底候选。

判定步骤(跑 oracle probe)

对每个候选 DLL,跑:

oracle probe "assets/PC/ymir work/pc/warrior/warrior_cheongrin.gr2"
oracle probe "assets/PC/ymir work/pc/warrior/action/dance_1.gr2"
oracle probe "assets/Zone/ymir work/zone/.../<某静态件>.gr2"

AC(选定 DLL 下):

  • warrior_cheongrin.gr2:Skeletons=1、Meshes=5、Animations=0、Models=1、 Materials=4、Textures=2、skeleton 0 = 75 骨、骨骼名以 Bip01 开头 —— 与 libgr2(gr2dump)逐字段一致。
  • dance_1.gr2:Animations=1、Duration≈28.333334、TrackGroups=1。
  • 静态件:Skeletons=0 或 1、Meshes≥1。
  • 3+ 文件全过;其余候选 DLL 的失败表现记进本表。

选定结果 —— ✅ 已跑(2026-08-29)

  • 选定:granny2_x64.dll 2.9.12.0(泄露 SDK lib/win64/)。
  • 环境:macOS 26.4 / Apple Silicon / wine-stable 11.0(Rosetta)/ MinGW-w64 交叉编译(build-wine.sh)。
  • oracle probe vs gr2dump 逐字段一致:
文件 Textures Materials Skeletons Meshes Models Animations skel0 骨骼数 骨骼名/父索引
warrior_cheongrin.gr2 2=2 4=4 1=1 5=5 1=1 0=0 75=75 逐项一致(Bip01…)
assassin.gr2 3=3 6=6 1=1 17=17 1=1 0=0 95=95 逐项一致(含双 root:assasin_low + Bip01)
dance_1.gr2 — — 0 0 0 1=1 — Duration 28.333334,TrackGroups 1
  • FromFileName 连非法编码的 Korean 路径都逐字节一致(libgr2 读原始字节 = Granny)。

结论:2.4 导出的资产在 2.9.12 runtime 下 GrannyGetFileInfo 完全正常,libgr2 与之逐字段对齐。 容器 + 组合公式在 2.4–2.9 稳定这一假设成立,不需要换 2.4.x runtime。

oracle.exe + granny2_x64.dll 不进仓库(体积 + 版权);build-wine.sh 一条命令重建。