Work
A pixel-art platform fighter that runs right here in the browser: thirteen warriors knocking each other off the screen in a Washington, D.C. overrun by a dark realm, for up to four players and CPUs.
- Role
- Design & code
- Year
- 2026
- For
- Personal project
- Type
- Game, Pixel art, Web
- Built with
- TypeScript, Three.js, Web Audio
- Players
- 1–4 + CPUs
- Fighters
- 13
- Arenas
- 13
Screenshots







Knockback is a platform fighter in the tradition of the games I grew up on: warriors in the mould of Mortal Kombat's, fought the Smash way. There's no health bar. Every hit adds to your percent, and the higher it climbs, the farther the next one sends you, until one knocks you clean off the screen. Thirteen fighters settle it in a Washington, D.C. overrun by a dark realm: on the causeway of the Reflecting Pool under a blood moon, on the roof of a Metro train, in the Cathedral's belfry in a storm, and in the realm itself.
It runs right here in your browser, so there's nothing to install: play on a keyboard, two people on one keyboard, with up to four controllers, or on a phone turned sideways with touch controls.
What's in it#
Thirteen fighters — warriors, ninjas, sorcerers, cyborgs, a four-armed giant and a guest from Clutch — each with about forty-eight moves: combo strings, tilts, smashes, aerials, four specials (and a stronger version of each), grabs, throws and a huge uppercut
A three-bar meter that fills as you fight, faster when you're the one taking the hits: one bar for an enhanced special, two for a Breaker that bursts out of a combo, three for a Deathblow that slows time and closes in when it connects
Twelve arenas and a secret one, each in three forms (its own layout, three platforms or one flat stage): the Reflecting Pool, a Metro train, Memorial Bridge, the Cathedral's belfry and the city's rooftops; in the realm, the Proving Ground's stone ring among the stars, the Colosseum, the acid vats, the chasm, the whispering wood and the frozen monastery; and Clutch's desert town, seen side on
Versus for up to four players in any mix with CPUs at nine levels, in stock, time or stamina, with teams, items and handicaps
The Tower, a ladder of about eight fights: a mirror match, an endurance round, a Test of Strength between some fights, a sub-boss, a warlord on his throne and an ending for every fighter — and something waiting at the very top
Practice, with hitboxes, frame-by-frame play and every move's frame data, and the minigames: Test of Strength, Distance, Ten Targets, Shades and the Gauntlet
Finishers without gore: when the last stock falls, FINISH IT! — a Finisher, a comic Encore, or simply walk away. Hits spark; nothing bleeds
Challengers to beat for their unlocks, the Vault (coins from playing open costumes, palettes, music and art; nothing to buy) and the Collection: records, move lists, a jukebox and replays of your last matches; your progress is saved
How it's built#
Everything is made in code. The fighters are modelled, rigged and animated in 3D, then printed into pixel art every frame, so they move as fluidly as a 3D game and still read as hand-placed pixels; the arenas are painted in layers, from the far sky to the stones under your feet; every sound and every track of music is synthesized when the game loads. The match itself is a deterministic simulation at 60 steps a second with no graphics attached: the same inputs always make the same match, frame for frame. That let me play thousands of CPU-vs-CPU matches to tune the fighters, it makes a replay nothing more than the buttons pressed, and it's what online play will build on. Three.js draws the fighters; the Web Audio API makes every hit, whoosh and drum.
How to play
- W A S D / arrows
- Move
- Space
- Jump
- J
- Attack · tilts · aerials
- K
- Special
- L
- Smash attack
- Shift
- Shield · dodge · roll
- I
- Grab · throw
- Shift + K
- Enhanced special (1 bar)
- Shift + J
- Breaker, when hit (2 bars)
- Shift + I
- Deathblow (3 bars)
- T · Esc
- Taunt · pause
- Controllers
- Up to four · A attack · B special