Pitfall Colony
PM New build is live: "First playable version of Pitfall Colony". Reload the game to play it. · 5d
▶ 2 plays · 0.5 min average
From Hacker News: “Living beyond the limits of survival: wood ants trapped in a gigantic pitfall (2016)”
PM New build is live: "First playable version of Pitfall Colony". Reload the game to play it. · 5d
▶ 2 plays · 0.5 min average
From Hacker News: “Living beyond the limits of survival: wood ants trapped in a gigantic pitfall (2016)”
Build one self-contained HTML page with a full-window canvas. It shows a dark concrete pit from the side with a forest rim at the top. Ants are vector dots with legs. They fall in every few seconds and wander. Along the bottom are three job controls (Scavenge, Huddle, Haul) with +/- buttons or sliders that work with mouse and touch, plus tappable job zones. Ants walk to their zone: scavengers to the floor edges, huddlers to a central cluster, haulers up and down a zigzag ramp. Food falls unless there are enough scavengers, and warmth falls unless there are enough huddlers. When either one is empty, ants die over time. Haulers add ramp segments. The HUD shows the ant count, food, warmth and ramp %. You lose when every ant is dead, and a restart button appears. You win when the ramp reaches the rim: the ants march out into the trees and the screen shows the time and survivor count. No external assets.
Build one self-contained HTML page with a full-window canvas that shows a dark pit in side view and the forest rim at the top. Ants are small dots with legs that fall in from the top every few seconds and wander around. Put three job controls along the bottom: Scavenge, Huddle and Haul. They are +/- buttons or sliders that move idle ants between jobs, and they must work with both mouse and touch. Ants physically walk to their zone: scavengers to the floor edges, huddlers to a central cluster, haulers up and down the ramp. Food goes down unless there are enough scavengers. Warmth goes down unless there are enough huddlers. If either one is empty, ants die over time. Haulers add ramp segments in a zigzag up the wall. The HUD shows the ant count, food, warmth and ramp %. Acceptance criteria: you can see it in action within 10 seconds; one run lasts about 3 to 6 minutes; you lose when all ants are dead and get a restart button; you win when the ramp reaches the rim, the ants march out with an animation, and the time and survivor count are shown; there are no external assets. The original idea, in the owner's words: “Bunker Colony: Keep a colony of wood ants alive at the bottom of a dark concrete pit, then build a boardwalk up to the forest before the colony dies out. Canvas pit with ants falling in from the top. Players split workers between scavenging, huddling for warmth and carrying boardwalk pieces. A survival meter drains over time, and you win when the ramp reaches the rim and the ants march out.”
Got it. I'm scoping this as the first playable build of the pit, the ants, the three jobs, the zigzag ramp, and the win and lose states, all in one HTML file with no external assets. I'll tune the pacing so a run lasts about 3 to 6 minutes. Queued for implementation in an isolated workspace. I’ll report the checks and a pull request here.
Implemented in pull request #1. The project build and tests passed in the isolated workspace. Pitfall Colony is built and playable. It's one self-contained `dist/index.html` (86 KB, no external assets), and the build, tests and my browser checks all pass. **What it does** - A full-window canvas shows a concrete drainage pit from the side, with a pine forest at the rim. All the art is drawn in code: panel seams, stains, a rusty pipe, roots, leaf litter and mushrooms, and a light shaft from above. - Wood ants (red thorax, black head and abdomen, animated legs and antennae) start falling in within a second, then every few seconds. They land with a dust puff and wander. Idle ants have a pulsing gold ring. - **Scavenge, Huddle, Haul**: each job has +/− buttons (hold to repeat) that work with mouse and touch, plus tappable zones in the pit. Keys 1/2/3 add an ant and Q/W/E remove one. - Ants walk to their zone. Scavengers forage at the floor edges, huddlers pile into a glowing central cluster, and haulers pick up planks at the pile and carry them up the zigzag boardwalk. - Food and warmth both drain. Nights are colder, so they need more huddlers. Each job card shows how many ants it needs. When food or warmth hits zero, ants die over time. - The HUD shows ants (and how many are idle), food, warmth, ramp % and time. - **Win:** survivors march up the boardwalk and fade into the trees, then a panel shows the time, survivors and losses. **Lose:** a panel with a working "Try again" button. - Sound effects are made in code, with a quiet wind loop and a mute button; audio starts on the first interaction. I can't hear audio, so the sounds haven't been listened to. Best time and win count are saved through `window.hallway` when it's available, and the game works without it. **Pacing.** A bot that plays sensibly at different reaction speeds wins in 3:50 to about 5:20. Doing nothing loses in about 80 seconds. **Checks I ran** - **Screenshots** at 1440×900, 920×575 and 390×844 of the start, mid-game, night, busy late game, the march, both end panels and a close-up of the rim exit. From those I made the ants bigger with a light outline, moved the zone labels onto the floor so they don't collide with the ramp, toned down the wall stencil, rebuilt the phone HUD, wrapped the toast text on phones, turned the huddle into a mound and made the exit animation visible. The cover is saved from a late-game view at 1440×900. - **Browser test (Playwright):** taps and clicks on the +/− buttons and the canvas zones moved ants between jobs at all three sizes, with no console errors and no page scroll. The loss panel appeared, restart started a fresh colony, and the save hook received the run stats. - **`npm test`:** 10 of 10 pass. They cover the self-contained build (no URLs, script parses, controls present), arrivals within 10 seconds, assigning ants and them reaching their zones, food and warmth drain, deaths when empty, the zigzag geometry and ramp growth, the 3–6 minute win and march-out, and the neglect loss. **Files.** The source is in `src/` (`sim.js`, `main.js`, `style.css`, `index.html`), `scripts/build.mjs` inlines it into `dist/index.html`, the tests are in `tests/`, and the README now covers controls. Nothing is committed; that's left to the platform. Verification and merge follow the project’s auto-merge setting. You can follow the pull request in the Code tab.
Auto-merged pull request #1 after a fresh build and test run against the latest main branch. Automatic publishing will follow when enabled and hosting is connected; the live release status appears here.
Published: https://projex.fly.dev/play/project_385e8920-ca9 — fresh build and tests passed, stored content verified, commit 4e04010. This is the platform-built version.
Log in to add to the discussion.