← Back to Portfolio

Precision Game

Deadcenter

Stop the dot.

A browser precision timing game. One input, 12 levels, four tiers: Warmup through to Impossible.

React 19
JavaScript
Vite 8
Web Audio API

Deadcenter is built around one rule: stop a moving dot as close to the target as possible. One click, one tap, one press of Space. Your score grades how close you got: Dead Center (90–100) down through Sharp, Decent, and Shaky, to Needs Work.

Twelve levels span four tiers: I, II, III, and ∞. Each introduces movement patterns that change the challenge completely. The early levels ease you in with steady bounces and sine drifts. By Impossible, you're chasing a near-invisible ghost dot through patterns that shift faster than you can read them.

Built with React 19 and the Web Audio API. The synth soundtrack, written without any audio library, intensifies tier by tier, keeping the atmosphere tight without a single UI cue. Press Space from the menu and you're straight in.

A run builder lets you pick individual levels or full tiers, so each session can be a casual warmup, a personal record chase, or a grudge match with the level that got you last time.

What it does

Key features

One mechanic

Click, tap, or press Space. One input to stop a moving dot as close to the target as possible.

12 levels, 4 tiers

Warmup, I, II, and Impossible. Movement patterns escalate dramatically — the rules stay the same, everything else changes.

Precision scoring

Dead Center (90-100), Sharp, Decent, Shaky. Every stop graded to the nearest millisecond.

Web Audio synth

Soundtrack written with the Web Audio API. Intensifies per tier with no library in the chain.

Level Select

Screenshots

12 levels. 4 tiers. One input.

Deadcenter - main menu
1 / 7

Main Menu

The single input constraint meant every layer of depth had to come from level design, not controls. The momentum system scales dot speed up to 4× on Impossible, so the same gesture that works on level five is completely unreadable by level fifteen. The rules don't change. Everything else does.

Audio is written directly with the Web Audio API, with no library in the chain. That kept the bundle small and gave precise control over how the synth shifts between tiers. The soundtrack isn't background music, it's paced to match difficulty, so the tension builds without any UI signalling it. The entire game lives in a single App.jsx file, which kept iteration fast and the build minimal.

Day mode and a mute toggle keep it usable in different settings. The spacebar shortcut, which skips the menu and launches straight into play, was a deliberate call: the fewer steps between deciding to play and actually playing, the better the experience feels.