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。 以下为已保存的摘录。
Fore!
A mobile-first golf mini game for the browser: real ball physics, a classic
three-click swing meter and endless procedurally generated 9-hole courses.
No build step and no dependencies, so it runs straight from GitHub Pages.
Play offline / install as an app
Fore! is an installable web app (PWA): after the first visit everything is cached on the device, so it
plays with no connection and launches full-screen from the home screen.
• iPhone / iPad (Safari): open the site, tap Share → Add to Home Screen.
• Android (Chrome): tap 📲 Install app in the menu (or ⋮ → Install app).查看完整 README ↗A mobile-first golf mini game for the browser: real ball physics, a classic three-click swing meter and endless procedurally generated 9-hole courses. No build step and no dependencies, so it runs straight from GitHub Pages.
Fore! is an installable web app (PWA): after the first visit everything is cached on the device, so it plays with no connection and launches full-screen from the home screen.
Updates download in the background when you're online and apply on the next launch. Bump VERSION in
sw.js when adding or removing files (the test suite checks the cache list matches what the page loads).
Live at https://mankolik.github.io/Golfy/. GitHub Pages serves the main branch, so
merging is publishing. Share a course by its seed:
https://mankolik.github.io/Golfy/?seed=heron7. To run it locally, serve the folder with any
static web server.
Controls (touch)
Desktop: mouse to aim, click or Space to swing, ←/→ for fine aim, ↑/↓ for clubs, S for the next shot type,
wheel to zoom, V for overview, C for the scorecard, M to mute.
Every seed plays in one of six environments (the menu preview shows which; roll the dice for another):
| World | Look | Twist |
|---|---|---|
| 🌳 Parkland | Classic tree-lined course | — |
| 🌵 Desert | Irrigated fairways, waste areas, cacti, oases | Hot thin air (+3% carry), baked fairways, firm waste areas |
| 👽 Alien world | Glowgrass, blue moss, crystals, giant mushrooms, acid pools | Low gravity (~40% more carry, longer holes), meteor craters |
| 🌊 Coastal links | Dunes, golden fescue, gorse, pot bunkers | Strong sea wind, firm running ground |
| ❄️ Winter | Snow, snowy pines, bare birches | Snow grabs the ball; frozen ponds are playable and slippery |
| 🌋 Volcanic | Ash, black sand, dead trees, basalt | Lava lakes, craters, big elevation changes |
Each world also has its own soundtrack of three procedurally synthesized tracks (Web Audio, no audio files):
parkland acoustic plucks and swing, desert oud and frame drums, alien synth arpeggios, Celtic jigs on the links,
music-box bells in winter and taiko-driven tracks on the volcano. ♫ toggles music (long-press or N for the next
track); 🔊 toggles sound effects.
Biomes live in js/biomes.js (palette, trees, terrain shaping, physics environment, names). A seed's biome
comes from its own hash, so parkland seeds keep the same layouts they always had.
node tests/longgame.js and node tests/putting.js are the
matching balance harnesses (putting is deliberately left as-is).node tests/shortgame.js runs a balance harness that plays
thousands of greenside shots with human-like timing noise.Each hole comes from a seed: a routed centreline with doglegs becomes a variable-width fairway, then a blob-shaped green complex (raised greens with run-off banks, two-tier greens, grass hollows) with a random pin, greenside, fairway and deep pot bunkers, water tight to some greens, ponds and creeks (kept clear of tees and greens), fractal-noise elevation with tilted and undulating greens, clustered forests, deep rough and OOB stakes. A course is 9 holes at par 36, mixing short par 3s and drivable par 4s with long holes. Terrain is rasterised once per hole with hill shading, plus a high-resolution layer around the green.
| File | Purpose |
|---|---|
js/util.js | Seeded RNG, value noise, math helpers |
js/biomes.js | World definitions: palettes, trees, terrain shaping, physics, names |
js/course.js | Hole/course generation and terrain queries |
js/physics.js | Clubs, ball flight, bounces, rolling, trees, cup |
js/render.js | Terrain rasteriser and per-frame drawing |
js/audio.js | Synthesised sound effects (WebAudio) |
js/music.js | Procedural music sequencer, instruments and the 18 world tracks |
js/game.js | State machine, swing meter, input, camera, HUD, save/resume |
Run the headless checks with node tests/run.js.