Five combat theaters. Every world, weapon and sound made in code.
Play in your browser / Explore the asset workshop
5 playable theaters · 1 runtime dependency · 0 downloaded game assets
BUILD 035 · The theater collection
Comic Zombies began as a graphic-novel survival FPS. It now spans a ballpoint execution brawler, an aerial machine-combat FPS and three original zombie arenas. Each theater has its own setting and combat identity, built around movement, readable attacks and rewards for staying aggressive.
The common thread is the craft behind them: procedural geometry, drawn textures, authored animation and synthesized audio. Open a tab and the game builds its world around you.
Choose a theater · The artwork · Controls · Run locally · Inside the project
| Theater | Perspective | What you play |
|---|---|---|
| INKSAINT | Angled action | Cut seams into enemies, cross them to execute, and Unravel a linked crowd. Five verses in a ballpoint cathedral. |
| ASTRA 6 | First person | Launch, grapple, dash and slam through six encounters in a shattered solar foundry. |
| Nightglass Array | First person | Survive a coastal facility with a signal core, ground loop and elevated catwalks. |
| Blackline Terminal | First person | Route the horde around a damaged train, twin platforms and an overhead bridge. |
| Municipal Block | First person | The original graphic-novel sandbox: streets, rooftops, gantries and escalating rounds. |
Playing: combat uses a keyboard and mouse. The website and INKSAINT film can be viewed on phones. The 3D theaters require WebGL 2.
Blue ballpoint. Correction red. A courtyard full of unfinished souls.
Your first cut leaves a seam. A crossing strike or dash turns that opening into an execution. Parry a Binder's hammer, connect marked enemies with Unravel, then spend a full ink meter on Redaction. Executions restore health and dash energy, keeping the next move within reach.
![]() |
![]() |
| Cross the seam. A marked enemy becomes an opening for the next strike. |
Unravel the crowd. Linked marks turn positioning into a chain execution. |
Frames from the authored in-engine film, using the theater's actors and combat effects.
Five verses introduce Hollows, Scribes and Binders before the Redactor. Between verses, choose permanent revisions that shape the rest of the run.
Play INKSAINT · Open the homepage to watch the 30-second film · Combat design
The cover also includes a prologue recorder with original synthesized sound.
A black sun hangs over a broken foundry. The way through is vertical.
Charge the Vesper Edge to launch an enemy, tether into the air, phase-dash through a cut, and finish with a height-powered dive slam. Aerial and slam kills return health and a dash charge. Build flux to release Supernova, or switch to the Sunlance for cannon fire and charged explosive shots.
First-person gameplay capture, with the relic blade equipped.
Six escalating encounters, upgrades between waves, and four machine classes: Vesper, Cantor, Warden and the final Helion. The title screen includes a 24-second in-engine prologue and a browser recorder.
Play ASTRA 6 · Weapons, traversal and encounter design
Municipal Block, Blackline Terminal and Nightglass Array share the survival foundation: seven firearms, learnable recoil, active reloads, points, combo chains and 26 boons that stack into different builds. Sprint, slide-cancel, air-strafe, dive and mantle to keep space between you and a horde that gets faster as rounds advance.
![]() |
![]() |
| Learn the weapon. Deterministic recoil, aligned iron sights and an active-reload window. |
Build the run. Choose one of three boons between rounds and stack their effects. |
REAPER brings two melee weapons to all three arenas: the RAZORWIND relay sabre and GUILLOTINE breaching cleaver. Firearms open wounded targets for executions; finishing them recovers health and ammunition. Deliberate windups and follow-through give each blade a visible contact moment.
Hold Tab for the Field Dossier: weapons, ammo, threats, boon stacks and run statistics.
Municipal Block · Blackline Terminal · Nightglass Array
No downloaded models, texture packs, sound samples or webfonts. Meshes are generated, textures are drawn, sound is synthesized, and lettering uses system fonts. The screenshots in this README document that output; they are not assets loaded by the game.
| What you see or hear | How it is made |
|---|---|
| Worlds and weapons | Procedural geometry, seeded prop kits and authored material generators. |
| Ink, paper and surfaces | Canvas 2D drawing, crosshatching, halftone patterns and generated texture maps. |
| Characters and animation | Generated meshes or articulated drawings, with authored poses and attack timing. |
| Light and impact | GLSL shading, outlines, post-processing, pooled particles and drawn decals. |
| Gunshots, blade strikes and scores | WebAudio oscillators, generated noise, envelopes, filters and synthesized reverb. |
The asset workshop runs the game's actual generators. Explore 155 live exhibits, including 75 synthesized sound recipes, and see the function calls behind the original game's materials, weapons, props and effects.
The only runtime dependency is Three.js. INKSAINT uses its own Canvas 2D renderer and loads independently of the 3D theaters.
From the archive: how player feedback changed the art
The original plaza, before and after a color pass. The playtester asked for better coloring; the work uncovered a double color-space conversion, invisible ground light pools and inconsistent texture scale. Fixing those changed the whole scene.
| Before | After |
|---|---|
![]() |
![]() |
Another lasting rule came from feedback about visual shimmer: a comic page does not animate its own texture. Paper grain and halftone stay fixed so movement belongs to the world. The reasoning and subsequent iterations are preserved in the art direction and playtest log.
All theaters use WASD to move, the mouse to aim and Esc to pause.
| INKSAINT | ASTRA 6 | Original survival arenas | |
|---|---|---|---|
| Primary attack | Left click: cut | Left click: blade / cannon | Left click: fire |
| Secondary action | Right click: parry | Hold and release right click: charged attack | Right click: aim down sights |
| Movement | Space / Shift: dash | Space: double jump; Shift: dash | Space: jump; Shift: sprint; C / Ctrl: crouch / slide |
| Signature actions | E: Unravel; Q: Redaction | Hold E: tether; F in air: slam; Q: Supernova | V: melee; H: switch melee weapon |
| Weapons / interaction | — | 1 / 2: weapons; R: reload cannon | Q: swap firearm; R: reload; E / F: interact |
The original arenas also expose their ink powers and weapon inspection through the in-game controls. Hold Tab to inspect the current run.
Use Node.js 22.12+ and npm.
git clone https://github.com/elberacasa/comic-zombies.git
cd comic-zombies
npm install
npm run devOpen the local URL printed by Vite, normally http://localhost:5173.
| Page | Development | Production |
|---|---|---|
| Theater collection | /site.html |
/ |
| Game / Ready Room | / |
/play |
| Asset workshop | /gallery.html |
/gallery |
| INKSAINT directly | /?map=inksaint |
/play?map=inksaint |
| ASTRA 6 directly | /?map=astra6 |
/play?map=astra6 |
The other map values are nightglass, blackline and block.
npm run check # Strict TypeScript checks, including tool sources
npm run build # Build the collection, game and workshop
npm run preview # Serve the production layout locallysrc/
site/ Public theater collection, procedural covers and film player
gallery/ Live workshop using the game's asset generators
inksaint/ Independent Canvas 2D action game and film
astra/ Independent Three.js aerial combat game and prologue
core/ Original runtime: input, loop, pools, typed contracts and events
game/ Survival systems: movement, weapons, REAPER, enemies, rounds, boons
art/ Procedural geometry and texture generators
render/ 3D renderer, materials and post-processing
world/ Survival arenas, collision, navigation and lighting
audio/ Original WebAudio engine and synthesis recipes
ui/ Survival HUD, Ready Room, upgrades and Field Dossier
75,860 lines of TypeScript across 156 source files at BUILD 035. The original runtime integrates through typed contracts and an event bus; INKSAINT and ASTRA 6 own separate runtimes. Fixed-step simulation, interpolated rendering and bounded pools underpin the combat systems. The runtime performance target is 60 fps at 1080p; results depend on hardware and theater settings.
The release passed strict typechecks, a production build, combat and movement regression suites, and browser checks for all five theaters, the workshop and film lifecycle. Verification details are recorded in the release handoff.
| Read more | Contents |
|---|---|
| Game bible | Original survival loop, movement, weapons and progression. |
| Art direction | Palette, ink, shading and visual rules. |
| Architecture / Contracts | Module boundaries and the couplings types alone cannot enforce. |
| INKSAINT design / ASTRA 6 design | Each standalone theater's mechanics and implementation. |
| Playtest log / Current playtest | Player feedback, changes and what to try next. |
| Roadmap / Release status | Milestones and the current production checkpoint. |
Created by Alejandro Beracasa with Claude Code and Codex, through successive playable builds. Human playtesting directs the work: feedback on movement, readability, combat and sound shapes the next pass. Automated checks verify behavior and performance; the player decides whether it feels right.
The code, design notes and playtest history document that process alongside the game.
Open a theater. Make a run.










