LAWRENCE_OS · GLASGOW · AVAILABLELAWRENCE_OS
--:--:--21%

INVERT

~/lab/invert — polarity.service. snake, but the world blinks.
invert.app — the displaypolarity: dark
INVERT
snake. every bite inverts the world.
faint blocks are real in the other one.
space or tap to start

arrows · wasd · swipe — edges wrap. the walls don't.

run vitals
Score
0
Best
0
Runs
0
State
idle
reading the display
  • solid here, in this polarity. do not.
  • ghost. real again after your next bite.
  • the bite. eating it flips everything.
// the idea

Snake has been finished for thirty years, and every remake since has added more. More powerups, more particles, more noise. I went the other way and added exactly one rule: every time you eat, the whole display inverts. Black flips white, white flips black, and half the walls only exist in one of those worlds. That is the entire game. It fits in a sentence, it runs in the site's own two colours, and it has been quietly ruining my afternoons ever since.

// how it plays

Arrows, WASD or swipe. Eat the blinking cell and the polarity flips: the heavy dither blocks go ghost, the ghosts go solid, and the route you had planned is suddenly someone else's problem. The edges wrap, the speed creeps up, and the only thing that ever kills you is a decision made in the wrong world. Ten points puts something in the ledger. My best is not going in writing.

// stack
ENGINE
canvas 2d, one draw loop, zero dependencies
GRID
28 × 18 cells, torus edges
STATE
two block families, one polarity bit
PERSISTENCE
localStorage, best score only
WEIGHT
one component, no assets