The repository targets TMP4-era client compatibility, but the protocol contract is documented here in project-owned language.
session-phases.md— working session model and allowed transitionsframe-layout.md— stream envelope and control-packet framing assumptionscontrol-handshake.md— control-plane packet layouts for phase, ping, pong, and key exchangeclient-subsystems.md— observed behavioral differences among the main stream, auth connector, and state checkerauth-login.md— minimal auth-server credential exchange and login-key issuanceclient-auth-and-selection-flow.md— client-side auth-to-select choreography and selection-surface gotchaslogin-selection.md— minimal login-by-key and selection-surface packet layoutsselect-world-entry.md— minimal selection, loading, and enter-game packet choreographyclient-game-entry-sequence.md— client-side loading, enter-game, self bootstrap, and early movement expectationsloading-to-game-bootstrap-burst.md— exact server-owned burst emitted whenENTERGAMEmoves the session fromLOADINGtoGAMEcharacter-delete-selection.md— deterministic character deletion inSELECTclient-version-loading.md— tolerantCLIENT_VERSIONmetadata path duringLOADINGgame-ping-pong.md— minimal control-planePING/PONGbehavior once the session is inGAMEshared-world-peer-visibility.md— minimal peer enter/remove visibility across concurrentgamedsessionsmove-peer-fanout.md— minimal queuedMOVEreplication to already-visible peerssync-position-peer-fanout.md— minimal queuedSYNC_POSITIONreplication to already-visible peerslocal-chat-peer-fanout.md— minimal local talking chat fanout to already-visible peerswhisper-name-routing.md— minimal exact-name whisper routing among connectedGAMEsessionsparty-chat-bootstrap.md— minimal bootstrapCHAT_TYPE_PARTYfanout across connectedGAMEsessionsguild-chat-bootstrap.md— minimal bootstrapCHAT_TYPE_GUILDfanout across connectedGAMEsessionsshout-chat-bootstrap.md— minimal bootstrapCHAT_TYPE_SHOUTfanout across connectedGAMEsessionsinfo-notice-bootstrap.md— minimal bootstrap system-chat handling forCHAT_TYPE_INFOandCHAT_TYPE_NOTICEserver-notice-broadcast.md— first programmatic server-originatedCHAT_TYPE_NOTICEbroadcast contractgame-slash-command-bootstrap.md— first owned/quit,/logout,/phase_select,/restart_here, and/restart_townslash-command behavior while already inGAMEchat-scope-first-hardening.md— first non-global scoping pass for talking/guild/shout using currently available runtime datamap-index-world-scope-hardening.md— first map-index-backed visible-world scoping pass for visibility, movement, sync, and local talking chatworld-topology-bootstrap.md— first explicit local-channel and map-scope topology model for the bootstrap runtimevisibility-rebuild.md— first dedicated visibility helper owned byinternal/worldruntimeentity-runtime-bootstrap.md— first explicit ownership contract for live player runtime, entity identity, and the next M2 world-runtime directories/indexesmap-relocation-visibility-rebuild.md— first server-side visible-world rebuild primitive for relocating a connected player between bootstrap mapsbootstrap-map-transfer-contract.md— first minimal structured preview/commit contract for bootstrap map transfer on top of the relocation primitivetransfer-rebootstrap-burst.md— first owned self-session rebootstrap burst for bootstrap map transfer on the game socketruntime-reconnect-cleanup.md— first owned close/disconnect/reconnect cleanup contract for bootstrap shared-world runtime ownershipnon-player-entity-bootstrap.md— first owned non-player runtime contract for identity and map presence before packet/content behavior existsstatic-actor-interaction-bootstrap.md— first interaction-ready metadata seam for bootstrap static actors, now powering self-onlyinfo/talk,warp, and merchant-facingshop_previewstatic-actor-interaction-request.md— first owned client-originatedGAME-phase interaction request for a visible bootstrap static actor target byVIDnpc-service-interactions-bootstrap.md— first frozen service-style NPC gameplay contract built on top of bootstrap static actors and the existingINTERACTingresscombat-training-dummy-bootstrap.md— first frozen combat-preparation target contract around one visibletraining_dummyactorcombat-normal-attack-bootstrap.md— first ownedATTACKwire contract, selected-dummy normal-attack gate, deterministic bootstrap HP refresh loop, and clear-target companion on top of the visibletraining_dummytarget slicenon-player-death-respawn-bootstrap.md— first owned zero-HP death, target clear, dead-state rejection, and respawn-reset contract for bootstrap non-player combatantsnon-player-reward-bootstrap.md— first non-player death reward seam, default rewardless descriptors, deterministic EXP/gold persistence, and fixed drop-vnum ground-item rewardsplayer-death-bootstrap.md— first owned retaliation-driven player-death edge for engaged owners, including selfDEAD+ clear, one visibility-gated peerDEAD(owner_vid)fanout, merchant-window close on that floor, the first recipient-side exact-name whisper denial for still-connected zero-HP owners, and the first post-floorMOVE/SYNC_POSITION, static-actorINTERACT, merchant-buy, client/slash item-use, slash item-inventory/equipment, peer-facingCHAT/WHISPER, and self-onlyCHAT_TYPE_INFOdenial seamsplayer-restart-here-bootstrap.md— same-socket/restart_hererecovery contract for a retaliation-owned zero-HP player, reusing self bootstrap and peer visibility rebuild packet families for in-place recoveryplayer-restart-town-bootstrap.md— same-socket/restart_townrecovery contract for a retaliation-owned zero-HP player, reusing the existing transfer rebootstrap burst plus legacy empire town-return targets without claiming full revive menus yetplayer-restart-request-bootstrap.md— restart-ingress follow-up note: current public evidence supports/restart_hereand/restart_townas the owned restart ingress for this compatibility track, and any separate dedicated restart packet stays unowned unless later captures or owned fixtures prove onecontent-spawn-groups-bootstrap.md— first authoredspawn_groupscontent contract for loading stationary attackable non-player spawns throughcombat_profile+ map placementnpc-shop-preview-bootstrap.md— structured merchant preview/identity contract built on top of the existingINTERACTingress and deterministic interaction-definition authoringnpc-shop-catalog-bootstrap.md— structured merchant catalog contract behindshop_preview, with stable catalog slots and template-backed entriesnpc-shop-open-close-bootstrap.md— first client-visible merchant window contract, keeping merchant open anchored toINTERACTwhile freezing the current bootstrapSHOP START/BUY/ENDbehaviornpc-shop-transaction-bootstrap.md— first buy-only merchant transaction gate built on structuredshop_previewcatalogs while keeping full shop-window choreography capture-gatedstatic-actor-interaction-authoring.md— first loopback-only authoring, QA visibility, and deterministic bundle surface for bootstrap static actors plus interaction definitionsexact-position-bootstrap-transfer-trigger.md— first gameplay-side exact-position trigger that can invoke the bootstrap transfer commit path fromMOVE/SYNC_POSITIONcharacter-update-bootstrap.md— first self-only state refresh after enteringGAMEplayer-point-change-bootstrap.md— first self-only point refresh after enteringGAMEinventory-equipment-bootstrap.md— first owned self-only inventory/equipment bootstrap surface and item-family boundary for M3 character stateitem-template-store-bootstrap.md— current authored item-template snapshot boundary, validation rules, missing-file fallback, and fail-closed unknown-field hardeningitem-use-bootstrap.md— first owned self-only consumable item-use bootstrap contract, now covering both the slash harness and the first tiny client-originatedITEM_USEingress for carried inventory, plus the wire-onlyITEM_USE_TO_ITEMdrag-to-item codecitem-move-bootstrap.md— first owned client-originated carried-inventoryITEM_MOVEcontract for GAME-phase moves, counted splits/merges, zero-count and exact-count incompatible occupied-destination swaps, and self-only slot refreshesitem-drop-pickup-bootstrap.md— frozen ground-item drop/pickup packet codecs andGAMEdispatch seams, now with carried-slot drop mutation, shared temporary ground handles, visible-world pickup, and the first party-shaped owner-delivery pickup notices while durable ownership timers and real party membership remain pendingquickslot-bootstrap.md— first owned quickslot packet codecs, selected-character bootstrap replay, and accepted self-only client quickslot edit persistence (QUICKSLOT_ADD,QUICKSLOT_DEL,QUICKSLOT_SWAP) before automatic item-mutation quickslot synchronizationsync-position-bootstrap.md— first self-only sync-position reconciliation after enteringGAMEboot-path.md— first milestone from connect to basic movementpacket-matrix.md— working inventory for the first protocol slice
- boot-path packet inventory
- session phase matrix
- frame layout notes
- capture-derived golden fixtures
- compatibility assumptions and rejected assumptions
Reference implementations may be studied externally, but this repository must only store original documentation and code.