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 text-rendered explorer, rebuilt from the ground up. Every frame is a grid of monospace cells, each one glyph on a coloured background.
Phase 0a, the Look Lab: one small, fixed valley (meadow, lake, conifers, a stone wall with a gate, a snowy ridge) at day, dusk and night, built to prove the look before any world is built.
Phase 0b: water that reflects and refracts, with ripples, and a 2 km stress scene (?stress=1 or X) that measures the renderer. Verdict: the CPU backend stays, with density 3 as the default.檢視完整 README ↗A quiet walk through a land drawn in letters, in the browser. Every frame is a grid of monospace cells, each one glyph in an ink colour on a background colour. The picture is made by marching rays on the CPU in web workers and drawn with WebGL2 in one call. The land is generated from a seed: hills, rivers, a fort, three villages, their people and animals, the weather, day and night. You walk it, greet the villagers, do them small favours, sketch the views and find your way by the signposts. Its sound and music are made in code.
This is the third build of the game, hence the repository's name; the game is called Land of Ascii everywhere a player looks.
npm install # esbuild and Playwright, for the build and the tools
npm run dev # http://localhost:5190/ is the game from the sources
NOISO=1 npm run dev serves without cross-origin isolation, as GitHub Pages does. Then each worker holds its own copy of the world.
URL options on play.html:
| Option | What it does |
|---|---|
?seed=N | another world (the default seed is 3) |
&at=x,z,yaw&hour=h | a place and an hour, as Share this world makes them |
?day=N | the day count, which the moon follows (0 a bright moon, 15 a dark one) |
?density=1..4 | the detail level |
?threads=N | the number of render workers (0: everything on the page) |
?lab=1, ?stress=1, ?yard=1 | the tools' scenes: the Look Lab, the stress scene, the building yard |
Keys: WASD walk, the mouse (or the arrows) looks, E greets, J opens the journal, K sketches, M shows the map, N turns the sound off, Esc opens the menu with everything else. The player's keys can be changed in the menu (Controls).
npm run build # play.html (the game, one file) and index.html (the front page)
node tools/front.mjs # the front page's pictures, made by the game (src/front/data.json); --og the share image
The built play.html and index.html are committed, so build before committing. Pushing main publishes the repository's root on Vercel (vercel.json: the isolation headers, and redirects for old links) and on GitHub Pages. .vercelignore keeps reference/ and shots/ off Vercel. The version is package.json's; raise it with each release.
Every check runs from the command line, in Node or in Playwright's Chromium, Firefox and WebKit:
| Command | What it checks |
|---|---|
node tools/world-check.mjs | five seeds: the land, the roads and rivers, the sky test, the fort and the villages walked, people, animals, favours played from their words (--fort-only --sweep 60: sixty seeds) |
node tools/identity.mjs --scene all --built | every number of workers draws the same cells |
node tools/lookbook.mjs --regress --built | the fixed cameras of every scene against the saved set (tools/regress/), cell for cell |
node tools/flicker.mjs --people (--animals, --buildings, --skyline, --set world) | blinking cells while walking and turning |
node tools/menu-check.mjs | the menu, the title screen, the keys and the settings, by keyboard and mouse |
node tools/progress-check.mjs --built --browser chromium (or firefox, webkit) | saved progress, backups, no storage |
node tools/sound-check.mjs --built | the sound at every kind of source: nothing clips, the voices are held |
node tools/audit.mjs | what the others don't cover: resizing, switching detail, opening from disk, the Pages copy, a cold load, a month of game time, moved keys, the menu by keyboard, the largest text, broken storage, edited backups |
node tools/bench.mjs --scene world --built --threads 8 --density 3 | frame times on every fixed camera (on a quiet machine) |
How these tools share their pages is in docs/architecture.md, and what each other tool in tools/ does is in its first lines.
The trailer, the TikTok videos, the hype images and the itch.io page set are in promo/ (see promo/README.txt), made from the real game by the scripts in tools/promo/:
node tools/promo/trailer.mjs # promo/video: the 30-second trailer, frame by frame, with the game's own sound
node tools/promo/check-trailer.mjs # its length, size, frame rate, loudness and the sound in every second
node tools/promo/stills.mjs # promo/images, promo/itch: hype images, covers, banner, tile, screenshots
node tools/promo/tiktok.mjs # promo/tiktok: three vertical 1080 x 1920 videos for TikTok, Reels and Shorts
node tools/promo/tiktok-walks.mjs # promo/tiktok-walks: five vertical 30-second walks, no words, the game's own sound
node tools/promo/frame-walks.mjs # dist/walks: the development walk recordings (shots/walks), framed, no words (large: kept out of git)
They open the built game with every clock held and Math.random seeded, so a run gives the same pictures every time (the trailer's sound to within one 16-bit step), and use the game's own font from tools/promo/fonts/ (Cascadia Mono, SIL Open Font License). promo/ is kept off Vercel (.vercelignore).
| Document | What it covers |
|---|---|
| docs/architecture.md | how it is built: the pipeline, the threads, the world data, the kit, the people, the sound, the progress store |
| docs/art-bible.md | the look's rules |
| docs/scale.md | the numbers the world is built to |
| docs/design.md | the rules of play |
| docs/facts.md | true numbers about the game, each with how it was measured |
| docs/qa-0.6.md | the 0.6.1 audit, its faults (fixed in 0.6.2) and the known limitations |
docs/phase0a.md to docs/phase6.md | each phase's record, with pictures and measurements |
The private reference/ folder (other people's footage, used to judge the look) is never published, nor bundled into the page.