About

Anxiety — they form up first, quietly and in full view, then come at you a few at a time, and never the few you were watching. Built from scratch in vanilla JavaScript: no frameworks, no build step, no dependencies. It installs to your home screen and plays fully offline.

How to play

A hive of thirty-six flies in, settles into formation, and then starts coming at you a few at a time. Clear every one of them to finish the stage. You have three ships.

Shoot the ones that are moving

An enemy sitting in formation is worth half what the same enemy is worth while it is diving at you. That is the whole game: picking off the formation is safe and cheap, and waiting for something to commit is dangerous and pays double.

The tractor beam

Every so often a boss drops to the middle of the field and opens a cone of light. If your ship is standing in it when it closes, the boss takes your ship and you lose a life. The beam is a cone rather than a column, so you can outrun it sideways — but only if you start moving before it opens.

A captured ship rides under its captor and comes back into formation with it. You can get it back, and how you do it is the one rule worth learning:

A dual fighter is not strictly better. It fires twice as much and it is twice as wide, which means twice as easy to hit.

Keyboard controls

Mouse and touch

Drag anywhere on the playfield to fly. The drag is relative, not absolute: the ship moves by however far your finger moves, from wherever you started. That is deliberate — the field is portrait, so a thumb placed on the ship itself would cover the part of the screen you most need to watch.

Auto-fire is on by default. It is never faster than holding the trigger, because the gun has a fixed cooldown either way; it is there so steering and shooting do not need the same thumb. On-screen arrows and a Fire button are available for anyone who turns dragging or auto-fire off.

Settings

Difficulty changes how often the hive attacks and how much it shoots — never how fast your ship moves. It applies to your next game rather than the one in progress, because it changes what a score means.

Notes

The sprites are not image files. Every ship in the game is written out as text in the source, one character per pixel, and painted into a canvas when the page loads. That keeps the whole game free of binary assets, which means there is no image that can fail to download and take the game down with it.

Enemies fly along curves rather than straight lines. Each path is a spline that gets sampled once when the page loads and then followed by distance, so everything moves at a constant speed through the tight parts of a turn instead of stalling in them.

Scores are yours: local ones stay in this browser, and the global board only ever sees a name and a number.

Play