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
Fore! — a pocket golf game with real ball physics and endless procedurally generated courses.
GamesJavaScript · CSSGitHub @MankolikOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
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).Read the full 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.