▶ Play in your browser — voxel-musou.vercel.app
![]() |
![]() |
| Zhao Yun — spear string through the crowd | Huang Zhong — Musou 百步穿楊, flaming volley |
![]() |
![]() |
| Zhao Yun — Musou 蒼龍破陣, the dragon | Huang Zhong — the giant arrow |
![]() |
![]() |
| Choose your officer | Chapter I 「定軍山」 prologue |
A browser-playable voxel action game in the style of Dynasty Warriors, built with Three.js. Take the field as Zhao Yun (趙雲) with his spear or Huang Zhong (黃忠) with his great bow, and cut through hundreds of Wei soldiers — in the story chapter at Mount Dingjun or in an endless free battle.
No build step: plain ES modules, Three.js r186 vendored in vendor/three/, deterministic fixed 60 Hz simulation.
- Two playable officers with their own movesets, models and Musou:
- Zhao Yun — spear: normal combos (N1–N6), charge attacks (C1–C6), Musou 蒼龍破陣 with a dragon
- Huang Zhong — bow: limb slashes and point-blank shots, charge shots (fan, barrage, arrow rain, fire arrow), aim mode, Musou 百步穿楊 (a flaming volley and a giant arrow)
- Story mode, Chapter I 「定軍山」: prologue, scripted battle with dialogue, objectives, enemy officers and gates, result screen; play it as either officer (the other one joins the dialogue)
- Free battle: endless waves
- Four difficulties, picked after the mode on the title: 初級 · 普通 · 上級 · 修羅 (修羅 opens once Chapter I is cleared on 上級). Grunts stay one-sweep fodder; the tiers turn enemy pressure, officer toughness and the cost of a hit
- Jump, jump attack, dodge; hit-stop and impact VFX
- Dense voxel crowds of Wei soldiers (~300, InstancedMesh) blasted apart into voxel debris, allied Shu troops
- Enemy officers with name and HP tags
- Golden-hour valley battlefield with a river, camps, castle, fires and banners
- Custom post-processing: atmospheric haze, depth of field, bloom, retro pixel look
- Procedural WebAudio sound
- Calligraphy-style title, character select, HUD and ink-wipe transitions
ES modules don't load from file://, so serve the folder with any static server:
python3 -m http.server 8000Then open http://localhost:8000 . Requires a WebGL2 browser; a desktop GPU is recommended. Sound starts on the first key press or click.
Keyboard and mouse, or a gamepad.
| Action | Keys | Gamepad |
|---|---|---|
| Move (camera-relative) | WASD / arrow keys | left stick |
| Attack | J / left click | X □ |
| Charge | K / right click (mid-combo) | Y △ |
| Jump | Space | A × |
| Dodge | L / Shift | R1 R2 |
| Musou (gauge full) | I | B ○ |
| Camera | mouse (click the field to lock it) / Q E | right stick |
| Recenter / face nearest officer | R | L1 L2 |
| Aim (Huang Zhong) | hold K / right click, release to loose | hold Y △ |
| Pause / controls | Esc |
| URL parameter | Description |
|---|---|
?enemies=N |
Number of enemy soldiers, 0–2000 (default 300) |
?go=free|story&char=zhaoyun|huangzhong |
Skip the menus straight into a battle |
?hq |
Pin full render quality (no automatic MSAA downgrade) |
index.html entry point, importmap, all screen CSS
src/ core, hero, chars (per-character kits), combat, crowd, musou, camera, vfx, post, world, audio,
story (chapter script, prologue, result), ui
vendor/three/ Three.js r186
media/ README screenshots and GIF
- Code: MIT, see LICENSE.
- three.js: MIT.
- HUD fallback font
src/ui/brush.woff2is a subset of Yuji Boku by Kinuta Font Factory, licensed under the SIL Open Font License 1.1.
This is a fan project, not affiliated with or endorsed by KOEI TECMO. "Dynasty Warriors" is a trademark of KOEI TECMO. No game assets from the original games are included.







