Skip to content
All posts

Browser RTS games: what actually runs in a tab now

·by Rene Wang·5 min read

Real-time strategy used to be the genre browsers could not have. Here is what changed, what is still hard, and what a browser RTS gets in exchange for the install it never asks for.

For about twenty years, "browser strategy game" meant something you played by refreshing a page. You queued a building, closed the tab, and came back in four hours to see whether it had finished. The real-time part of real-time strategy — hundreds of units moving at once, pathing around a cliff, shooting each other thirty times a second — belonged to installed software, and everyone accepted that.

That is no longer true, and it stopped being true quietly enough that most people missed it. Steel Tide is a full RTS: base building, one resource, land, sea and air, up to six factions, dedicated multiplayer servers. It runs in a tab. No download, no launcher, no account.

This post is about what makes that possible, and what it still costs.

What "runs in a tab" actually demands

An RTS is a simulation with a hard deadline. Steel Tide steps its world at a fixed 30 Hz: every 33 milliseconds, every unit moves, every weapon cooldown ticks, every path is followed, every building spends a little metal. Miss the deadline and the game does not drop a frame, it runs slow — which players feel instantly, because their tanks arrive late.

Rendering is a separate problem on the same budget. The map is a tile grid, the camera zooms continuously, and there are two or three hundred sprites on screen with health bars, muzzle flashes, shells in flight and fog of war over the top.

Neither of those is a little work. The interesting fact about 2026 is that a browser does both without complaint.

What changed

JavaScript stopped being the bottleneck. Modern engines JIT hot numeric loops to something close to native, and a simulation written against typed arrays and flat objects gets most of that. Steel Tide's sim has no runtime dependencies at all — no engine, no physics library, no ECS framework — which means there is nothing between the profiler and the code that is actually slow.

Canvas 2D turned out to be fast enough, as long as you stop asking it for the same thing twice. Terrain is the expensive part of any tile renderer, so it is drawn once per chunk into a cache, composited at 1:1 into a buffer, and scaled exactly once for the camera. Sprites are baked into an atlas at boot in 24 rotation steps, so a tank turning is a different source rectangle rather than a rotated draw call.

Multiplayer moved to authoritative servers. The classic RTS network model is lockstep: every client runs the same simulation and exchanges only inputs. It is wonderfully cheap on bandwidth and it demands bit-identical maths on every machine — which browsers, across vendors and versions, do not promise. So the honest answer is a server that owns the world: it runs the same 30 Hz simulation, and each client is sent a fog-filtered snapshot of what its faction can actually see. Bandwidth costs more; determinism stops being a bug report.

Installing became optional rather than absent. A service worker precaches the shell so the game opens offline, and lazily caches the tens of megabytes of sprites and music the first time they are needed. Add it to a phone's home screen and it launches fullscreen with no browser chrome. It is an app when you want one and a link when you do not.

What is still hard

Background tabs get throttled. A hidden tab's animation callbacks slow to a crawl or stop, so a game loop that assumes wall-clock continuity will resume by simulating the gap and teleporting everything. The fix is unglamorous: pause when the page hides, reset the clock when it returns.

Memory and download budget are real. Forty megabytes of sprite sheets is nothing for a Steam download and a lot for a first visit, which is why Steel Tide's art is generated in code by default and PNG sheets are an optional override that improves it. A browser game that cannot start until 200 MB has arrived is a browser game nobody plays.

Simulation cost scales with the map, not just the army. Four factions of two hundred units each, all moving at once, run at roughly 128 ticks per second on a medium generated map, 86 on a large one, and about 31 on the two biggest hand-built maps — which is to say, right on the 30 Hz the simulation needs and nowhere near comfortable. Big maps are a design decision with a performance bill attached, and pathfinding is most of it.

Two input models, one game. A mouse has a right button, a hover state and a Shift key. A finger has none of those, and it covers the thing it is touching. That is a whole design problem of its own, and the one we wrote about separately.

What you get in exchange

The upside is not only "no install". It is that the game is a URL.

A match link opens the game. A wiki page can read the game's own definition files and never disagree with it. A patch is a deploy — there is no version negotiation, no launcher, and no one playing three builds behind. The same bundle serves a desktop, a phone and a tablet, and a dedicated server can ship the client it serves from the same origin.

For a genre whose audience is genuinely global and often on modest hardware, the ability to say "click this, you are playing in four seconds" is worth a great deal of engineering.

Steel Tide, concretely

Twenty-six units and twenty-four buildings across land, sea and air, with rock-paper-scissors counters that are one honest table rather than a pile of special cases. Skirmish against up to five AI opponents, ten curated maps and a generator, and multiplayer on a dedicated server you can install in one line. It installs to a phone, plays offline against the AI, and costs nothing.

If you have never played an RTS, or you have not played one this decade, start here.

rtsbrowserengineering