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 building and exploration game that runs in the browser, with no build step.
Vanilla JavaScript and Three.js power terrain, physics,
creatures and rendering. Libraries and vehicle models supplied for this family game are vendored;
optional network services provide multiplayer and cloud saves.檢視完整 README ↗A building and exploration game that runs in the browser, with no build step. Vanilla JavaScript and Three.js power terrain, physics, creatures and rendering. Libraries and vehicle models supplied for this family game are vendored; optional network services provide multiplayer and cloud saves.
Manhattan on Earth: teleport to New York from the world map (the old
/?lieu=manhattan link still works). One map, one shared-world code: detailed landmarks, Times
Square, yellow taxis and rigged human characters with textured faces and clothing.
Pedestrians keep their positions when you turn around and fade with distance.
See characters and vehicles for assets and rendering budgets. Existing Earth buildings
keep their terrain support; v239 Manhattan journals are imported without
scaling their blocks. See the urban guide for migration,
rendering budgets, licensing and limitations.
?hd= forces it). Each quarter has its own register
(plaster and shutters in the Marais, ashlar and running balconies in the
west), trees are meshed up close, and sidewalks carry bollards, café
terraces and street-name plates — all read from the blocks, never written
into them. Eight landmarks have an authored model in the same layer — the
Eiffel Tower's open lattice (you walk under it), the Arc de Triomphe's two
vaulted passages, the Louvre pyramid's glass lattice, Notre-Dame's rose
window and flying buttresses, Sacré-Cœur, the Panthéon, the golden dome of
Les Invalides and the Opéra Garnier. Place a block inside one and it turns
back into editable cubes.src/radio.js).
The horn is two held sawtooth tones through a resonant filter; a street car
stuck behind you honks back. One audio context for the whole game; the
🔊 setting suspends it outright.tokyo, eiffel, washing)
and every one of the 278 registered places, plus Paris's squares, Manhattan's
neighbourhoods and Washington's monuments, comes up with its distance in
blocks; tap one and you are there. Accent- and case-insensitive, and the map
fills whatever shape the screen gives it — wide on a phone held sideways,
tall when held upright.CACHE_VERSION in sw.js so installed clients update.localStorage and restored on reload (terrain is deterministic, so only the
diff is stored).The game is a static site, but it uses ES modules, so it must be served over HTTP
(opening index.html directly from disk won't work):
# from the repo root — pick whichever you have:
python3 -m http.server 8000
# or
npx serve .
Then open http://localhost:8000.
It also works out of the box on GitHub Pages: enable Pages for this repo
(Settings → Pages → deploy from the main branch, root folder) and play at
https://<user>.github.io/minecraft/.
The shared-world code is exercised by real browsers playing together, against a local signalling server — no build step, no external service:
cd tests
npm install
npm test
A full run takes about 1 h 50 (measured on v540), on purpose. Seventeen suites run one after the other — never
in parallel, since two browsers fighting over four cores produce
failures that don't exist in the game — and the waits have to outlast the
game's own thresholds (twenty seconds of silence before a link is cut) or they
would prove nothing. Each verdict is written to disk as it lands, so a crashed
or recycled container costs one suite rather than the whole run;
npm test -- --depuis-zero forces a full replay. npm test -- --tranche=k/n
plays only one of n balanced slices, so n machines run the whole thing in
parallel (two slices: about 55 minutes each).
See tests/README.md for what each scenario reproduces — every one of them is
a failure that actually happened to the children playing — and CLAUDE.md for
the invariants a change must not break.
| Input | Action |
|---|---|
| W A S D | Move |
| Mouse | Look around |
| Left click (hold to repeat) | Break block |
| Right click | Place block |
| Middle click | Pick targeted block |
| Space | Jump / swim up |
| Shift | Sprint |
| 1–9 or mouse wheel | Select hotbar slot |
| F | Toggle fly mode (Space up, C down) |
| H (in a car) | Horn |
| R (in a car) | Next radio station, then silence |
| Space (in a car) | Handbrake |
| Esc | Pause |
On touch devices: left thumb summons a joystick, right thumb looks around, and the round buttons handle jumping, flying and building. Tapping the screen only mines or builds in Build mode (its button, then Place or Break); the ☰ menu in the top-right corner pauses and gathers everything else.
In a car the joystick is both accelerator and steering wheel — push forward to speed up, pull back to brake and then reverse — and the walking buttons step aside; the right column holds the handbrake, the horn and the radio button. Grass, gravel, sand and snow grip less than tarmac (and rain wets the road), the car rumbles and the camera shakes off-road, brake lights come on when you brake and reverse lights when you back up — on street cars too. A plane additionally gets a throttle dial and a speed readout on the right, because a throttle that holds when you let go is what makes an aircraft an aircraft.
index.html page shell, HUD, styles
CLAUDE.md invariants, release procedure, and the traps that cost time
src/main.js scene setup, chunk streaming, input, HUD, game loop
src/world.js noise, terrain/tree generation, chunk storage, edits + saving
src/mesher.js chunk geometry builder (visible faces only, water surface)
src/solcontinu.js continuous natural ground: one triangulation for rendering, contact and NPCs (v297)
src/player.js movement, collision, swimming, flying, voxel raycast
src/blocks.js block ids and metadata
src/textures.js procedural texture atlas
src/facadeshd.js Paris HD layer: facade relief and street surfaces, as buffers
src/paris-monuments-hd.js its eight authored landmarks, clipped per chunk
src/matierehd.js its single PBR material, 1024-px atlas and environment
src/bandeau.js the game's passing message — since v497 only for what the child must do (quiz, refusals, multiplayer)
the shared world
src/net.js sessions, peers, presentation, edit log, reconnection
src/relaisnuage.js cloud relay: a PeerJS-shaped pipe through the database
src/cloud.js Supabase calls: world saves, profiles, relay, presence
src/sync.js whole-profile portability, keyed by first name
src/visio.js camera tiles and sound, split so autoplay can't mute both
who lives there
src/animals.js passive animals, spawning, the mount you can climb
src/montures.js the eight rideable beasts and the height of their backs
src/embarquement.js getting in and out of a car: walk to the door, open, sit, close
src/portieres.js car doors cut from the bodywork of each fleet model, once per model
src/cap.js the pilot's heading dial: bearing, the city ahead, its distance
src/marlon.js friendly NPCs (Marlon the companion, Professeur Cornichon)
src/vie.js city life; src/vehicules.js métro trains (which stop at
stations) and F1 cars
src/stations.js the name of every metro station, written on its platform
src/police.js src/patrouille.js the police: a bêtise at the wheel brings a
police car (and a moto at two stars) along your own trail; stop,
and the officer tells you what happened — never violent
src/moto.js the rideable police moto, which leans into turns
the places
src/paris.js src/manhattan.js src/sanfrancisco.js src/nice.js src/lille.js
src/washington.js the capital: L'Enfant's plan, the Mall, and the Metro
src/dcmonuments.js its 32 landmarks — real interiors, you walk in — and 3 bridges
src/chine.js src/pole.js src/espace.js src/gaulois.js src/villandry.js
src/aeroport.js src/circuit.js src/ville.js src/parc.js src/voies.js
src/metromonde.js the metros of generated cities (Rome's line A): stations, stairs, tunnels
src/routes.js the interurban roads (A1 Paris–Lille, E429 Lille–Bruxelles, E19 Bruxelles–Amsterdam, A20 Montréal–Québec, BR-116 São Paulo–Rio, A-4 Madrid–Séville, A109 Nairobi–Mombasa, A3 Cologne–Francfort, E1 Kyoto–Nagoya, Autosole Bologne–Florence, A4 Milan–Turin, Yamuna Delhi–Agra, A1 Sud Rome–Naples, M1 Vienne–Budapest, A1 Nord Milan–Bologne, A24 Berlin–Hambourg, I-45 Dallas–Houston, A7 Lyon–Marseille, AP-2 Madrid–Barcelone, 401 Toronto–Montréal, Hansalinie Cologne–Hambourg, I-95 New York–Boston, I-95 Sud New York–Washington, Tōmei Tokyo–Nagoya, M40 Londres–Birmingham, A6 Paris–Lyon, A8 Marseille–Nice: profile, section, bridges, traffic)
learning and parents
src/education.js quiz bank, adaptive difficulty, stats, persistence
src/identity.js face signatures (never photos) and the hashed parent code
src/admin.js the parent space
src/journal.js the device's logbook: crash detection, safety tier, cloud reports
vendor/ three.js r160 + GLTFLoader (MIT — see THREE_LICENSE),
voiture.glb — the drivable car's 3D model (VOITURE_LICENSE)
voitures/police-car.glb, moto-police.glb, humains/policier.glb —
CC-BY-4.0, credits in their LICENSE.md
avions/ — the A320, A321 and F-35 models (avions/LICENSE.md;
the A320 is CC-BY-NC-SA: non-commercial, share-alike)
scripts/ convertir-avions.py fits a Sketchfab plane to the game's contract