Why our games ship with no frameworks, no trackers, and no downloads
Every game in this arcade is a single HTML file of handwritten vanilla JavaScript. No React, no game engine, no npm folder with nine hundred strangers in it. People occasionally ask if that's nostalgia. It isn't â it's policy, and it comes straight from our client work.
Dependencies are debt
Our studio maintains websites for a living, and the sites that hurt are never the hand-built ones â they're the towers of third-party code where a single abandoned plugin takes the whole thing hostage. So we build custom, everywhere, including here. When a game misbehaves, the entire suspect list is one file we wrote ourselves.
Fast is a feature you can feel
A game here weighs less than a single photograph on most websites. There's no bundle to parse, no framework to boot â the time between tapping a Facebook link and dodging your first drone is about a second on a mid-range phone. For casual games the load time is the first level: lose the player there and the gameplay never gets its turn.
Measurement without surveillance
We wanted to know if anyone plays â that's fair. What we didn't want was to bolt a surveillance suite onto a toy. Our compromise is a first-party beacon: the game pings our own server with an anonymous event ("page view", "game over, score 4200") and the server writes a log line. No cookies, no fingerprinting, no data leaving our machine. A small script aggregates the log into a private dashboard. That's the whole analytics stack, and it answers every question we actually have.
The browser is a spectacular console
Canvas rendering, requestAnimationFrame, touch events, localStorage for high scores â the platform ships everything a small arcade needs, for free, on every device your players already own. The web gets called slow because we keep shipping it slow things.
Judge the results yourself: Sky Runner, Neon Breaker, Tile Fuse. View source on any of them â that's the honest portfolio of how we build.