Inspiration
I went into this wanting to make something environmental — a game that puts eyes on a part of the natural world we're losing. My first idea was a polar bear building ice. But the more I explored, the more I kept coming back to something we'd stopped talking about. I remember the news years ago about bees being endangered. Everyone talked about it. Then it just faded from the conversation, and the bees didn't come back because we stopped mentioning them. So the game became about that: building hives, and keeping a colony alive against everything that wants it gone. :)
What it does
You are the mind of a bee colony. Foragers work the blooms and drop beads of honey in the grass; tap a bead and it flies to the Queen, leave it twelve seconds and it sinks. Honey buys comb, eggs and guards. Every brood cell is a nursery that lays a worker every few seconds — with no population cap — so the colony grows exactly as fast as you can feed it.
Then the meadow sends raiders, and each one is aimed at a different part of that loop: wasps hunt workers no guard covers, beetles chew the weakest comb, moths dive for the brood, mites latch on and drain, hornets ignore everything and fly at the Queen, spiders web the field and disarm your sentries. When a wave starts every free worker turns fighter. Hold a finger on the meadow to gather them into a swarm, drag to steer it, release to scatter. Bees ball: more bees on one raider sting harder, and that's the only way through armour.
Twenty raids, from a two-wave first evening to two Matriarchs at once. If the Queen dies, the colony ends.
How we built it
Prompt-built, per the brief, with Claude doing the heavy lifting on code. Three.js on the
UMD build so index.html runs straight off file://, since that's how judges open it.
Everything in the game is generated or embedded — sprites are base64 in the page, sound
effects decode through atob — because the "no network requests" rule bans fetch
outright and Chrome treats every file:// image as cross-origin the moment WebGL touches
it.
The thing I'd do again first: an automated test harness before any balance work.
tools/smoke.mjs drives the real build in headless Chrome, asserts on console errors and
on any non-file:// request, plays through waves, kills the Queen, and restarts. A
heuristic bot in tools/balance.mjs then plays full runs at 5× and prints Queen HP,
population and comb size per wave, so the difficulty curve was read off real play instead
of guessed.
Art came last: a hand-painted watercolour pass, very art is cut and designed with similar style that bridges art and realism
Audio : some were generated but most were sourced by open source websites like Opengameart org
Challenges we ran into
The entire game world was invisible. The HUD rendered, the simulation ran,
renderer.info reported 276 triangles submitted, and the screen showed only the
background. Swapping in a solid-colour shader proved it was geometry, not texture: quads
were emitted clockwise, WebGL treats counter-clockwise as front-facing, and every sprite
was being back-face culled. Invisible in code review; obvious in one pixel readback.
A wave that could never end. The evasion fix created a stalemate: a hive with no guards can't kill anything, and workers that dodge forever can't be killed either. Two fixes, because they were two problems — the colony starts with one guard already posted, and 45 seconds in, raiders enrage: they stop chasing workers, go for the comb and the Queen, and speed up 40%. Comb can't dodge, so every wave provably terminates, and it reads as escalating menace rather than a safety valve.
"I always end up with six bees." The obvious suspect was the population cap. I instrumented every egg-laying attempt and counted why each one failed: no honey to spare — 237 times. Brood cap — zero. The cap never bound once; the economy simply couldn't fund a bee. So the cap went away entirely, and honey became the only brake — which is the one the player can actually see and act on.
The death spiral. A bot run reached wave 13 and then lost every cell in two waves. Destroying a cell dumped its garrison back into the forager pool, so losing comb lost defence, which lost more comb. The fix was structural: a garrison whose cell collapses falls back to the nearest comb with a free slot. The line bends inward instead of breaking.
Accomplishments that we're proud of
That the swarm hold works as a single gesture. That the bot survives all twenty raids and finishes the boss on 97 of 300 Queen health — the target being that a competent-but-unimaginative player barely wins, so an attentive one wins and a careless one doesn't. And the whole thing ships at 0.8 MB against a 35 MB cap.
What we learned
The first balance pass was numerically plausible and completely unfun, and no amount of reasoning about the numbers substituted for running the game and watching the colony die. AI was genuinely excellent at the mechanical work — procedural art code, Web Audio synthesis, module scaffolding, and above all the test harness. The judgement calls — what to cut, why wave 2 felt bad, that a cap wasn't the problem — still had to be mine. The best mechanics in the game weren't in any plan. They came from asking why instead of scaling a number until the symptom stopped.
What's next for HIVEWARD
Comb adjacency bonuses that reward hive shape. Seasons that change which flowers bloom and which pests arrive. Swarming to found a second hive. And a lineage: a fallen colony leaves a daughter queen carrying one inherited trait into the next run.
Built With
- 3js
- figma
- photoshop
Log in or sign up for Devpost to join the conversation.