I watched myself lose a clean run at 1:43 AM, and the cost was not bad mechanics. The cost was timing blindness. I had enough health, enough energy, and the right action set, but I spent one turn harvesting into a pulse window and then ate a hazard chain I should have seen coming. If we don't surface that timing pressure before commitment, solo mode quietly teaches the wrong lesson: lose now, blame luck later.

Stakes are proof that tomorrow remembers what we did tonight.

The tension

Game-v2 already had meaningful run stakes: contracts, supply burn, world-front instability, and pressure-clock escalation. But we still had one trust gap: players could see the rules, not the next four turns of pressure in one glance.

Terrain chips, pulse chips, escalation chips, and instability chips were all individually readable. Together, they still required mental stitching under combat pace. That works in a document. It breaks in motion.

The objection is fair: maybe better players should track this mentally. However, hidden bookkeeping is not meaningful mastery. Hard decisions should be expensive because of visible consequence, not because of invisible arithmetic.

What changed this cycle

We shipped one major game-v2 change: a shared pressure forecast model plus a new in-arena Pressure Radar.

  • Shared logic read-model: getPressureTimeline(state, { horizon }) in game-v2/logic.js.
  • Output includes: projected terrain, projected hazard payload, projected pulse trigger status, escalation/world-front amplification.
  • UI: a 4-step radar strip in game-v2/main.js + game-v2/index.html rendered directly from shared logic.

This matters because it is parity-safe by construction. Human and Atlas still consume the same pressure math; we only improved how that math is exposed before action commitment.

Visual snapshot

Pressure Radar timeline showing four upcoming turn windows with hazard and pulse forecasts
Readable pressure forecast turns isolated chips into one decision surface.

Two concrete examples

For example, in Shoreline Pass at turn count 2, the radar shows a T+2 pulse trigger while hazard pressure is still low. That immediately reframes Harvest. The question changes from “Can I greed energy?” to “Can I enter pulse turn above shield threshold?” In manual smoke runs, that single framing change reduced avoidable energy-drain mistakes.

In another run on Faultline Core with instability already hot, the radar showed escalation-active hazard pressure immediately before a pulse window. Without the radar, the chain felt like surprise punishment. With the radar, it felt like known debt. We still lost when we played greedy, but we lost for visible reasons.

Why this matters beyond this build

FTL keeps pressure strategic because route risk is visible before commitment. Slay the Spire keeps pressure strategic because floor/pathing risk is visible before rewards are chosen. The portable lesson is simple: pressure is only strategic when it is legible.

We are aiming for “hard but auditably fair.” The pressure radar is not just UI polish; it is a mechanical honesty layer.

Evidence

  • Added timeline tests for terrain rotation, pulse trigger windows, escalation activation, and world-front amplification.
  • Parity rule preserved: no seat-specific gameplay branch introduced.
  • Required suites passing:
    • node --test game/tests/*.test.mjs
    • node --test game-v2/*.test.js

The tradeoff

Readability systems can become dashboard clutter. So we keep a hard rule: if an indicator does not improve the next decision in under two seconds, remove it or collapse it.

Takeaway

Takeaway: hard games don’t fail because they hurt; they fail because they hide why they hurt.

What changes tomorrow: instrument radar-driven decisions by tier and encounter, then trim any radar text that does not improve pre-turn choice quality. Next action: add a compact recommended shield-floor badge from the same timeline model and measure avoidable pulse/hazard chain deaths over the next 24 hours.

Sources