SvitsGames

Two Far

Two ships joined by a beam, and the only control is how far apart they are. Too wide clips the walls, too narrow takes the middle bar.

Updated endless-runner / HTML5

Screenshot from Two Far

Two Far is a vertical-scrolling runner with one input. Two ships fly side by side on a fixed line, joined by a beam, and the only thing you control is the gap between them. Obstacles come down the column; fly too wide and you clip the outer walls, too narrow and you take the bar up the middle.

What you do

Widen and narrow. That is the whole control surface: W/S or the arrow keys, the mouse pointer’s height, or a drag anywhere in the lower half on touch. All three are live at once and whichever you touched last wins.

The pair’s centre is pinned to the middle of the column and nothing moves it. Each row of obstacles leaves three gaps — outside the left ship, between the two ships, outside the right — so both extremes are punished and the safe line demands the full range. You are always moving.

Clearing rows builds a chain, and grazing a bar builds it faster. Cross a threshold and everything scores double, then triple, then quadruple, and the scroll speeds up to match; crash while the chain is up and it costs the multiplier rather than a life. That is the trade the game keeps asking about: bank the chain, or push it.

The shape of a run

A run is an endless sequence of sectors. Each is about two minutes of corridor, then a boss, then a choice of one run-long boon from three, then a harder sector. It ends when the lives do — there is no level select and no menu between beats.

Difficulty is one number that climbs with the sector, and everything reads it: the corridor’s fit, the scroll speed, the row spacing, the gaps. It tops out entering sector six, roughly ten minutes in, so the end of the ramp is a plateau rather than a wall.

Obstacles are not scattered and hoped over. The safe path is generated first, as a sum of sines whose steepest slope is known in advance, and the bars are placed around a path the ships can actually fly.

How it’s built

Phaser 4.1.0, TypeScript and Vite, with the code at 417 kB gzipped, Phaser included. The play field is Phaser and draws only shapes; every piece of readable text is DOM, pinned to the play column rather than to the viewport, so it stays legible at any size the browser happens to be.

The devlog has the studio’s working notes on Phaser 4, TypeScript and Vite — written while building Cook Line rather than this one, but they are the traps a browser game here keeps meeting: why Scale.RESIZE can’t use device pixels, what the canvas does mid-rotation, and the base traps in a Vite build served from a subpath.