Files
BT411/players
arcattackandClaude Opus 4.8 753540de96 MP match forensics: per-peer matchlog + relay auto-upload + matchcheck
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>
2026-07-22 13:22:10 -05:00
..

BattleTech {VERSION} -- multiplayer client
==========================================

IMPORTANT: FULLY EXTRACT this zip first (right-click - Extract All).
Do NOT run anything from inside the zip.  The .bat files must sit next
to the 'content' and 'build' folders.

TO JOIN AN INTERNET GAME:   double-click  join.bat
   (waits for the operator's session if it's not up yet)
TO JOIN A LAN GAME:         double-click  join_lan.bat  (operator's LAN)
SINGLE-PLAYER:              double-click  play_solo.bat  -- opens the
   mission menu: pick your mech (all 18), map, experience level,
   colours, weather and mission length, then launch
{STEAM}STEAM INTERNET PLAY:        double-click  play_steam.bat  (EXPERIMENTAL --
{STEAM}   needs the Steam client running; host or join from the menu)

Your seat and mech are assigned automatically by the operator.
If the game closes unexpectedly, send the operator content\join.log.

AFTER A MULTIPLAYER SESSION: the game writes a small match report,
content\matchlog_<date>_<time>_<number>.txt.  Please send the operator
the newest one -- we combine everyone's files to verify damage, kills
and scores worked correctly across all players.

You start INSIDE the cockpit with the pod's MFD panels composited
around the view (one window).  The red MFD buttons, radar rails and
joystick buttons are all MOUSE-CLICKABLE -- right-click a button to
latch it held.  Press V any time to toggle the external camera.

CONTROLS (keyboard):
  W/S or Up/Down ....... throttle lever        X / NumPad5 ... all stop
  A/D or Left/Right .... turn pedals           Alt ........... reverse thrust
  Q/E .................. torso twist           R/F ........... torso aim
  NumPad 8/2/4/6 ....... torso aim/twist (alt) Shift ......... throttle up
  1 or Space ........... main trigger          2 ............. middle thumb
  3 or Ctrl ............ upper thumb (missiles) 4 ............ pinky
  V view | B look-behind | M control mode | N schematic | J/K/L MFD pages
  G (hold) + fire key .. regroup a weapon onto that trigger -- or hold a
     weapon panel's red PROGRAM button with the mouse and tap a fire key;
     the joystick diagram on the panel shows the binding live.

An Xbox controller works out of the box.  Rebind keys in
content\bindings.txt (regenerates with defaults if deleted).

This build: {VERSION}.  Private -- do not redistribute.