How the arcade gets built
Build notes, design decisions, and live experiments â written as we go, by the team that writes the code.
High scores without accounts: your best score never leaves your device
Why the arcade has no sign-ups and no server-side leaderboard: localStorage bests, the cheater problem every client-side leaderboard inherits, and competing with yesterday's you.
Touch, keys, or thumbs: designing controls that work everywhere
How each game earns its controls: touch-drag that keeps fingers off the action, honest swipe detection, one-button purity, and why Sky Runner draws its D-pad below the play area.
Iron Shore build notes: our first 3D game, and Three.js in two files
Why our first 3D game still ships with no bundler: Three.js vendored as two files, terrain the renderer and simulation share as one function, pooled soldiers and tracers, and the frame budget that keeps phones smooth.
Photon Tap build notes: a reflex game with no canvas at all
Why sixteen divs beat a render loop, difficulty as four smooth curves, decoys that punish autopilot, and the hidden-tab fairness rule.
Star Hopper build notes: designing a fair one-button game
Tuning gravity against thrust, shrinking gaps instead of exploding speed, asteroid columns from sine waves, and hitboxes kinder than the art.
Circuit Serpent build notes: why snake is still a perfect game
Fixed-tick movement on a variable-frame loop, the two-turn input queue, honest swipe detection, and a gold packet that teaches risk.
Nova Strike build notes: faking a GPU with a 2D canvas
How we built our arcade space shooter: additive-blend glow, cached gradient sprites, screen shake with rules, autofire as a design choice, and sound synthesized from zero audio files.
Neon Breaker build notes: brick-breaker physics in one evening-sized file
How we built Neon Breaker: paddle-angle steering, choosing the bounce axis from overlap depth, combo multipliers, and a synthwave look done entirely in canvas.
Tile Fuse build notes: the mystery puzzle was a merge game all along
How we built Tile Fuse, our sliding merge puzzle: grid logic that resists edge-case bugs, DOM tiles versus canvas, animation timing, and honest swipe detection.
Why our games ship with no frameworks, no trackers, and no downloads
The engineering philosophy behind the arcade: vanilla JavaScript, single-file games, a first-party counter instead of analytics suites, and pages lighter than a photo.
We pointed a 1.2-million-follower Facebook page at one small browser game
Field notes from a live traffic experiment: sending posts from a large Facebook page to Sky Runner, measuring with a first-party counter, and what link truncation taught us.
Designing an arcade that doesn't look like every other arcade
The design system behind onesmallgame.com: a deep-navy base, terracotta and sky-blue accents, CSS-only clouds, and why every thumbnail is inline SVG.
Building Sky Runner: a canvas endless-flyer in plain JavaScript
How we built Sky Runner, our 90-second browser flying game â one canvas, one file, no engine â and what we learned about difficulty curves and touch controls.