Fortune Spires
PM New build is live: "Build the first version of Fortune Spires". Reload the game to play it. · 7d
▶ 1 play · 1.5 min average
Idea by John
PM New build is live: "Build the first version of Fortune Spires". Reload the game to play it. · 7d
▶ 1 play · 1.5 min average
Idea by John
A single-page canvas brawler viewed from the top down. Six rune spires stand in a ring over a void. One player and 5 bots start on separate spires. Every 5 seconds each living character gets a random item: Plank (places a walkable tile in the facing direction), Gust (pushes nearby characters away), Bomb (thrown, explodes after 1.5s with knockback), or Feather (one automatic rescue from a fall). Standing on void makes a character fall and drop out. After 60s, tiles crumble from the outside in. Bots wander, build bridges toward the nearest rival, and use their items. Controls are WASD or the arrow keys plus Space or a click, and on touch an on-screen joystick and a USE button. The HUD shows the held item, a countdown to the next item, and the number still alive. The win or lose screen has a Play Again button. All art is original and drawn in code with simple canvas shapes. This first version follows John's 4-item list, so the grapple hook from the project description is left out.
Make a single-page canvas game. Six spires sit in a ring around the arena, which is void everywhere else. The player moves with WASD or arrow keys, uses the held item with Space or a click, and on touch uses an on-screen joystick and a USE button. Five simple bots wander, build bridges toward the nearest rival, and use their items. Every 5 seconds each living character gets one random item from these: Plank (places a walkable tile in the direction you face), Gust (pushes nearby characters away), Bomb (thrown, explodes after 1.5 seconds and knocks characters back), and Feather (one automatic rescue from falling). Anyone who stands on void falls and is out. After 60 seconds the outer tiles start crumbling. A HUD shows the held item, a countdown to the next item, and how many are still alive. The win or lose screen has a Play Again button. Acceptance criteria: - The game is playable within 10 seconds of loading, and a round ends with a single winner. - Items appear on the 5-second schedule. - All 4 items work for both the player and the bots. - It works with keyboard and with touch. - There are no external assets. The original idea, in the owner's words: “make a version of the Rust "Lucky Pillars" game”
Plan: build the first playable version from your spec. It will have six spires, 5 bots, the 4 items on a 5-second timer, crumbling that starts at 60 seconds, keyboard and touch controls, a HUD, and Play Again. The project description also mentions a grapple hook, but your spec lists 4 items, so I've left the grapple out of this version. It could be added later. 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. Fortune Spires is built and working: one self-contained `dist/index.html` (83.5 KB) with no external files, network requests or storage calls. Build, tests and a browser check all pass. Nothing is committed; the platform handles that. **How it plays** - You (gold) and 5 bots start on six round rune spires in a ring over the void. A Play button and keys show about 0.1 s after load, then a 3-2-1 countdown starts the round. - Every living character gets a random item at the start and every 5 s after. The new item replaces the one you're holding. - **Plank** lays a bridge of up to 4 tiles where you face. A dashed preview shows where it will go. - **Gust** pushes everyone nearby away. - **Bomb** is thrown and explodes after 1.5 s with knockback. A red circle shows the blast area before it goes off. - **Feather** saves you from one fall automatically while you hold it. - **Two choices that go a little beyond the spec:** - A plank is up to 4 tiles long rather than a single tile, so one plank can usually bridge the gap between spires. - Because a new item replaces the old one, a Feather only protects you until your next item arrives. - Stepping onto the void makes you fall out. After 60 s the tiles crack and crumble from the outside in, so every round ends by about 85 s. - Bots wander, bridge toward the nearest rival, chase, gust, throw bombs, and run from crumbling edges. - Every round ends with exactly one winner. If you fall early, the game plays on at 2× speed with a "Skip to result" button. The win or lose screen shows the winner, your placing and your stats, plus Play Again. - **Controls:** WASD or arrows, plus Space or a click (a click aims at the spot you clicked). On touch screens there's a joystick and a USE button; it reads AUTO when you hold a Feather. - **HUD:** your held item with a countdown ring to the next one, how many are still alive (with a colored dot per character), time until the crumble, and a message feed. - Sound effects are made in code with Web Audio and there's a mute button. I added no music. Wins and streaks are saved through `window.hallway` when it exists. **Checks I ran** - **`npm run build` and `npm test`:** 12 of 12 tests pass. They cover: - the spire layout - the 5-second item schedule - each of the four items - falling and Feather saves - outside-in crumbling - player input - bots using all four items - 30 full rounds, each ending with exactly one winner in under 95 s - the self-contained build - **Headless browser test:** keyboard movement, Space and click use, the touch joystick and USE tap, the end screen and Play Again all worked, with no console errors. - **Screenshots:** I viewed the title, countdown, mid-game, busy, crumbling, touch, spectating and end screens at 1440×900, 920×575 and 390×844, and fixed what I saw: - the ring was off-center and clipped at the top - the spires looked like plus shapes - the spectate bar covered the bottom spire - some text was cramped or tiny - the HUD said "0s" during the countdown The screenshot tool flagged no sizes where the page scrolls. - **Cover:** saved at `/tmp/projex-shots/cover-1440x900.png` from a busy mid-game moment. As planned, the grapple hook from the project description is left out. 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_6a0a1b95-ace — fresh build and tests passed, stored content verified, commit 4da08b4. This is the platform-built version.
Log in to add to the discussion.