Tidal Works art enrichment — frozen candidate

Branch feat/tidal-works-art-enrichment · candidate 0bdc32244095db2dbed0f6c2461f77044ab2efe3 · base a719285 (published release) · not pushed, merged or deployed · local preview: 127.0.0.1:5214/?arena=tidalworks&graphics=high (also balanced, low)

Jump to before / after images

What changed, and why

Tidal Works felt simplified next to Stormbreak Harbor. Stormbreak's sense of place came from named buildings, equipment that explains each building's job, and moving water. This pass brings those back with restraint. Detail goes where it tells you where you are and what the place does. Combat surfaces, the Arc and the open floor stay calm.

Before / after (matched cameras)

Suit Bay H-01 interior, high

before
after

Powerhouse turbines (north faces), high

before
after

Powerhouse switchgear row, high

before
after

Powerhouse control room, high

before
after

Quay Shed back wall, high

before
after

Dam crest (winch cable drum), high

before
after

Identity signs at play distance, LOW quality

before · Powerhouse east gate
after
before · Powerhouse south gate
after
before · H-01 gate
after
before · barrage gatehouse
after
before · harbour lift
after

Centre and overview stay calm (high)

before · atrium
after · atrium (unchanged on purpose)
before · overview
after · overview

Quality tiers (after)

Low keeps the identity layer: all six main signs in solid strokes, plus the suit-cradle arc rings. Balanced adds the interior equipment and flowing water. High adds LED-gap lettering, door labels, trusses, shelving and fine seams.

low · suit bay
balanced · suit bay
high · suit bay
low · H-01 gate
balanced · H-01 gate
low · switchgear (plain on purpose)

Barrage water — consecutive frames

Fixed camera at the west spill fall; frames are about 2 s apart in wall-clock time (headless screenshots are slow).

high f00
high f01
high f02
high f03
high f04
high f05
low f00
low f01 (identical)

How it works: one texture-offset write when the fall mesh renders, the same single-owner hook Stormbreak's dam uses. The flow texture is created by each arena build's own material set, so it never alters other water or another build. Tests check that two builds get distinct textures, that the offset advances, and that low has no hook.

Hero visibility in dressed areas

Both heroes, chase camera, in the suit bay, turbine hall and Quay Shed, on high and low. The cyan cradle ring and switchgear lamps don't wash out either hero. Combat warning rings sit on floors that this pass leaves unchanged; the only new floor marking is the small service outline inside each hangar.

high · Iron Man · suit bay
high · Thor · turbine hall
high · Thor · Quay Shed
low · Iron Man · suit bay
low · Thor · turbine hall
low · Iron Man · Quay Shed

Cost (measured)

TierArt meshes (built)Approx. colour draws if all roles visible*Art trianglesBudget (meshes / tris)Build time, warm (node)
High24 (was 24)~2637.7k (was 24.9k)30 / 50k~267 ms (base 266–270)
Balanced24 (was 24)~2616.1k (was 9.0k)28 / 20k~157 ms (base 102–125)
Low12 (was 12)~137.7k (was 4.7k)14 / 8k~89 ms (base 79–87)

* The waterfall body and foam are transparent and double-sided, so each takes two colour passes; shadow passes on high come on top. Renderer telemetry at the matched practice view shows identical draw calls before and after: 34/42 high, 33/41 balanced, 25/33 low (Thor/Iron Man). Renderer geometry and texture counts are also identical, so there are no new textures. No new materials, roles or asset files; the dressing is one new source file. The per-frame addition is one texture-offset write (high and balanced).

Real game-loop frame interval, p50 (uncapped headless)Baseline a719285Candidate 0bdc322
High · Thor / Iron Man4.4 / 4.6 ms4.5 / 4.6 ms
Balanced · Thor / Iron Man3.4 / 3.9 ms3.9 / 4.2 ms
Low · Thor / Iron Man3.6 / 3.9 ms3.3 / 3.7 ms
In-run control: Stormbreak high · Thor12.0 ms12.4 ms

This compares frame cost between builds on this Mac (M4, headless Chromium, frame cap and vsync off, 3 s windows). It is not native-window FPS, and not a network or 8–10-player measurement. Host pacing differed between the two runs (blank-control p50 41.7 vs 0.2 ms); the Stormbreak control matched, so compare p50 only. One candidate p95 outlier (balanced/Thor 66.9 ms) matches the host-stall pattern seen on the blank control.

Verification at exact SHA 0bdc322

GateResult
Static layout and art (node)271/271: budgets per tier, per-piece honesty, negative fixtures, water ownership/scroll/low-static, coplanar 0 remaining, BVH name contract, spawns 10/5, routes data
Collision identityFull collision signature hash (names, transforms, bounds, counts) 5b9e6ae7a7b18142, identical to baseline a719285 on high, balanced and low. Lifecycle hash identical across qualities and visits.
Lifecycle (browser)7/7: arena/quality switching, no geometry/texture growth over repeated visits, old Stormbreak intact, no page errors
Play: camera, cover, bursts (browser)170/170: 22 camera tight spots × 8 directions × 2 heroes, all cover cases, 10 consecutive-frame bursts
Production build, git diff --checkbuild passes; clean
Not rerunRoutes, combat, spawns and multiplayer. The collision signature matches the baseline and nothing touches gameplay, server or protocol, so their earlier receipts still apply.

How honesty is checked. Every art piece is recorded with a class (collision shell, water, ramp trim, outside the play area, or auto) and checked individually; no material is exempt.

Old issues the stricter check found and fixed:

Limits and remaining taste judgements

Files