Files
mtgodot-poc/audit/remediation-roadmap.md
T
shenleiandClaude Opus 5 4521845a69 audit(2A): include-dependency tool, 2V0-2V3 slice unit lists and batch-2 order
port_deps.py resolves explicit #include edges plus the implicit edges each
40250 library's StdAfx.h supplies (symbol index restricted to StdAfx-visible
headers), writes cumulative slice lists and the P0 topological order.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-22 19:21:10 +09:00

3.6 KiB
Raw Blame History

40250 1:1 移植队列

路线与决定见 docs/PORT-PLAN.md,工作方法见 .agents/skills/metin2-40250-parity-audit/SKILL.md。本文件只放批次和队列,不写每轮叙述(每轮结果记在 audit/port-map/**audit/history.jsonl)。2026-09-22 之前的按分支修复记录见本文件的 git 历史。

实时剩余量与下一批候选:

python3 .agents/skills/metin2-40250-parity-audit/scripts/port_map.py status
python3 .agents/skills/metin2-40250-parity-audit/scripts/port_map.py queue --limit 20

批次

批次 内容 状态
0 工具:参考根解析、缺失文件报错、port_map.py、构建/测试入口 完成 2026-09-22
1 删除只被自身测试引用的 project/*_system.gd 与其 test_*_parity.gd,清除 manifest 中对应证据 完成 2026-09-22106+106 个文件)
2A 基础:Win32 定宽类型层、参考公共头最小闭包、port_logic CMake、platform 接口骨架、头文件可编译门禁、port-map 重新基线 下一步
2R 资源包盘点:EPK 压缩/加密类型、密钥来源、覆盖顺序、路径大小写、移动端交付 下一步(可与 2A 并行)
2P CPython 2.7.18 编进 libmtgodot,五个平台各自 pyconfig.h 并分别验证 2A 之后(Android 独立程序已验证 b02c49bb
2D 数据源切到 40250msm 路径、protoTEA + TItemTable)、严格资源测试、资源根 proto 在 2A 之后,资源根在 2R 之后
2V0 UI 壳:真实 PythonLauncher/wndMgr/grp/app + platform UI,桩玩法模块,显示并操作 Logo/Popup 需要 2A、2P、root/uiscript 资源
2V1 登录/选角:真实 net phase、登录/选角脚本和所需模块,进入 Loading 2V0 之后
2V2 GamePhase:真实角色管理/主角创建/最小渲染,进入游戏并显示角色 2V1 和 2D 之后
2V3 本地移动:真实 player/input/event/movement 链,输入、位置和移动封包由新路径负责 2V2 之后
2 2V3 未覆盖的其余 P0 角色/移动单元,按 #include 依赖拓扑移植 2V3 之后
3 剩余 Python 模块和窗口 → P1 战斗/技能 → P2 游戏阶段封包 → P3 物品 未开始
4 NEEDS_LIVE 真服验证批 未开始

批次 2 单元(顺序以 audit/slices/batch2-order.json 为准,由 port_deps.py order --write 生成;下表仅为候选)

实现位置一律是镜像文件 extension/src/port/<Lib>/<File>.{h,cpp};下面列出的是需要删减旧逻辑的迁移来源。 目录、CMake 目标和公共头由 2A 建立。

  • UserInterface/PythonPlayerEventHandler.cppOnMove/OnMoving/OnStop 已在 net_play.gd 对齐,需迁到镜像文件;OnWaiting DIVERGENT)— net_play.gd
  • UserInterface/InstanceBaseMovement.cpp + UserInterface/InstanceBase.cpp(同一 owner,串行)— player_controller.gdentity_store.cpp
  • UserInterface/PythonPlayerInput.cpp + PythonPlayerInputKeyboard.cpp + PythonPlayerInputMouse.cppplayer_controller.gd(与上一项串行)
  • GameLib/ActorInstanceMotion.cpp + ActorInstanceEvent.cpp — 动作/事件
  • GameLib/ActorInstance.cpp + ActorInstancePosition.cpp + ActorInstanceRotation.cpp + ActorInstanceCollisionDetection.cpp
  • UserInterface/PythonCharacterManager.cppnet_world.gdentity_store.cpp
  • UserInterface/PythonPlayer.cpp

已知参考位置

  • Python UI 以 40250 的 Client/Eternexus/root(打包为 pack/root.epk90 个文件)为准;仓库内 assets/root 是另一版本(m2dev),与 40250 有实质差异(如 uitarget.py 按钮表),不能作为参考。