Gameplay screen with Bloomberg terminal header, candlestick chart, amber session clock, and scrolling ticker tape
Circuit breaker game-over screen with market_halt banner, WCAG-compliant typography, and terminal-style menu
Circuit breaker layout variant with bordered button-style actions for new_session and fed_bailout
Circuit breaker layout with F-key shortcuts for rankings and remove ads actions
Compact circuit breaker layout with condensed menu and action buttons
Gaming · Mobile · SpriteKit

FLASH_CRASH.

iOS game set during the March 2020 S&P 500 crash. Designed the core loop — tap to buy, gravity sells — around a Bloomberg terminal aesthetic with real candlestick physics, channel-based difficulty scaling, and a monetization model that preserves leaderboard integrity.

01
Bloomberg Terminal Aesthetic
Chose a monospace-only, data-dense visual language modeled on Bloomberg terminals — not a generic game skin. Terminal header strip, amber session clock with milliseconds, OHLC candlesticks, and scrolling ticker tape create instant genre recognition for the target audience: finance-adjacent players who get the joke.
Art DirectionTarget AudienceGenre Fit
02
Channel System Difficulty
Six price channels based on real March 2020 S&P levels (2863 → 2663) create a difficulty curve that feels authentic. Support lines are hidden for 1.2 seconds on each new channel — a deliberate surprise mechanic. Trap zones above resistance or below support apply exponential gravity, forcing panic tapping that mirrors real trading psychology.
Difficulty DesignReal DataTension Loops
03
Deterministic Physics Engine
Fixed 60Hz simulation engine completely decoupled from rendering. This was a product decision, not just engineering: deterministic physics enables replay validation for anti-cheat, consistent gameplay across all iOS devices, and reproducible game states — critical for a leaderboard-driven game where score integrity is the retention hook.
Anti-CheatLeaderboard Trust60Hz Fixed Step
04
Dual-Leaderboard Monetization
Rewarded revive (“Fed Bailout”) lets players watch an ad to continue after circuit breaker — but revive runs get a separate leaderboard. Pure runs stay untainted. This preserves competitive integrity while monetizing casual players. $2.99 IAP removes ads entirely and makes revives free.
MonetizationFairnessStoreKit 2
05
Session Length Targeting
Gravity scales from 1x to 3.5x at 60 seconds, up to 10x at 4 minutes. Channels narrow from 100% to 60% over 90 seconds. Anti-bot tap throttling caps at ~20 taps/sec. These tuning levers create predictable session distributions: new players 10–25s, average 45–90s, skilled 2–4min — long enough to hook, short enough to retry.
Retention TuningSession DesignDifficulty Curve
Key Themes
Game Design Real-Time Data Viz
Stack
Swift SpriteKit SwiftUI StoreKit 2 GameKit Google Ads SDK
Workflow
/spec /plan /build /review /ship