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,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A 2D neon-cyberpunk tower defense game built with Phaser 3, TypeScript (strict) and Vite, intended for Poki.
Hold a ruined city's last reactor against 10 waves of corrupted machines. A full run takes about 5–8 minutes.
dist/ is a fully static site with relative asset paths, so you can upload it to any static host or zip it for Poki.
.github/workflows/deploy.yml builds and publishes dist/ on every push to main. You can also run it by hand from the Actions tab.查看完整 README ↗A 2D neon-cyberpunk tower defense game built with Phaser 3, TypeScript (strict) and Vite, intended for Poki. Hold a ruined city's last reactor across a 4-sector campaign (44 waves, with Titan boss fights). Each sector takes about 6–8 minutes. Stars and sector challenges buy permanent upgrades in the Workshop.
Picking this up on a new PC? Start with docs/STATUS.md: setup, current Poki progress and the backlog.
Requires Node.js 20+ and Git.
git clone https://github.com/shafiq1rwan/neon-grid.git
cd neon-grid
npm install
npm run dev # http://localhost:5173
npm run build # type-check + production build into dist/
npm run preview # serve the production build locally
npm run package # build + zip for Poki into release/
npm run package builds and zips the game into release/neon-wasteland-v<version>.zip (index.html at the root), ready to upload to Poki.
dist/ is a fully static site with relative asset paths, so you can upload it to any static host or zip it for Poki.
.github/workflows/deploy.yml builds and publishes dist/ on every push to main. You can also run it by hand from the Actions tab.
One-time setup: in the repo's Settings → Pages, set Source to GitHub Actions. The game then appears at https://<user>.github.io/<repo>/. Asset paths are relative, so the repo subpath works.
Space next wave, 1–6 quick build (in drawer order), U upgrade, S sell, F speed, P/Esc pause.| Tower | Role |
|---|---|
| Pulse | Cheap, fast single-target bolts |
| Cannon | Heavy shells with recoil; pierces armor |
| Missile | Homing missiles with splash damage |
| Tesla | Arcs that chain between enemies; 2x damage to shields |
| Laser | Sustained beam after a warm-up; pierces armor (unlocked in Sector 2) |
| Cryo | Frost pulse slows everything in range; frozen machines take +15% damage (unlocked in Sector 3) |
| Enemy | Trait |
|---|---|
| Corrupted Drone | Basic |
| Rift Runner | Very fast, fragile, leaves a teal trail |
| Wasteland Juggernaut | Huge HP and flat armor; looks damaged below 50% |
| Shielded Specter | Energy shield absorbs damage first |
| Swarm Spawner | Releases swarmlings that follow the road |
| Titan War Machine | Sector 3 boss: massive armor, resists frost slow |
src/
main.ts Phaser config, audio unlock, Poki init
game/
config.ts palette, layers, economy and timing constants
data/ towers.ts, enemies.ts, waves.ts, maps.ts (all balance lives here)
entities/ Tower, Enemy, Projectile
systems/ Enemy, Tower, Projectile (pooled), Wave, Economy, Targeting
rendering/ Canvas2D art baked once into textures at boot
(TowerRenderer, EnemyRenderer, EnvironmentRenderer, EffectsRenderer)
scenes/ Boot, Menu, Sector (select), Game, UI (HUD overlay), Result
ui/ HUD, TowerMenu, UpgradePanel, Tutorial (hints), widgets
audio/SoundSystem.ts Web Audio synthesised SFX (no audio files)
platform/PokiAdapter.ts all Poki SDK calls, isolated from gameplay
utils/ MathUtils, ObjectPool, Storage, View (screen fitting), Fullscreen
scripts/package.mjs zips dist/ into release/ (npm run package)
.github/workflows/deploy.yml GitHub Pages deploy on push to main
output/marketing/ Poki thumbnail + generation prompt
Art: there are no image or audio assets. All art is drawn procedurally with Canvas2D (gradients and baked glow) into cached textures when the game boots. At runtime the game only draws sprites plus one shared Graphics object for arcs and beams.
Balance: edit src/game/data/*.ts. Tower levels, enemy stats, wave composition and HP scaling are all data-driven.
PokiAdapter uses only documented SDK v2 calls (https://developers.poki.com/guide/sdk-html5): init, gameLoadingFinished, gameplayStart/gameplayStop, commercialBreak, rewardedBreak.
commercialBreak() runs before each new run (Play, Retry, Restart). It never runs during combat. Audio is suspended while an ad plays.?poki to the URL. If the SDK is missing or blocked, the game runs standalone with no ads, and Revive is hidden (no reward without an ad).| Doc | Contents |
|---|---|
| docs/STATUS.md | Start here: new-PC setup, current Poki progress, backlog, release routine |
| docs/GAME_DESIGN.md | Rules, damage model, full tower/enemy/wave tables, UI, art direction |
| docs/ARCHITECTURE.md | Scenes, systems, rendering, events; how to add towers, enemies and maps |
| docs/BALANCING.md | Tuning levers, design targets, bot validation results |
| docs/POKI_INTEGRATION.md | SDK usage, event flows, ad rules, submission checklist |
| docs/POKI_SUBMISSION.md | Poki listing copy, categories, thumbnails, upload zip, requirements checklist |
| docs/TESTING.md | Debug snippets and manual QA checklist |
| CHANGELOG.md | Release history |
LocalStorage key neon-wasteland-defense:v1 (kept from before the rename to Neon Wasteland, so saves survive) stores: mute setting, whether the tutorial is done, best stars per sector (mapStars, which also drives unlocks), best wave reached and the win count. Progress is per browser, so it doesn't follow you to a new PC.