Skip to content

About

A Call-of-Duty-style zombies shooter in the browser, styled like a graphic novel — with zero downloaded assets. Every texture, mesh, letterform and sound is generated in code. Built with Claude Code.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

COMIC ZOMBIES

A game that draws itself.

Five combat theaters. Every world, weapon and sound made in code.

Play in your browser   /   Explore the asset workshop

Graphic-novel survival in Municipal Block: ink outlines, halftone streets and an approaching horde

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

Choose a theater

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.

INKSAINT

Draw the line.

INKSAINT: Draw the line — title frame from the in-engine prologue

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.

INKSAINT prologue: a crossing blade strike separates an enemy along its marked seam INKSAINT prologue: red seams connect six enemies during Unravel
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.

ASTRA 6

Take the sky.

ASTRA 6 title screen overlooking the solar foundry and its suspended black sun

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 ASTRA 6 gameplay: Vesper Edge drawn on the approach to the foundry's central platform

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

The original survival theaters

One more round.

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.

Aiming through the pistol's iron sights in Municipal Block Three boon cards offered between rounds: Oiled Action, Kinetic Ink and Snap Sights
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

Everything starts as code

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.

Open the workshop

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.

Live asset workshop showing generated halftone, paper, ink splats, lettering and surface textures

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
Archived plaza before the color and lighting corrections The same plaza after the color and lighting corrections

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.

Controls

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.

Run locally

Use Node.js 22.12+ and npm.

git clone https://github.com/elberacasa/comic-zombies.git
cd comic-zombies
npm install
npm run dev

Open 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 locally

Inside the project

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

Built through play

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.

Play Comic Zombies · Explore the workshop

About

A Call-of-Duty-style zombies shooter in the browser, styled like a graphic novel — with zero downloaded assets. Every texture, mesh, letterform and sound is generated in code. Built with Claude Code.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages