docs: 文档审计——修正失效链接与过期结论

按 docs/ 目录逐篇核对,只改与事实/路径不符的部分,不动尚未验证的计划条目:

- `docs/steps/**` 在早前整理时已迁到 `docs/reference/steps/**`,全仓的旧路径
  引用(PLAN.md / README.md / M0-gr2-reader.md 及 libgr2 的头注释)一并改正。
- CLIENT-GAP.md / CLIENT-GAP-FIX.md / BACKLOG.md / MIDREVIEW.md:把已经落地的
  条目从「待办」改为已完成,删掉与代码现状矛盾的描述。
- ANDROID-TESTING.md / CLIENT-PORT.md / CLIENT-ROADMAP.md / GODOT-POC-PLAN.md /
  SHINSOO-WORLD-RENDERING.md / PARITY-GAP.md:同上,另补当前实际的构建/测试入口。
- THIRD-PARTY.md:补齐实际在用的第三方来源与许可说明。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SJugvEJwz3FK4hw9ti3SRb
This commit is contained in:
shenlei
2026-09-08 17:15:17 +09:00
co-authored by Claude Opus 5
parent c3a6fb973e
commit fb4d2d222b
14 changed files with 165 additions and 98 deletions
+22 -6
View File
@@ -11,7 +11,7 @@
| | |
|---|---|
| 状态 | Phase 1macOS基本完成,见 [`MIDREVIEW.md`](./MIDREVIEW.md)未完成工作分层清单见 [`BACKLOG.md`](./BACKLOG.md) |
| 状态 | **已被工作范围超越(2026-09-08 复核)**Phase 1macOS)完成,见 [`MIDREVIEW.md`](./MIDREVIEW.md)Phase 2 的 iOS / Android 交叉编译与 APK 导出也已完成(`BACKLOG.md` F1/F2、[`PLATFORMS.md`](./PLATFORMS.md)),故文中「Phase 2 本轮不做」不再成立。§01「明确排除」清单已大面积失效,见该节的复核注。当前工作以 [`BACKLOG.md`](./BACKLOG.md)、[`CLIENT-GAP.md`](./CLIENT-GAP.md)、[`RENDERING-REPAIR-PLAN.md`](./RENDERING-REPAIR-PLAN.md) 为准 |
| 技术栈 | Godot **4.7.1** stable · GDExtension`godot-cpp` 精确提交 `101ae38`4.7 API)· C++20 |
| 目标平台 | **Phase 1macOS**(当前)→ Phase 2Android(一加 13 / Vulkan)· iOSiPhone 16 / Metal)。自用,三台现代设备,不涉及 GLES3 / Compatibility |
| 判定周期 | Phase 1 ≈ 3.5–5 周(单人)→ **中期评审**Phase 2 = 三设备各一次 bring-up + 性能留档(自用,无对外 go/no-go) |
@@ -48,6 +48,22 @@
### 明确排除(两个阶段都不做)
> **⚠️ 本清单已失效(2026-09-08 复核)。** 下列 9 项中 8 项后来都做了 —— POC 判定通过后项目
> 继续做成了完整客户端,范围扩张是有意的(`SHINSOO-WORLD-RENDERING.md` 的「定位」一节最早
> 记录了 UI 这一条)。逐项现状:
>
> | 原「不做」项 | 现状 | 落点 |
> |---|---|---|
> | SpeedTree 植被 | 🟡 已做 proxy | `formats/spt.cpp``BACKLOG` E10 |
> | 地形(Metin2 户外地图) | ✅ 已做 | `Metin2World` + `formats/terrain_mesh.cpp``BACKLOG` E8/E11/E12 |
> | UI / Python 脚本层 | ✅ 已做 | `project/ui/*`uiscript 装载器 + 多个 1:1 窗口移植) |
> | eterpack | ✅ 已做 | `mtpack` + `packtool``BACKLOG` G1 |
> | GPU 蒙皮优化 | ✅ 已做 | `MTGODOT_GPUSKIN=1``m2_material` `SRC_SKIN` |
> | LOD 策略 | ✅ 已做 | `lod_distances` + crossfade`BACKLOG` C9 |
> | 多角色 AI | ⬜ 仍不做 | —— |
> | 网络 | ✅ 已做 | `mtnet`m2dev + 40250 classic 双后端) |
> | 玩法 | ✅ 大量已做 | `CLIENT-GAP.md` / `CLIENT-ROADMAP.md` P0P10 |
SpeedTree 植被、地形(Metin2 户外地图)、UI / Python 脚本层、eterpackPhase 1 用散文件)、GPU 蒙皮优化、LOD 策略、多角色 AI、网络、玩法。
> 地形与 `.mse` 特效在 Phase 1 也不做,但 **M2.5 会做通用 `ShaderMaterial` + 混合模式的地基**,为后续正式移植时的地形 / 特效渲染铺路。
@@ -76,7 +92,7 @@ SpeedTree 植被、地形(Metin2 户外地图)、UI / Python 脚本层、ete
## 02 · 架构总览
```
mtgodot-poc/
metin2-client/ # 建仓时叫 mtgodot-poc,后更名
extension/ GDExtensionC++godot-cpp 4.7
src/
register_types.cpp 注册 Metin2Model / Metin2AnimPlayer
@@ -160,13 +176,13 @@ mtgodot-poc/
**目标**warrior + 另 2 种骨架的 bind pose + 贴图在 Godot 里正确显示,多部件组装。
对标 [`steps/M1-static-render.md`](./steps/M1-static-render.md) T2T5。
对标 [`reference/steps/M1-static-render.md`](./reference/steps/M1-static-render.md) T2T5。
| 任务 | 完成判据 |
|---|---|
| T1.1 `gr2_bridge``libgr2::Skeleton``Skeleton3D`bone 名 / parent / rest `Transform3D`);basis + 单位缩放在此处理,约定写进注释 | 骨架层级树与 `gr2dump --members` 一致;三种骨架的骨骼数都正确 |
| T1.2 `libgr2::Mesh``ArrayMesh``ARRAY_VERTEX/NORMAL/TANGENT/TEX_UV/BONES/WEIGHTS`+ `Skin`bind 矩阵);处理 >4 权重 | 白模轮廓 = Blender 里同模型;无破面;三种骨架都过 |
| T1.3 贴图路径决策(`.dds` 原生导入 vs 运行时 `dds_loader`),实现选定方案;warrior 贴图(实测 512×512 DXT3 5mip | UV 无错位 / 无镜像;决策写进 `extension/README.md` |
| T1.3 贴图路径决策(`.dds` 原生导入 vs 运行时 `dds_loader`),实现选定方案;warrior 贴图(实测 512×512 DXT3 5mip | UV 无错位 / 无镜像;决策写进 `extension/README.md`**该文件未产出**,2026-09-08 复核;决策实际记录在 `MIDREVIEW.md` §3「贴图」与 `extension/src/dxt.cpp` 注释里) |
| T1.4 材质:`StandardMaterial3D`albedo 贴图 + unshaded 先看轮廓),可切白模 | 贴图目视正确 |
| T1.5 多部件(body / weapon / hair)组装,武器挂 `BoneAttachment3D` | 部件数正确、武器跟手骨 |
| T1.6 `test/compare.py`:与 bgfx demo 同机位截图 | 几何一致(允许色彩空间 / 光照差异) |
@@ -179,7 +195,7 @@ mtgodot-poc/
**目标**:从 GDExtension 每帧驱动 `Skeleton3D` 播动画,含跨文件 retarget 与 motion event。
对标 [`steps/M2-anim-skinning.md`](./steps/M2-anim-skinning.md)。
对标 [`reference/steps/M2-anim-skinning.md`](./reference/steps/M2-anim-skinning.md)。
| 任务 | 完成判据 |
|---|---|
@@ -279,7 +295,7 @@ mtgodot-poc/
|---|---|
| `mtgodot-poc/` 仓库:GDExtension 源 + Godot 4.7.1 demo 工程 | 新仓库 |
| macOS 导出配置 | `project/export_presets.cfg` |
| 与 bgfx demo 的几何 / 动画对拍报告 | `test/godot-snapshot.json` |
| 与 bgfx demo 的几何 / 动画对拍报告 | ~~`test/godot-snapshot.json`~~ **未产出**2026-09-08 复核)。实际落地的是 `test/compare.py` + `test/compare-report.json`(进程 / 截图 / 结构硬门禁),与 bgfx 的比对停留在 `test/bgfx-reference/` 的人工交叉核对 |
| 材质差距清单 | 中期评审报告内 |
| 50 角色压力采样(供 Phase 2 A/B 决策) | `test/godot-macos-stress.json` |
| **中期评审报告** | 桥接层工作量实测 + 观感对比截图 + 剩余风险 + "是否进入 Phase 2"建议 |