Photon Tap build notes: a reflex game with no canvas at all
Photon Tap is our purest game: sixteen pads, photons that fade in about a second, red decoys you must not touch, three lives. It's also the second game in the arcade (after Tile Fuse) with no canvas element at all â and that was the right call twice.
Sixteen divs beat a render loop
A reflex game needs three visuals: light up, fade bar, satisfying pop. All three are what CSS does natively â a class toggle swaps a radial-gradient background with a glow shadow, a scaled div is the fuse bar, and a 220ms keyframe is the pop. The browser's compositor animates it all off the main thread, tap targets are real elements (so hit-testing is free and accessible), and the entire game logic fits in a screen and a half of JavaScript. Canvas would have re-implemented all of that by hand for zero gain.
Difficulty is four curves, not levels
Nothing in Photon Tap announces a level-up. Four values slide smoothly with time and score: how long a photon burns (1.15s down to 0.55s), how often one spawns, how many can burn at once (one, then two, then three), and how likely a decoy is (10% up to 30%). Smooth curves mean the game is always exactly as hard as your run has earned â there's no wall, just a slope that eventually outruns you. Ten seconds of that slope is enough for a player to feel their own ceiling, which is the entire loop.
Decoys exist to break autopilot
Tap-the-light alone becomes rhythm, and rhythm becomes autopilot â hands answering flashes without the brain voting. The red decoy taxes exactly that: it looks identical in your peripheral vision for the first few milliseconds, so every tap needs one bit of verification. Watching testers, almost no lives are lost to slow fingers; they're lost to fast fingers on the wrong pad. One rule, and the game tests attention instead of twitch.
Combo math that makes greed rational
Each catch pays 10 Ã combo, combo caps at Ã9, and any miss resets it. The cap matters: an uncapped multiplier makes one deep run unbeatable and every other session pointless. Capped, a careful player at Ã9 out-earns a frantic one at Ã3 â but protecting Ã9 at high speed with 30% decoys is the hardest thing in the game. The score rewards exactly the skill the game is about.
Hidden tabs shouldn't kill you
Reflex games have an ugly edge case: switch tabs and return, and every lit photon has silently expired â three lives gone to a phone call. When the page hides, we simply clear all lit pads, uncounted. It's four lines. Small fairness details like this are invisible when right and rage-inducing when wrong.
Catch the first photon â and remember: red means freeze.