lynxy.io

Guides · Behind the scenes · 7 min read · 18 October 2026

Sixteen browser games without a game engine

Every game on Lynxy is written by hand in plain HTML, CSS and JavaScript. There is no game engine, no framework, no build step - and in most games not a single image or sound file. Sixteen games in, here is what that approach is good for, what it costs, and the small lessons that only show up once real people start playing on real phones.

The games on Lynxy
16 games - free in your browser, no download, no sign-up. Browse the games

Why no engine

Game engines are wonderful, and for a big 3D game we would use one. For small games that should open the instant you tap a link, they bring a lot of weight you do not need: a runtime to download, a loading screen, a canvas that does not quite behave like the rest of the page.

Without one, each Lynxy game is a single page. Its code, styles and markup come to somewhere between 50 and 190 KB before compression, depending on the game, plus about 30 KB of shared code for the whole site - the top bar, the cookie banner, the theme switch. That is less than a single photo on many news sites. On a slow connection the game is playable about as fast as the page appears.

It also means the games keep working. There is no server behind them, no account, no database. Your progress lives in your own browser's storage. If Lynxy's server disappeared tomorrow, a game you already had open would carry on.

Drawing everything in code

Most of the games draw their graphics themselves, at the moment they are needed. The bricks in Nova Bricks, the gems in Gem Cascade, the asteroids in Star Prospector and the whole world of Lynx Run are painted on a canvas by JavaScript. Maria and the Missing Coder goes furthest: its characters are stored as little maps of letters, one letter per pixel, each letter a colour from a palette. Maria herself is 14 by 16 such pixels. Her animations are the same picture with a few rows swapped, and Maria glowing from an energy drink is the same picture in a different palette.

Drawing in code has two big advantages. Everything is sharp at any screen density, because it is drawn at the device's own resolution rather than scaled from a fixed image. And a dark theme is nearly free: the colours are variables, so night in Lily Leap or Lynx Run is the same drawing with a different palette - plus a few headlights and stars.

The cost is that every visual idea has to be expressed as code. A glossy bevelled brick is a gradient, a highlight and a shadow, drawn once per colour and size and then reused. A gem in Gem Cascade is a set of facets in its own colour and cut, painted onto a canvas. It takes longer than drawing a picture - but the result is a few lines of text rather than a file to download.

Sound without sound files

The same goes for sound. There are no MP3 files in the games. Every effect is synthesised on the spot with the browser's Web Audio interface: an oscillator, a shape, a short volume envelope. A jump in Maria is a rising square wave; a laser shot is a falling sawtooth with a little noise; collecting coffee is two quick blips. The music in Maria is a bass line and a melody scheduled a moment ahead, in six themes. Pipe Flow's water makes a bubble sound that climbs in pitch as the board fills.

Every game is checked by a program

The part of the work players never see is testing. Almost every game has a tool that plays it, solves it or simulates it before a release:

The guides on this site go into several of these in detail. The common thread is that “it seemed fine when I played it” is not good enough for a puzzle. A level that is impossible one time in fifty will eventually reach someone who spends twenty minutes on it, and they deserve better.

Small lessons from real phones

Some of the most useful details in the games are tiny, and almost all of them are about phones:

Names are harder than code

One lesson had nothing to do with programming. Three games started life under working titles that belonged to someone else - the falling-block game, the brick breaker and the space miner - and were renamed Block Drop, Nova Bricks and Star Prospector. Game names are trademarks, and a small independent site has no business using someone else's. Every game here is our own: the code, the graphics, the sounds, the characters and the names.

What we would do the same way again

Almost everything. Plain pages have aged well. They load fast, a game that is already open keeps working without a connection, and anything that goes wrong can be fixed by reading the code that is actually running - there is no layer of tooling between the problem and the fix. The one thing we would do earlier is the testing. Once a game has a solver or a bot, every change becomes safe to make: change one rule, run the tool, and within a minute you know whether a level somewhere just became impossible.

If you have an idea for the next game, or a bug in one of these, we would like to hear it. The contact page says how to reach us.

← All guides