KB: #111 paperwork -- translocation-warp topic updated (peer sphere retired: port extension vs the POV-only authentic effect; the DropZoneLocation-anchor nuance and the slot-contention skip both moot; observers see the un-wreck swap). Release notes gain the no-bubble-on-others line crediting Lynx's night-9 call. Tracker comment posted, field-verify Friday.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016bw71WVsccjwW7uKRg4aWD
This commit is contained in:
co-authored by
Claude Fable 5
parent
3013cf86c5
commit
32e5e8c6a6
@@ -6,7 +6,7 @@ source_sections: "multiplayer.md (lifecycle + trigger wiring, task #52); referen
|
||||
related_topics: [rendering, multiplayer, combat-damage, reconstruction-gotchas, asset-formats, bgf-format]
|
||||
key_terms: [material-ramp]
|
||||
open_questions:
|
||||
- "Peer warp IS wired + visible -- observer sees a peer's un-wreck warp (world-anchored BTStartWarpEffect, 160b78e). Remaining nuance [T3]: anchor to the peer's authentic DropZoneLocation (not replicated) vs the peer's world position."
|
||||
- "Peer warp RETIRED (#111, 2026-08-14): the world-anchored peer sphere was a port extension; the authentic effect is POV-only. Observers see the un-wreck model swap. The old DropZoneLocation-anchor nuance is moot."
|
||||
- "In the 2-node force-damage test only the EXPAND (respawn) warp logs reliably; confirm the COLLAPSE (death-side) fires on every MP death path."
|
||||
---
|
||||
|
||||
@@ -118,20 +118,17 @@ it impossible to ignore. Generalized in [[reconstruction-gotchas]] §13.
|
||||
## Trigger wiring (summary; full detail in [[multiplayer]]) [T2]
|
||||
Local player's own death → `BTStartWarpCollapsePOV()` (btplayer.cpp `VehicleDeadMessageHandler`,
|
||||
`deathCount==-1`, guarded `this==GetMissionPlayer()`). Respawn `DropZoneReply` → `BTStartWarpExpandPOV()`
|
||||
(local-guarded). `BTWarpForceUnmask()` on mission-end / no-DropZones. **Peer warp IS wired + visible
|
||||
(`160b78e`):** an observer sees a peer's death/respawn warp — the replicant un-wreck fires the
|
||||
world-anchored `BTStartWarpEffect(x,y,z)` at the peer's position (`MechDeathHandler::Tick`,
|
||||
since the #94 fix triggered by the death-state EXIT edge of the replicated `MovementMode` —
|
||||
cause-agnostic, covers zone-less collision deaths; gated to
|
||||
`ReplicantInstance`; the effect machine is a SINGLE global slot, and since 2026-07-30 the local
|
||||
pilot's own POV lifecycle OWNS it — `BTStartWarpEffect` self-skips while `gWarpPhase!=0 && gWarpPOV`
|
||||
(`[tloc] peer warp SKIPPED`), because a peer's un-wreck landing mid-collapse/wait/expand used to
|
||||
overwrite the machine and kill the POV vortex ("my respawn had no blue whirlwind"). Invisible
|
||||
before the #81 respawn fix only because overlapping respawns barely existed; 2-node bench: 20/20
|
||||
POV collapse+expand pairs, 9 peer spheres played, 11 correctly skipped; `simulationState` rides every update-record header so the observer tracks the
|
||||
peer's state). The ONLY remaining nuance [T3, non-gating]: the observer's peer sphere is anchored to
|
||||
the peer's WORLD position rather than the peer's authentic `DropZoneLocation` (that attribute isn't
|
||||
replicated) — a fidelity refinement, not a missing effect.
|
||||
(local-guarded). `BTWarpForceUnmask()` on mission-end / no-DropZones. **Peer warp RETIRED
|
||||
(#111, 3013cf8, 2026-08-14):** the world-anchored `BTStartWarpEffect` peer sphere (`160b78e`,
|
||||
fired on the replicant un-wreck edge) was a PORT EXTENSION — the authentic effect is POV-ONLY,
|
||||
and the field read a blue bubble on another player's mech as a wrong effect ("should just be
|
||||
the big boom from other POV" — Lynx, night 9, confirmed). Observers now see exactly what the
|
||||
pods showed: the un-wreck model swap itself (pfx cleanup + rebuild + the ungated `[respawn]`
|
||||
receipt all stay; only the sphere call is gone). `BTStartWarpEffect` remains defined,
|
||||
caller-less, as documentation of the one-warp-slot guard; the old drop-zone-anchor nuance and
|
||||
the slot-contention skip are both moot with it. `simulationState` still rides every
|
||||
update-record header so the observer tracks the peer's state (night-16 field receipts: all
|
||||
un-wreck edges clean `mode 9->1`).
|
||||
|
||||
## How it was solved (method) + verification [T2]
|
||||
1. **Dump the real asset** (`dump_tsphere.py`) — established it's a bicone with cylindrical UVs, ending
|
||||
|
||||
Reference in New Issue
Block a user