Back to game

Design Doc · v1.0 · April 2026

Signal // noise

A 3-minute browser shooter where enemies are sound waves you have to tune into. This doc captures the loop, the tuning targets I chose, the metrics I'd instrument if this shipped, and the v2 roadmap. Written in the format I'd use for any feature spec at work.

TL;DR

Twin-stick shooter built around one twist: enemies are mostly invisible and have a frequency band. Players cycle a tuner (cyan / violet / amber) and matched-band shots do triple damage.

The mechanic forces a constant micro-decision, "is the closest threat worth tuning to, or shoot down the cluster I'm already aimed at?", that creates a richer loop than weapon-pickup variety would, with a fraction of the content cost.

Design Pillars

  1. 01

    Readability over reaction speed.

    The challenge is reading the field, not pixel-aiming. Pulse cycles train anticipation; tuning trades reflex for prioritization.

  2. 02

    One mechanic, deep tuning.

    No weapon pickups, no skill tree (in v1). All variety comes from how you sequence kills. Cheaper to balance, easier to demo, harder to make boring.

  3. 03

    Failure should be readable.

    Every death should be re-runnable in your head: "mistuned for the scrambler, ate the stalker." If players blame the game, we lose the retry.

Core Loop

  1. Move (avoid contact damage)
  2. Watch pulse cycles to locate threats
  3. Tune to dominant nearby band
  4. Fire matched-band shots, build chain multiplier
  5. Re-tune as new bands enter range
  6. Survive 22-30s waves; difficulty escalates speed + density

Tuning Targets

Chosen by playtesting against my own intuition for "feels fair, feels fast." Real shipping product would A/B test these.

Time-to-kill (matched)0.4-0.6s3 hits at 3 dmg, 0.13s cadence, fast enough to feel snappy without trivializing aim
Time-to-kill (mistuned)~5s0.4 dmg/hit. Punishing but not impossible, encourages tuning, doesn't lock you out
Reveal window~30% of cyclePulse curve = sin(phase·2π) clamped, mostly hidden, briefly bright. Trains anticipation, not reaction
Multiplier ceiling×6+1 every 3 same-band kills, decays in 4s. Caps so chains stay readable
Wave duration22-30sLengthens slightly per wave to avoid back-to-back spawn cliffs
Player iframes1.0sGenerous, early-game mistakes shouldn't snowball into instant death

Enemy Roster

Drifter

Filler

Weaves toward player. Slow pulse (0.45 Hz). Easy to read.

70 pts

Stalker

Pressure

Direct chase. Faster pulse. Forces the player to keep moving.

100 pts

Scrambler

HUD threat

Orbits at distance. Pulse scrambles your HUD with red interference. Wave 3+ only.

250 pts

Metrics I'd Instrument

If this were a real product, these are the dials I'd watch on day one. Targets are starting hypotheses, not promises.

D1 retention proxy>40%

% of first-session players who start a second run within 60s of game over

Wave 3 reach rate>35%

% of runs that survive past wave 3, early-game tuning balance check

Tuning swap frequency0.5-1.5/sec

Median band-changes per second of play. Too low = enemies too clustered. Too high = tuner too punishing

Mistune ratio10-25%

Off-band shots ÷ total shots. The desired range for 'feels intentional, not perfect'

Multiplier engagement≥30% of runs reach ×3

Confirms the chain mechanic is actually pulled into the moment-to-moment, not just an idle stat

Roadmap

v1.0

Shipped

Three bands, three enemy types, wave progression, multiplier system, audio feedback, leaderboard local-storage.

v1.1

Game feel polish

Hit-stop tuning, screen shake easing curves, controller support, mobile twin-thumb layout.

v1.2

Run variety

Pickups (auto-tune for 3s, frequency lock, double-fire). Wave modifiers (silence rounds, frequency lock-out events).

v2.0

Meta progression

Persistent unlocks: alternate weapons (chord-fire that hits two bands), starter perks. Daily seed leaderboard.

Risks & Mitigations

  • First-session legibility. The tuning mechanic is non-obvious. Mitigation: forced tutorial wave with one color of enemy and an inline prompt to switch bands.
  • Audio dependence. Players without sound lose context. Mitigation: visual pulse already carries primary information; audio is reinforcement, not signal.
  • Tuner fatigue. Cycling bands every 2s could feel chore-like. Mitigation: monitor swap-frequency metric; if median exceeds ~2/sec, reduce band variety per wave.

Why I Built This

Saying "I love games" is the cheapest claim in the industry. Building a small game with a real opinion about why it's built that way, the tuning calls, the failure modes, the things I'd measure if it shipped, is a more honest signal, and a more interesting thing to talk about.

Shipped in roughly a day with Next.js + HTML5 Canvas + Web Audio. No engine, no bought assets, no AI-generated art. The constraint was the point.

© 2026 Franklin ChengBuilt with intention