Wu Wei · GBA build · 4 Oct 2026 · runs locally

無為 WU WEI

A parry-only side-scroller about yin and yang, rebuilt as Game Boy Advance-style pixel art. Every blow you deal was first given to you.

Bamboo Pass. The glint is the tell; parry, store a trigram, dash through.

What changed

  • Native 360x240 (GBA pixel density, 50% more view), integer-scaled.
  • One 51-colour RGB555 master palette, at most 15 colours per sprite, with a day/night palette swap for yin and yang.
  • Cast built from free itch.io packs, restyled into that palette, with missing animations hand-authored.
  • Original skies, bamboo, ground tiles, props, HUD, FX and pixel-brush kanji.
Play the GBA build → v1 vector prototype

A D walk · SPACE jump · J parry · K execute · Esc pause · ` debug

Update 6: more time to react

Update 5: tutorial, brace, one continuous road

Frozen tutorial prompts: parry, hold to brace, the brace stance, return
The Sparring Ground is now a scripted lesson. Time freezes and the world dims just before each blow, until you press the right key.
Area joins: dawn to noon, noon to sunset, sunset to dusk, and the boss arena
One continuous road. The sky and backdrop crossfade between areas (dawn, noon, sunset, dusk), and a stone lantern marks each change of ground. The boss arena's pagodas are no longer clipped: a full pair frames each side of the torii.

Update 4: glamour, combos and the final cut

Black and white finale: the Master and the General as black silhouettes on a white page, a red cut line and the kanji for end
The last execution on a boss: the world turns to a white page, both fighters become ink silhouettes, the cut opens in red under 終 (end).
Parry burst frames
The new parry: a 4-point star, a shock ring, a gold redirect arc and sparks. There is no screen flash, shake or slow-mo.
Execution poses
The execution: launch, knife-hand pass with black and white afterimages and an ink stroke, then the finish with his back to the target.

Update 3: wider view, calmer screen

Master rolling through a jump, the air guard, and the air counter
The jump is now a 4-frame midair roll. J in the air gives the air guard; a counter in the air throws him open.
  • 50% more view: the screen is now 360x240, and the camera is locked on the Master, so it never drifts.
  • No flash, no slow-mo, no shake: a parry is just a 2-frame hit-stop, a spark and the sound.
  • Red attacks: jump to counter. Jump just as a red attack strikes (within 22 frames of take-off) to rise over it: +2 trigrams, and the attacker is left open. Red attacks wind up longer.
  • 2x run speed (2.9 px per frame).
  • Crisp game over: no mosaic. The kneeling Master, a large 陰 glyph, your run stats, and J to rise again.
Game over screen
Game over: sharp text over a dark ink wash.

Update 2: polish and comfort

Update: the unarmed Master

Palm parry, a dash with the palm leading, then the salute. His sword is gone.
  • Unarmed: every Master frame was redrawn in Pixel Studio. That covers palm guard, palm deflect, gather, release, palm dash, a salute, a 4-frame idle, a new jump (tuck, cross-legged float, reach), and run, hurt and kneel without the scabbard.
  • Easier parry: the window is now 18 frames (300 ms), or 24 in the Wide option.
  • Drama: every parry gets a hit-stop, a slow-motion ramp and a dimmed world.
  • Reversal: hold J to gather and release as a red attack lands to turn it back. You gain +2 trigrams and the attacker is left wide open.
  • Sound: parries use a palm thump plus a qi bell that climbs with each stored trigram. Executions use a whoosh, a heavy impact and a sub-boom, with bell chords on big cuts.

See it running

Captured from the real build, played by the test bot, upscaled 4x with nearest-neighbour scaling.

Title, a mosaic transition, then the Sparring Ground at dawn.
The Crimson Bridge. Crimson Fang's red thrust has to be jumped or dashed through.
The Unyielding General: crescent strings, a red thrust, wind slashes you can parry back.
Phase 2: the power-up flips the world to night (a palette swap) and his cape turns black and gold.

Four stages, two palettes

LyniaDesign's parallax pack is re-tinted per time of day: dawn, noon, sunset, dusk, then night for the boss's second phase. The bamboo, ground strips, torii, lanterns and talisman gates are original.

Five 240x160 scenes: sakura dawn, bamboo noon, Fuji bridge at sunset, temple dusk, temple night

Restyling the free assets

Each source sprite is remapped into the master palette, merged down to 15 colours and anchored at the feet. Its blade tip is detected automatically so the parry glint sits on the actual sword. The same ronin pack yields three enemy variants, and the boss gets two phase palettes.

Source sprites on the left, restyled versions on the right
Left: the source pack. Right: Wu Wei versions (ronin in ink, red and jade; the General in phase 1 and phase 2).
Master palette ramps
"Wu Wei GBA": 9 hue-shifted ramps (ink, paper, vermilion, gold, skin, pine, sakura, sky, dusk), all RGB555. Exported as assets/wuwei.gpl for Aseprite.

Pixel Studio, with prompts

A local editor at games/pixel-studio. Type a prompt and Claude returns a sprite, either as an indexed pixel grid or as a small drawing program that runs in a sandbox. You can then edit, animate and export it. It uses your Claude Code login when no API key is set.

Pixel Studio editor with a generated red lantern
First real generation: "a red paper lantern, GBA style", 16x16, 11 seconds, 7 colours.

Start it

cd games/pixel-studio && npm start
Then open localhost:5178.

  • Prompt tools: Generate, Variations x3, Refine (before/after), Animate (N frames), Pixelize a reference image.
  • GBA post-process: RGB555 snap, 16-colour cap, selective outline, orphan cleanup.
  • Wu Wei palettes built in: the full GBA master, plus hero, ronin and sakura subsets.
  • Export: PNG, sprite sheet + JSON, GIF, .gpl, GBA C array, Aseprite Lua.

Do not load Crimson Fang's sprites into it. Kiyoz's licence forbids AI use.

Cast and licences

RoleSourceLicence
The old master (hero)Samurai 2D Pixel Art (free tier), Mattz Art, plus original guard, kneel, jump and fall framesFree for commercial games; no asset resale
Ronin, three variantsSamurai, favi_gmdv (from LuizMelo's Martial Hero)Base is CC0
Crimson FangFallen Order Enemy #1, KiyozCommercial OK; no resale; not for AI tools
The Unyielding GeneralSamurai Boss (Full Moveset), oliveiramiro2No licence stated. Ask the author or replace before release.
BackgroundsTiny Pixel Japan Parallax, LyniaDesignCommercial OK; no redistribution of the assets
FontsArk Pixel 10px (TakWolf), Yuji Boku (Kinuta Font Factory)OFL 1.1

Full details are in CREDITS.md.

What is still rough