From 48191d6fdf782c4ec0a0fc84c6bbb354676acb61 Mon Sep 17 00:00:00 2001 From: arcattack Date: Thu, 9 Jul 2026 09:40:48 -0500 Subject: [PATCH] MP-front scout (task #45): P6 survives the combat rework; LAN-fight gap map One-box smoke test re-run on the current build: console egg -> mesh -> RunningMission both instances, 174+ x144-byte update records each side, 2 mech trees per instance, 0 crashes (~6 min). The movement-replication milestone is intact after all the targeting/weapon/death changes. Gap map to a first playable LAN fight recorded in context/multiplayer.md (wiring order): (1) generalize the world-pick from gEnemyMech to all peer mechs; (2) exercise the Dispatch reroute for cross-pod TakeDamage; (3) victim state visuals on the shooter's screen (zone replication or a death event); (4) cross-pod beam visuals via the AUTHENTIC beam-keepalive messages (FUN_0041c350, templates @0x511e6c/78 -- already stubbed in emitter.cpp); (5) 2-window driving + DEATHS scoring; respawn deferred to the P5 teardown debt. Co-Authored-By: Claude Fable 5 --- content/LAST.EGG | 24 ++++++++++++++++++++---- context/multiplayer.md | 23 +++++++++++++++++++++++ 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/content/LAST.EGG b/content/LAST.EGG index 61255bd..1e8a83c 100644 --- a/content/LAST.EGG +++ b/content/LAST.EGG @@ -1,8 +1,8 @@ [mission] adventure=BattleTech -map=grass +map=cavern scenario=freeforall -time=day +time=night weather=clear temperature=27 length=600 @@ -156,8 +156,9 @@ x=128 y=32 width=8 [pilots] -pilot=200.0.0.96 -[200.0.0.96] +pilot=127.0.0.1:1502 +pilot=127.0.0.1:1602 +[127.0.0.1:1502] hostType=0 advancedDamage=1 loadzones=1 @@ -171,6 +172,20 @@ dropzone=one vehicle=bhk1 vehicleValue=1000 color=White +[127.0.0.1:1602] +hostType=0 +advancedDamage=1 +loadzones=1 +name=Boreas +bitmapindex=2 +experience=expert +badge=VGL +patch=Yellow +role=Role::Default +dropzone=one +vehicle=bhk1 +vehicleValue=1000 +color=Red [largebitmap] bitmap=BitMap::Large::Aeolus [BitMap::Large::Aeolus] @@ -227,3 +242,4 @@ width=4 model=dfltrole [Role::NoReturn] model=noretun + diff --git a/context/multiplayer.md b/context/multiplayer.md index 038b565..a56f332 100644 --- a/context/multiplayer.md +++ b/context/multiplayer.md @@ -58,6 +58,29 @@ Cross-pod COMBAT (target a replicant + route damage to the owning master — Ent reroutes); interactive 2-window driving; replicant GAIT animation (derive from replicated velocity); the pod-LAN config (real IPs, bare-IP pilot entries). See [[open-questions]]. [T3] +## MP-front scout (task #45, 2026-07-09) — the P6 chain SURVIVES the combat/HUD rework [T2] +Re-ran the one-box smoke test on the current build (world-pick targeting, weapon groups, death +transition, HUD all landed since P6): console egg → mesh → RunningMission on BOTH instances, 174+ +×144-byte update records EACH side (msgID=6), 2 mech trees per instance, 0 crashes over ~6 min. +**Gap map to a first playable LAN fight** (in wiring order): +1. **Enemy selection**: the world-pick tests only `gEnemyMech` (the solo dummy, btplayer.cpp:791). + MP: the pick must test every OTHER mech (the peer replicants) — generalize to a candidate walk + (mech entities != viewpoint). Small. +2. **Cross-pod damage**: dispatch TakeDamage at the REPLICANT → verify the engine reroute carries + it to the owning master (the KB claims Dispatch reroutes; not yet exercised with our STEP-6 + handler). The master takes real zone damage + runs its own death transition (task #42 placed the + death dispatch victim-side — MP-correct by construction). +3. **Victim visuals on the shooter's screen**: the wreck swap gates on zone/graphic state the + REPLICANT copy may never see (zone damage may not replicate — only pose updates confirmed). + Check DamageZone/subsystem state in the update stream; else replicate the death as an event. +4. **Cross-pod beam visuals**: replicant emitters don't run the local trigger sim, so the peer's + beams never draw today. ⭐ The authentic path exists: ServiceDischarge/ContinueDischarge SEND + **beam-keepalive messages** (`FUN_0041c350`, templates @0x511e6c/@0x511e78, emitter.cpp already + stubs them) — decode + route those to drive replicant beam draws. +5. **2-window driving**: input gates on window focus (alternate windows; `BT_KEY_NOFOCUS` for + harness). DEATHS scoring should light via the existing BTPostKillScore MP branch. Respawn = + the P5 teardown debt (deferred until needed). + ## Key Relationships - Base: [[wintesla-port]] (L4NET). Depends on: [[locomotion]] (update writer), [[combat-damage]] (entity lifecycle). Detail: `docs/HARD_PROBLEMS.md` (P6).