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 |