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:
+22
-6
@@ -11,7 +11,7 @@
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| 状态 | Phase 1(macOS)基本完成,见 [`MIDREVIEW.md`](./MIDREVIEW.md);未完成工作分层清单见 [`BACKLOG.md`](./BACKLOG.md) |
|
||||
| 状态 | **已被工作范围超越(2026-09-08 复核)**。Phase 1(macOS)完成,见 [`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 1:macOS**(当前)→ Phase 2:Android(一加 13 / Vulkan)· iOS(iPhone 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` P0–P10 |
|
||||
|
||||
SpeedTree 植被、地形(Metin2 户外地图)、UI / Python 脚本层、eterpack(Phase 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/ GDExtension(C++,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) T2–T5。
|
||||
对标 [`reference/steps/M1-static-render.md`](./reference/steps/M1-static-render.md) T2–T5。
|
||||
|
||||
| 任务 | 完成判据 |
|
||||
|---|---|
|
||||
| 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"建议 |
|
||||
|
||||
Reference in New Issue
Block a user