# 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 历史。 实时剩余量与下一批候选: ```bash 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-22(106+106 个文件) | | 2A | 基础:Win32 定宽类型层、参考公共头最小闭包、`port_logic` CMake、platform 接口骨架、头文件可编译门禁、port-map 重新基线 | 下一步 | | 2R | 资源包盘点:EPK 压缩/加密类型、密钥来源、覆盖顺序、路径大小写、移动端交付 | 下一步(可与 2A 并行) | | 2P | CPython 2.7.18 编进 libmtgodot,五个平台各自 `pyconfig.h` 并分别验证 | 2A 之后(Android 独立程序已验证 b02c49bb) | | 2D | 数据源切到 40250:msm 路径、proto(TEA + `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//.{h,cpp}`;下面列出的是需要删减旧逻辑的迁移来源。 目录、CMake 目标和公共头由 2A 建立。 - [ ] `UserInterface/PythonPlayerEventHandler.cpp`(OnMove/OnMoving/OnStop 已在 `net_play.gd` 对齐,需迁到镜像文件;OnWaiting DIVERGENT)— `net_play.gd` - [ ] `UserInterface/InstanceBaseMovement.cpp` + `UserInterface/InstanceBase.cpp`(同一 owner,串行)— `player_controller.gd`、`entity_store.cpp` - [ ] `UserInterface/PythonPlayerInput.cpp` + `PythonPlayerInputKeyboard.cpp` + `PythonPlayerInputMouse.cpp` — `player_controller.gd`(与上一项串行) - [ ] `GameLib/ActorInstanceMotion.cpp` + `ActorInstanceEvent.cpp` — 动作/事件 - [ ] `GameLib/ActorInstance.cpp` + `ActorInstancePosition.cpp` + `ActorInstanceRotation.cpp` + `ActorInstanceCollisionDetection.cpp` - [ ] `UserInterface/PythonCharacterManager.cpp` — `net_world.gd`、`entity_store.cpp` - [ ] `UserInterface/PythonPlayer.cpp` ## 已知参考位置 - Python UI 以 40250 的 `Client/Eternexus/root`(打包为 `pack/root.epk`,90 个文件)为准;仓库内 `assets/root` 是另一版本(m2dev),与 40250 有实质差异(如 `uitarget.py` 按钮表),不能作为参考。