wyrmfall.asm$A7B0 · car.bin

Wyrmfall

A dark-fantasy survivors-style game for the browser. You are the dragon, adventurers keep coming for your gold, and the Dragonslayer King arrives at 7:00.

run/play/wyrmfall/
↗ new tab
README.mdwyrmfall/index.mdx

A survivors-style game with the roles reversed. You play an ancient wyrm, waves of adventurers march on your lair to loot it, and a run ends if either the dragon or the hoard falls. Survive to 7:00 and the Dragonslayer King shows up; kill him to win.

The loop

  1. Pick one of five dragons, each with its own starting weapon and stats.
  2. Pick one of four lairs, and optionally stack Trials (opt-in modifiers) for more reward.
  3. Survive. Weapons fire on their own; you move, dash, collect gems and choose upgrades. A boss arrives every two minutes.
  4. Spend the Essence you earned on permanent upgrades, new maps and new dragons. Clearing a map unlocks Ascension tiers for it.

There are seven weapons, each with an evolved form when maxed alongside its matching passive, and nine adventurer types including healers, shieldbearers that block from the front, sappers that bomb the hoard, and thieves that fill their sacks and run for the edge with your gold.

Top-down view of the Cavern 48 seconds into a run: a purple dragon breathing fire among adventurers and archers, a fireball streaking past the glowing gold horde, blue experience gems and floating numbers scattered across the floor
Ashwing in the Cavern at 0:48, level 4, with Fire Breath, Fireball and Ember Aura. The glowing pile at the top is the horde you are defending.

Under the hood

TypeScript and Vite on a 2D canvas, with no engine and no runtime dependencies. In-game sprites and all audio are procedural: every archetype has its own drawn silhouette, and every screen and map has its own synthesised theme, which gets more intense as the threat rises. Painted art is only used for the menus.

The core is a fixed-timestep loop with object pooling and a spatial hash for collision. All tuning lives in data tables. A test suite of a few hundred cases covers the systems, the audio engine against a fake WebAudio context, and the menu flows, plus a balance harness that plays full runs with a scripted bot and checks the pacing and economy stay in range.

It builds to a static bundle and works as an installable PWA that plays offline. Keyboard, gamepad and touch all work.