For the 8-player playtest. Damage authority is VICTIM-side, so no single peer sees the whole match: every -net instance now writes a compact machine-parseable matchlog_<date>_<time>_<pid>.txt (auto-armed by -net; BT_MATCHLOG=1/0 overrides; solo silent), and at mission end a relay-mode pod dials the relay game port (the seat-request throwaway-dial pattern, envelope route -9) and streams the file back -- the relay saves every peer's copy under matchlogs/ on the operator's machine, so testers send nothing by hand. tools/matchcheck.py <dir> reconciles all of them: damage claimed (FIRE/PROJ/SPLASH/RAM, shooter-side) vs applied (DMG, victim-side authoritative), kill/death replication across observers, PLAYER_DEAD counts, scores, version skew, replicant-application and unattributed-damage anomalies, mid-mission disconnects. Hooks at the authoritative sites: Mech::TakeDamageMessageHandler (DMG, post-base, zone + post-application damageLevel), MechWeapon:: SendDamageMessage (FIRE), projectile impact/splash/collision dispatch (PROJ/SPLASH/RAM), wreck entry (DEATH -- a ONE-SHOT latch at MovementMode 9, NOT the transition: a replicant arrives at 9 straight from the type-6 record header and never runs the transition branch), BTPlayer vehicle/death/score handlers (VEHICLE/PLAYER_DEAD/SCORE), zone crit cascade (CRIT), APP.cpp RunningMission (MISSION), L4NET host handlers (PEER_UP/PEER_DOWN). Every line t=/w=/st=-stamped + fflushed. Verified 2-node: mesh run pairs A's 22 FIRE 1:1 with B's 22 DMG (same amounts, cylinder-resolved zones, ~200ms latency); force-damage kill run logs 103 DMG + 3 DEATH inst=M + 3 PLAYER_DEAD across three respawn cycles victim-side and the kill SCOREs shooter-side; relay-mode run auto-uploaded BOTH peers' files at the mission-clock stop and matchcheck produced the full report with exactly one (correct) anomaly -- the force hook's claim-less damage, the unattributed-damage detector working. Relay gained a route-specific 8MB cap for the upload frame (game frames stay capped at 1600). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
34 lines
536 B
Plaintext
34 lines
536 B
Plaintext
# build output
|
|
/build/
|
|
/build-pod/
|
|
/build-steam/
|
|
*.obj
|
|
*.pdb
|
|
*.ilk
|
|
*.exp
|
|
*.idb
|
|
|
|
# logs / debugger dumps
|
|
*.log
|
|
cdb_*.txt
|
|
|
|
# editor / OS
|
|
.vs/
|
|
*.user
|
|
Thumbs.db
|
|
__pycache__/
|
|
dist/
|
|
|
|
# glass-cockpit dev layer: per-developer / per-machine runtime files
|
|
content/bindings.txt
|
|
content/frontend.egg
|
|
content/steam_appid.txt
|
|
content/fe_last.ini
|
|
# local root copies of the player bats (players/ is the source of truth)
|
|
/play_solo.bat
|
|
/join.bat
|
|
/join_lan.bat
|
|
/play_steam.bat
|
|
# MP match forensic logs (matchlog.cpp) -- runtime artifacts
|
|
matchlog_*.txt
|