Net victory screen + Cliffs teleport pads in networked matches - #262
Merged
Conversation
…hange Networked matches now end with the victory screen v2 instead of just the winner banner, on host and guest alike: - VictoryScreen: the solo arena's screen extracted into one reusable component (ribbon + IS VICTORIOUS!, nav-switched ranking sheets on the plaque, styled button bar); Arena3DScene now feeds it its BattleStats sheets and buttons — same nodes, same look. - NetMatchStats (pure C#, TDD): both roles book the same per-tank hp stream (host from its world each tick, guest from every snapshot), so final standing, damage taken and repairs derive identically on every peer — zero protocol change, no stats bytes on the wire. - NetArena3DScene: on round decide both roles raise the screen ranked from that book; the card carries the online affordances (lobby host: Rematch sending the same lobby command; everyone: Leave) and the corner buttons hide beneath it. Return-to-room on the rematch reset unchanged. - Locale: stats.standing + net.team_label (EN/ES/DK). - Tests: 6 xUnit NetMatchStats + 3 GoDotTest end-of-match scene tests; full suites green (xUnit 695, GoDotTest 190). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The net arena never gave its host tanks a teleporter, so pads that work in solo play were inert cabling in a networked match. Now: - AuthoredTeleporter (GameLogic): the shared pad derivation — authored cell links + grid layers -> world-space Teleporter pads — used by both Arena3DScene (refactored, no behaviour change) and NetArena3DScene, so every peer derives identical pads from the shared map resolution. ZERO wire change: warps ride the existing snapshot position/layer. - NetArena3DScene: host tanks get the teleporter (warps resolve inside the authoritative World.Step), pad cooldowns age per fixed tick, both roles render the pad rings, and SyncLocalFromPrediction now copies the predicted Layer so a guest's own cross-layer warp lifts its tank view. - Guest prediction needs no fix: Reconcile hard-snaps to authority and replays unacked inputs from the destination, so a teleport-sized jump lands cleanly (characterised in PredictedTankTests). Tests: xUnit AuthoredTeleporterTests (3) + PredictedTank teleport-jump reconcile; GoDotTest: net Cliffs pad rings, end-to-end relayed-tank warp across the map and up a layer, guest own-layer sync. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Vodkadav
pushed a commit
that referenced
this pull request
Jul 17, 2026
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Vodkadav
added a commit
that referenced
this pull request
Jul 17, 2026
* PROGRESS: record 2026-07-17 parallel batch (SFX overhaul, net victory screen, net teleport pads, perf check) Three branches pushed pending owner merge + SFX ear-check; perf verdict recorded. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * PROGRESS: cite PRs #261/#262 for the 2026-07-17 batch Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Daniel Machado <au280502@uni.au.dk> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two stacked slices from the 2026-07-17 parallel batch (the teleport-pads branch is based on
feat/net-victory-screen, so this PR carries both; squash-merging it closes both items andfeat/net-victory-screenneeds no separate PR).Net victory screen (8c57885)
NetMatchStatsbooks per-tank hp identically on each peer (host from world tanks, guest from snapshots), so rankings agree everywhere. Worker untouched.VictoryScreencomponent (Arena3DScene−399 lines).Cliffs teleport pads online (6ef28e7)
teleporter:— pads simply did not exist in the authoritative net world. New sharedAuthoredTeleporterderivation used by solo and net scenes.TankStateX/Y/Layer — zero wire change.PredictedTankreconciliation handles the jump natively (characterised by a new test); fixed a real guest bug where the local view-model never syncedLayer(own cross-layer warp rendered at valley elevation).Verified independently: xUnit 14/69/562/54; headless GoDotTest 193 passed / 0 failed (S2 alone: 190/0).
🤖 Generated with Claude Code