Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證A ten-level browser tower defense built by parallel Claude Code agents with arbab and rendered with the ExodeUI runtime. Play it on GitHub Pages.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A ten-level tower defense game for the browser, built by parallel Claude Code agents with arbab and rendered with the ExodeUI runtime.
Goblins, trolls, bats and shield orcs march down the road toward your castle. Build towers on the stone pads, upgrade them, and hold the gate until the last wave falls. Every enemy that gets through costs lives; at zero, the castle is lost.
| Meadow | Desert |
|---|---|
| Snow | Volcano |
| Action | Mouse | Keyboard |
|---|---|---|
| Build a tower | Click an empty stone pad, then a tower | 1–5 while the build menu is open |
| Upgrade or sell | Click a tower, then upgrade or sell | U / S while the tower menu is open |
| Start the first wave | START | |
| Call the next wave early | NEXT (+1 gold for every second skipped) | |
| Pause | Pause button | Space or Esc |
| Double speed | Speed button | F |
| Sound on or off | Sound button | M |
Rifles, cannons and rockets deal physical damage, which armor reduces and shields halve; frost and tesla deal energy damage, which ignores both. Cannons cannot hit flyers, rockets hit them extra hard, frost shards slow what they hit and tesla bolts chain between enemies. The Orc Warlord costs 10 lives if he reaches the gate.
The game was built with arbab, a Claude Code plugin that turns one Claude Code session into an engineering team: the session plans and writes narrow briefs, and arbab runs each brief as a headless Claude Code worker, in parallel, in its own git worktree behind a sandbox.
┌─> lane ─┐
orchestrator session + arbab ─────┼─> lane ─┼─> integrate ─> verify ─> review ─> readiness ─> person approves ─> main
(contracts, briefs, integration) └─> lane ─┘
SpriteBuilder (a typed builder for ExodeUI
artboards), the stage and engine helpers, and a Node render pipeline so tests and galleries can draw real frames.main until a person said yes.The workers looked at their own work. Art lanes rendered every sprite, clip and variant to PNG with pnpm art:render
and iterated on what they saw; the tuning lane played every level on every difficulty with a headless bot (60 plays in
about 3 seconds, see src/game/balance).
| Area | What it covers | Time | Cost |
|---|---|---|---|
| Orchestrator | Plan, shared contracts, lane briefs, integration, browser captures, this README | 2 h 13 min | $90.30 |
| Simulation | Deterministic 60 Hz simulation, economy, waves, a headless balance bot | 23 min | $6.50 |
| Levels | The ten level definitions and their validation | 17 min | $4.71 |
| Difficulty tuning | Waves and starting gold tuned with the bot on every level and difficulty | 29 min | $8.43 |
| Tower art | Five towers at three levels, with aim and fire clips | 29 min | $8.16 |
| Enemy art | Six enemies with walk, hit and die clips | 21 min | $5.54 |
| World art | Terrain for four themes, decor, castle gates, projectiles and impact effects | 25 min | $8.49 |
| UI kit | Buttons, panels, icons, tags, range rings, hit testing | 14 min | $4.00 |
| HUD | In-game HUD, build and tower menus, wave banner, overlays | 17 min | $5.35 |
| Menus | Title screen, level select with difficulty | 13 min | $4.53 |
| World scene | Rendering adapter: terrain layer, pooled towers, enemies, projectiles and effects | 32 min | $9.14 |
| Engine effects | ExodeUI glows, light trails and particle emitters in the scene | 34 min | $11.74 |
| Mascot | King Sunny's reactions to the game, screen shake | 26 min | $10.39 |
| App shell | Screens, game loop, input, procedural audio, saved progress | 12 min | $3.32 |
ExodeUI is an interactive animation and UI runtime, a Rive alternative. Here its canvas engine draws the whole game: every sprite, map, projectile, effect, HUD element and menu is an ExodeUI artboard, and the mascot is ExodeUI's own mascot component.
SpriteBuilder (src/art/exode.ts):
shapes, Bézier paths, linear and radial gradients from a shared palette, outlined text and keyframe clips with
easing. Builders are pure (objects in, artboard out), so every sprite is unit-tested and rendered to PNG in Node.Glow on tesla spheres, frost crystals, lightning and explosions; LightTrail behind
rockets, ice shards and cannonballs; ParticleEmitter sparks, debris, ice motes and volcano embers on a second,
small engine over the world canvas. Their cost was measured per instance, and an adaptive guard turns them off when a
device cannot keep its frame pace (ENGINE_EFFECTS.md).ip-2011) from its mascot library, recolored gold, crimson and
royal blue through the <exode-mascot> web component. He greets you on the menus, pops up during a level when the
first wave starts, a boss arrives, the gate is in danger or you clear waves without a leak, and celebrates or cries
with you at the end.| Towers at levels 1, 2 and 3 | Enemies |
|---|---|
| Path | What |
|---|---|
| src/game | Shared types and stat tables, the deterministic simulation, the ten levels, balance tests. No DOM, no rendering |
| src/art | ExodeUI artboard builders: towers, enemies, world, UI kit, and the SpriteBuilder toolkit |
| src/render | Canvas stage, engine helpers and the world scene adapter |
| src/ui | HUD and menus |
| src/app | App shell: screens, loop, input, audio, storage, mascot, quality guard |
| src/platform | Node canvas rendering for tests and galleries |
| scripts | Gallery renderer, media renderer, SEO and media tests |
The simulation runs at a fixed 60 Hz step with no randomness or clock reads, so a level plays out the same way every time; the balance tests rely on that. The project has 135 TypeScript source files, 10 art galleries and 110 test files with 879 tests.
Requires Node 24 and pnpm 12.
pnpm install
pnpm dev # play at http://localhost:5173
pnpm test # unit, render and balance tests
pnpm typecheck
pnpm build # production build in dist/
pnpm art:render [filter] # render gallery entries to out/renders/*.png
pnpm media # render the icons and the Node-side README media
What is Last Bastion? A free tower defense game that runs in the browser: ten levels on four themed maps, five towers with three upgrade levels each, six enemy types including the Orc Warlord boss, and three difficulties.
How was it built? With arbab: a Claude Code session wrote the shared contracts and the briefs, and arbab ran each part (simulation, levels, art, scene, HUD, menus, tuning, app shell, effects, mascot) as a headless Claude Code worker in its own git worktree. Verification, code review and a person's approval gated every merge.
What is ExodeUI? An interactive animation and UI runtime, a Rive alternative. Every sprite, map, effect and menu here is an ExodeUI artboard drawn by its canvas engine, and King Sunny comes from ExodeUI's mascot library.
How much did it cost and how long did it take? 10 h 15 min of measured agent work and $221.71 at API prices, within 6 h 16 min of elapsed working time. The cost table breaks it down by area.
Can I use the code? Yes, under the MIT license. The font and the mascot have their own terms, listed below.
exodeui npm package, pinned at 7.2.18 and
bundled into the build.https://www.exodeui.com/mascots/exode-mascot.js; its license is not stated, so it is not redistributed here. It
runs with this page's privileges and cannot be pinned with Subresource Integrity, because exodeui.com sends no CORS
headers. The page keeps only game progress and settings in localStorage, but a GitHub Pages project site shares
its origin, and so its storage, with the owner's other project sites. If the script does not load, the game runs
without the mascot (src/app/mascot.ts).public/mascots/ip-2011.bexode, Sunny the Lion) comes from ExodeUI's mascot library, free for
personal and commercial use. It is served from this site because the component cannot fetch it from exodeui.com
across origins.public/fonts), under the SIL Open Font License (OFL.txt).MIT © 2026 Özgür Sağıroğlu.
| Review fixes | Confirmed review findings fixed with tests: adaptive effect quality, mascot timing, render costs | 28 min | $9.72 |
| Showcase | Pages deploy with a test suite sized for CI runners, SEO, icons, media | 52 min | $5.12 |
| Code review | Correctness, performance and security reviews with a skeptic pass | 1 h 17 min | $26.02 |
| Verification | Typecheck, tests and build inside the sandbox; worker preflight | 33 min | $0.25 |
| Total | 39 lanes and the orchestrator | 10 h 15 min | $221.71 |