無為 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.
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.
A D walk · SPACE jump · J parry · K execute · Esc pause · ` debug
Update 6: more time to react
- Longer reaction window (tuned): every wind-up is about 5 frames longer than the original. The glint comes 21 frames before the hit (was 16), the red tell 49 frames before (was 44). The parry window is 25 frames (38 with the Wide option).
- Slower Master: run speed is down 35%, to 1.9 px per frame.
- Guard pose: the Master keeps his low crouch, and the feet are redrawn: shorter trouser legs, with narrow ankles and angled sandals that match the idle and deflect poses.
- Post-parry protection: for 30 frames after a parry (40 after a counter), nothing can damage the Master. Parries still count during that time.
Update 5: tutorial, brace, one continuous road

- Frozen tutorial: the first ronin runs a fixed script: a cut (J), a 1-2 combo (J, J), then a red cut (HOLD J). After each opening it waits for K. The parry is guaranteed while frozen.
- Hold to brace: hold J for about 0.25 s and the Master braces (red outline, vermilion qi). A brace turns back RED attacks for +2 trigrams, and you never need to release. A brace does not stop normal blows: they break through with a 破 BROKEN mark. Tap J for normal attacks, hold J for red ones. The jump counter is gone.
- Camera: it stays still until the Master passes 65% of the screen toward either edge. It no longer pans when an arena locks.
- More combos: 1-2-1-2 and 1-2-1 strings for every ronin variant and Crimson Fang.
- Sound: parries now layer a blade ring, a palm slap, a saturated low thump and a high shimmer. Executions layer a sharp crack, a heavy plate and punch hit, a saturated sub boom and a rumble tail, with a gong on big cuts. Music ducks under both. The boss finale has its own gong and bell chord.

Update 4: glamour, combos and the final cut



- Executions heal: each trigram spent on a cut that lands fills the next drop in gold. 10 trigrams restore 1 drop, so even a full gauge heals less than 1 hit costs.
- 1-2-3 combos: every enemy now mixes quick-quick-heavy strings, delayed hits and red finishers. The General adds a quick-draw iaido, a low red sweep, and 4-5 hit strings in phase 2.
- Camera: it stays put until the Master reaches 80% of the screen width toward either edge, then glides along at walking speed.
Update 3: wider view, calmer screen

- 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.

Update 2: polish and comfort
- Longer parry stance: a 28-frame window (467 ms), 36 in Wide.
- Calmer camera: a dead zone, no flip when you turn, movement capped at 2.2 px per frame (it was 17), softer shake with an off switch.
- Dark Souls-style wind-ups: attacks wind up about 1.6-2x longer, with a held apex, a pull-back and a tremble before a fast strike. The ronin's iaido gets a new heavy wind-up frame.
- Polished poses: every Master pose was redrawn with a reference from the original artist (bent elbows, draped sleeves, a crane jump). A qi orb grows between his palms while he gathers.
Update: the unarmed Master
- 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.
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.
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.


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.

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
| Role | Source | Licence |
|---|---|---|
| The old master (hero) | Samurai 2D Pixel Art (free tier), Mattz Art, plus original guard, kneel, jump and fall frames | Free for commercial games; no asset resale |
| Ronin, three variants | Samurai, favi_gmdv (from LuizMelo's Martial Hero) | Base is CC0 |
| Crimson Fang | Fallen Order Enemy #1, Kiyoz | Commercial OK; no resale; not for AI tools |
| The Unyielding General | Samurai Boss (Full Moveset), oliveiramiro2 | No licence stated. Ask the author or replace before release. |
| Backgrounds | Tiny Pixel Japan Parallax, LyniaDesign | Commercial OK; no redistribution of the assets |
| Fonts | Ark Pixel 10px (TakWolf), Yuji Boku (Kinuta Font Factory) | OFL 1.1 |
Full details are in CREDITS.md.
What is still rough
- Scale mix: the hero is 34px and the ronin are 53px. It reads as "the small yields to the large", but a playtest should confirm it.
- How original it looks: environments, UI and FX are original or heavily reworked, while the hero and Fang stay close to their sources apart from the palette. The next step is custom silhouettes (a hat, a sash, masks), drawn by hand or in the Pixel Studio.
- Audio: still the v1 WebAudio synth. A chiptune pass would complete the GBA feel.
- Boss licence: unknown, see above.