- keep 40250 widths/overflow semantics (Win32 long = 32-bit), fixed-width serialized structs with static_assert, instead of copying C type names - 2A base batch (types, header closure, port_logic target, platform stubs, header gate, port-map re-baseline) and include-order porting - 2R pack inventory: six EPK compression types, HybridCrypt key source, index override order, path case, mobile delivery - 2P: shared source list, per-platform pyconfig.h, all five platforms - 2V minimal vertical slice; old and new paths coexist until wired - strict asset tests (MT_ASSETS vs M2_ASSETS), RUN_AS_IS instead of N_A, void the 6 pre-architecture 'done' functions Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
3.2 KiB
3.2 KiB
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-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 之后 |
| 2V | 最小纵向切片:PythonLauncher → system.py → wndMgr → 登录/选角 → GamePhase → 本地移动 | 需要 2A、2P、2D |
| 2 | 其余 P0 角色/移动单元,按 #include 依赖拓扑移植 |
2V 之后 |
| 3 | P1 战斗/技能 → P2 游戏阶段封包 → P3 物品;Python 层按 2P 的结论进行 | 未开始 |
| 4 | NEEDS_LIVE 真服验证批 |
未开始 |
批次 2 单元(顺序由 2A 的依赖图重新生成;下表仅为候选)
实现位置一律是镜像文件 extension/src/port/<Lib>/<File>.{h,cpp};下面列出的是需要删减旧逻辑的迁移来源。
目录、CMake 目标和公共头由 2A 建立。
UserInterface/PythonPlayerEventHandler.cpp(OnMove/OnMoving/OnStop 已在net_play.gd对齐,需迁到镜像文件;OnWaiting DIVERGENT)—net_play.gdUserInterface/InstanceBaseMovement.cpp+UserInterface/InstanceBase.cpp(同一 owner,串行)—player_controller.gd、entity_store.cppUserInterface/PythonPlayerInput.cpp+PythonPlayerInputKeyboard.cpp+PythonPlayerInputMouse.cpp—player_controller.gd(与上一项串行)GameLib/ActorInstanceMotion.cpp+ActorInstanceEvent.cpp— 动作/事件GameLib/ActorInstance.cpp+ActorInstancePosition.cpp+ActorInstanceRotation.cpp+ActorInstanceCollisionDetection.cppUserInterface/PythonCharacterManager.cpp—net_world.gd、entity_store.cppUserInterface/PythonPlayer.cpp
已知参考位置
- Python UI 以 40250 的
Client/Eternexus/root(打包为pack/root.epk,90 个文件)为准;仓库内assets/root是另一版本(m2dev),与 40250 有实质差异(如uitarget.py按钮表),不能作为参考。