Unit of work is a 40250 source unit; current-only logic is a defect; unreachable code is not evidence. Adds per-function port-map schema, priority by player-visible gameplay, parallel worktree rules, and a corrected project map. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
3.8 KiB
3.8 KiB
Project map
Reference client (40250)
- Root:
MT_40250_SOURCE, elsereference_rootinaudit/manifest.json— on this machine../40250/Server Client TMP4/ClientVS22/sourcerelative to the repo (quote it: the path has spaces). - Active sources: the
ClCompile/ClIncludeitems in../vs_files/*/*.vcxproj; files not listed there are not product code. - Many
UserInterface/files contain CP949 bytes in comments: usegrep -a/grep -arn, or plain grep silently reports no match. - Python UI and game scripts are not in the source tree: they are in this repo at
assets/root/*.py(e.g.uitarget.py,uitaskbar.py) andassets/uiscript/. - Server source (for protocol questions only, not client behavior):
../40250/Server Client TMP4/Server.
| Library | Lines | Content |
|---|---|---|
UserInterface |
64.7k | network stream + phases, CPythonPlayer, CInstanceBase, managers, Python modules |
EterLib |
48.7k | device/render state, camera, input/IME, net stream, resources, collision primitives |
GameLib |
30.7k | CActorInstance (motion, battle, attach, events), flying objects, map/terrain, race data |
EterBase |
6.3k | utilities, timer, CRC, file |
EffectLib |
6.1k | effect/particle instances |
EterGrnLib |
5.9k | Granny models, motion, LOD |
EterPack |
3.4k | pack format |
MilesLib |
2.3k | audio |
EterLocale |
1.1k | codepages, locale strings |
PRTerrainLib |
1.0k | terrain texture/height data |
Current client
- GDScript runtime:
project/(entryproject/app_flow.gd, worldproject/game_scene.gd); UI inproject/ui/. - Native extension:
extension/src/(network inextension/src/net/, classic 40250 protocol inextension/src/net/classic/). - Format readers:
formats/; Granny:libgr2/; assets/tables:assets/; Granny oracle:oracle/; tools:tools/.
Known counterparts
| 40250 | Current |
|---|---|
CPythonNetworkStream* phases, CAccountConnector |
extension/src/net/classic/classic_session.cpp, classic_stream.cpp, classic_parser.cpp |
packet structs / CMainPacketHeaderMap |
extension/src/net/classic/wire_classic.h |
EterLib/NetStream.cpp sequence + cipher |
extension/src/net/classic/sequence_table.h, classic_cipher.cpp |
CPythonCharacterManager, CInstanceBase state from packets |
extension/src/net/entity_store.cpp, project/net_world.gd |
CPythonPlayer input/move (PythonPlayerInput*.cpp), main CInstanceBase movement |
project/player_controller.gd |
PythonPlayerEventHandler.cpp (OnMove/OnMoving/OnWaiting/OnStop -> SendCharacterStatePacket) |
project/net_play.gd |
CPythonPlayer skill use |
project/player_skill.gd |
CFlyingObject* |
project/fly_object.gd |
EterLib/Camera.cpp + PythonApplicationCamera |
project/game_camera.gd |
ui*.py windows |
project/ui/*_ui.gd |
Code that is not a counterpart
About 100 of the 111 project/*_system.gd files are loaded only by their own
project/test_*_parity.gd (never by the runtime). They are not implementations of 40250
behavior and their tests are not evidence; delete them, or replace them by porting the real 40250
code path when that path exists.
Existing evidence (historical)
docs/CLIENT-GAP.md,docs/CLIENT-PARITY-AUDIT-AND-FIX-GUIDE.md,docs/CLIENT-40250-PORT.md,docs/PARITY-GAP.md: background only; trust the port-map, not their status text.oracle/run-diff-suite.sh: Granny numerical comparison suite.
Verification commands
godot --headless --path project --script <test>.gd # most project tests
cmake --build build-debug -j4 && ctest --test-dir build-debug --output-on-failure -j2
If build-debug/CMakeCache.txt points at another checkout path, reconfigure first:
cmake -S . -B build-debug -DCMAKE_BUILD_TYPE=Debug. Always finish with git diff --check.