A cute, chaotic 1โ2 player bunny arena survivor for the browser.
The garden warren is under attack! Beetles munch the lettuce, crows dive-bomb the carrot patch, robo-gnomes patrol the flower beds โ and something big and clanky is coming on wave 10. Grab a bunny, team up with a friend, and survive 20 waves to drive the pests out for good.
Weapons fire automatically at the nearest pest โ you just hop. That makes it easy for young players and perfect on a controller, while build-crafting in the shop keeps it deep for experienced players.
No install needed: ๐ https://redmeatboy.github.io/Warren_Wars/ ๐
No build step, no dependencies โ it just needs to be served over HTTP
(ES modules won't load from file://).
git clone https://github.com/RedMeatBoy/Warren_Wars.git
cd Warren_Wars
# then either:
npx serve
# or:
python -m http.server 8000Open the printed URL (e.g. http://localhost:3000 or http://localhost:8000)
in Chrome or Edge (best gamepad support). That's it.
๐ Browsers only unlock sound after a mouse click or key press โ click the title screen once if you're playing on controllers.
- Title screen โ press any key or controller button.
- Character select โ each player presses a button/key to claim a slot (WASD side, arrows side, or any Xbox controller โ any combination works). Pick your bunny, optionally toggle Little Bunny Mode, ready up, choose a danger level, and go!
- Survive the wave. You only move โ your weapons aim and fire themselves. Grab the carrots that pests drop: they're both the team's money and your personal XP.
- Between waves: spend level-ups (pick 1 of 4 upgrades) and hit the shop โ buy weapons and items, reroll offers, lock ones you're saving up for. Both players browse at the same time on their own panel.
- Waves 10 and 20 are boss fights. Watch the orange telegraphs!
| Action | Keyboard P1 | Keyboard P2 | Xbox controller |
|---|---|---|---|
| Move | WASD |
โ โ โ โ |
Left stick / d-pad |
| Confirm / buy | E or Space |
Enter |
A |
| Back | Q |
Backspace |
B |
| Reroll shop | R |
. |
X |
| Lock offer / Little Bunny | F |
/ |
Y |
| Pause | Esc |
Esc |
Start |
| Mute | M |
M |
View |
Supported player combos: keyboard+keyboard, keyboard+controller, controller+controller (Xbox Series X pads over USB or Bluetooth). If a controller disconnects mid-wave, the game pauses automatically.
- Carrots are shared โ one team wallet, no squabbling. XP goes to whoever picks the carrot up.
- Downed bunny? They sit dazed with stars. Stand inside their dashed circle for 3 seconds to revive them. The run only ends if both bunnies are down.
- Drop-in anytime: a second player can join at character select or between waves in the shop.
- Little Bunny Mode (toggle per player): +50% HP, bigger carrot magnet, longer protection after a hit, and farther auto-aim โ lets a younger player genuinely carry their weight. No score penalty, just a little ๐ by their name.
| Bunny | Style |
|---|---|
| Clover | Balanced all-rounder โ great first pick |
| Stomper | Lop-eared tank: tough and armored, but slow |
| Zippy | Jackrabbit: blazing fast, dodgy, fragile |
| Tinker | Engineer: only 4 weapon slots, but mighty turrets |
| Lucky | Angora: lucky finds and rich harvests, softer hits |
| Shadow | Night hopper: huge crits, thin fur |
| Chonk | Bruiser: melee weapons only, and proud of it |
| Sprout | Baby bun: weak, but learns twice per level-up |
Carrot Launcher ยท Turnip Mortar ยท Dandelion Boomerang ยท Thorn Whip ยท Garden Hose (piercing water jet) ยท Clover Wand (homing sparkles) ยท Sunflower Turret ยท Radish Mines ยท Bramble Aura ยท Pinecone Shotgun ยท Snow Pea Shooter (slows!) ยท Zucchini Bat ยท Berry Bombsโฆ 15 weapons in 4 tiers โ buy two identical ones and they combine into the next tier.
Plus 28 passive items with real tradeoffs ("Cast-Iron Watering Can: +3 Armor, โ5% Speed") and a 15-stat build system.
Danger 0 (Sunny Day) is beatable on your first good run. Win it to unlock Danger 1, up through Danger 3 (Full Moon) โ 2.25ร enemy HP and a proper swarm. Records and unlocks save automatically in your browser.
Vanilla JavaScript (ES modules) + HTML5 Canvas. All art is drawn in code, all audio is synthesized with WebAudio โ the repo contains zero binary assets. Fixed 60 Hz simulation with interpolated rendering, object pooling, and a spatial grid keep it at 60 fps with 200+ enemies on screen.
Developer docs (architecture, data formats for adding weapons/enemies/items, headless test harness) live in CLAUDE.md. Quick check:
node tests/mechanics.mjs . # 29 gameplay assertions
node tests/smoke.mjs . # full simulated 2-player runNo blood, no gore โ defeated pests pop into leaves, petals, and sparkles. Made for a family garden defense squad. ๐๐