Thermal rest
Thermal rest is a GPU-load reduction window that activates during reward screens between mission segments. While the player is choosing a card, the engine stops running the full 22-pass render pipeline and instead blits a single cached snapshot of the frozen game scene, dims it, and redraws only the HUD (reward cards) on top at 60fps. The result is roughly a 90% drop in GPU work during natural breaks, which gives the device time to shed heat before sustained gameplay resumes.
The name comes from device telemetry rather than any in-fiction system: phones running the game hit thermal throttling at around 35 seconds of sustained full-pipeline rendering. A typical run contains 3–5 reward breaks, each lasting several seconds, providing 15–50 seconds of cumulative cooling time across the run.
Trigger conditions
Thermal rest is gated on the reward screen being active — conceptually, when either isRewardActive() returns true or game.currentReward is set. The flag _thermalRest in bridge.ts and its mirror field thermalRest on the phase state (bridge-phase-state.ts) gate both the snapshot capture and the snapshot blit.
As of a4de4152, thermal rest is disabled in code pending more testing. The snapshot approach caused black screens on the first reward frame: the scene needs to render once to produce a snapshot, but _thermalRest was being set true before that snapshot existed. The fix (a 1-frame delay before activation) is a TODO. The wiring is intact and the flag is forced to false at the top of each frame.
Duration
Thermal rest lasts exactly as long as the reward screen is open. There is no fixed timer — the moment the player picks a card and the reward state clears, _thermalRest falls to false on the next frame, the cached snapshot is released (_thermalRestSnapshot = null), and the full render pipeline resumes. Snapshot capture happens at the very end of the first reward frame so the next frame has something to blit.
UI signal
There is no explicit on-screen indicator for thermal rest. It is a transparent optimization — the player sees only the standard reward UI over a slightly dimmed (alpha 0.3) snapshot of the moment combat paused. The dimming serves a UX purpose (making the reward cards pop) and doubles as the only visible cue that the frozen scene is a cached image rather than a live render.
Related
- Fire pipeline — what stops drawing during rest
- Action catalog — reward-card actions that trigger the rest window