Underground 2 Revived
Chrome과 Firefox에서 Need for Speed Underground 2를 WebGPU로 두고 팬 프로젝트입니다
브라우저에서 걸고, 날고, 채광할 수 있는 Goldberg 다면체 행성을 탐험
A walkable, flyable, mineable Goldberg-polyhedron planet in the browser - WebGPU three.js, streaming chunks, craft a plane and circle the world
게임TypeScript · JavaScriptGitHub @matthew-kissinger온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Exploration rebuild, 2026-11-01: walking and exploration lead the design, with crafting supporting the journey. Aurelia now uses a complete spherical landscape with six named habitats, five modular tree families and eight understory/flower modules. The other five worlds now use their own full-sphere terrain and climate recipes, with fifteen named regions, eleven new tall-growth families and fifteen groundcover modules: crystal impact basins, eroded desert mesas, glacial shelves, basalt calderas and fungal atolls. Six modular creature types replace the old animals in suitable habitats. Residents persist, with habitat behavior and articulated foot contacts. Airless Vespera has mineral growth and no native animals. A larger baked explorer uses nine authored clips, runtime blending and step-aware foot IK, plus configurable clothes, hair, headwear, packs, colors and stature. Lighting, surface materials, vehicles, equipment, camp kits, resource bundles and falling trees have also been rebuilt.
Survival and Creative have separate versioned saves. Open M → Explorer to switch mode or customize the character. Creative supplies every tool and vehicle, free building and destination travel through M → Worlds / Regions. Regions follows the current planet. Survival uses gathered resources, nearby cooking/crafting stations and physical travel; atlas buttons mark a course.
For food, B → Camp → Campfire costs 3 wood + 2 stone; select it and place with Q. Within 10 m of that fire, B → Make → Roast Meat uses 1 raw meat + 1 wood. To leave the planet, build a Workbench and Furnace, mine stone for iron ore and smelt two ingots. Craft the Starfarer at the Workbench with 8 wood + 4 stone + 2 iron ingots, board with E and climb above the displayed orbital height. The 12-wood skiff stays atmospheric.
The worlds-v3 save namespace keeps old foreign-world layer edits separate. On first
load, compatible Aurelia progress, inventory and appearance carry forward from the
prior mode's aurelia-v2 slot; the original slot is preserved. An explorer saved on
an old foreign world returns safely to Aurelia. Old foreign outposts/edits remain in
the old slot because their terrain and layer grid changed.
Selected simulation systems remain. Named-region discoveries and animal observations/feeding persist; landmarks are currently decorative and the population model is bounded habitat behavior, not a simulated food web. See the exploration direction, concept art, performance evidence, and meshlet evaluation. The Surveyor interface uses etched brass, enamel instruments and a route atlas. Cloud sampling and terrain transitions are refined; Survival vitals persist across reloads, and stowing a craft brakes its dismount momentum. A longer Survival run found a first-draw terrain-buffer burst, now handled through bounded GPU priming. The validation receipt distinguishes the pre-fix 16-minute journey from the three subsequent physical-flight repeats. See the game interface.
The older single-world description and screenshots below are historical, not the current feature specification.
For repeatable diagnostics, node scripts/profile-game.mjs LABEL PORT gpu captures
an unchanged local build, and node scripts/smoke-streaming.mjs http://127.0.0.1:PORT/
checks asynchronous edits, rapid planet changes, and worker recovery in a disposable
no-save browser. scripts/smoke-ui.mjs and scripts/smoke-rendering.mjs accept the same origin
argument and check interface flows and both rendering backends. Set CHROME_PATH if
Chrome is not in the default Windows location.
npm run assets:build regenerates the explorer GLB and surface-detail texture from
their editable sources. npm run assets:kits exports the shared fauna and vegetation
parts as portable GLB review kits; the game builds those small shared profiles once
and animates/varies them at runtime. scripts/smoke-expedition.mjs checks real-input movement,
foot contact, pausing and travel; scripts/smoke-expedition-ui.mjs checks modes,
stations, customization and save isolation. scripts/measure-travel.mjs separately measures
cold and cached travel in fresh browsers without motion recording overhead. Add
--all-worlds after its run-count and output label to visit all five new worlds and
return through cached destinations. scripts/smoke-worlds.mjs ORIGIN OUTPUT checks
native region travel, walking, surface traversal and orbital representation; add
--no-screenshots for an independent timing pass or --gl for WebGL2.
Play it: https://matthew-kissinger.github.io/goldberg-planet/
A small browser game on a spherical planet whose surface is a true Goldberg polyhedron (hexagons plus exactly twelve pentagons). The loop is one sitting long: walk the hex planet, chop trees for wood, craft a wooden bush plane from 12 wood, and fly it around the world, from a footstep in a clearing to the whole planet hanging in space. The topology is derived from scratch: combinatorial tile ids stitched across 20 icosahedral charts, no geometry library (Shape and identity).
Best in a WebGPU browser (Chrome/Edge); it falls back to WebGL2 automatically everywhere else. Phones get touch controls automatically, and a standard gamepad drives the whole loop.
| the wooden plane you craft | forests grow from the same seed | the whole planet in frame |
This is a deliberately small slate. An earlier, much larger survival-builder cycle ("Hearth and Horizon": building kits, fishing, cooking, caves gameplay, weather, creatures, pentagon landmarks) was burned down to this loop on 2026-10-26; its docs live in docs/archive/.
npm install
npm run dev # open the printed URL
npm test # topology, world, trees, crafting, drops, save, input, character tests
npm run build # typecheck + production bundle (deployed to Pages by CI)
URL params: ?mode=survival|creative (defaults Survival), ?seed=anything (world seed), ?m=192 (Goldberg frequency), ?gpu=gl (force
the WebGL2 fallback), ?touch=1 (force the touch UI), ?clouds=0 (no cloud layer),
?skyq=low|high (sky march quality; defaults low on coarse-pointer devices), ?debug=1
(start with F3 diagnostics open), ?nosave=1 (no local save), ?reset=1 (clear this
seed's save slot before boot), ?mute=1 (start muted), ?plane=1 (start with the plane
already crafted).
Progress (player, wood, plane, felled trees, loose logs) autosaves to localStorage per
seed and frequency.
| Keyboard + mouse | Touch | Gamepad | |
|---|---|---|---|
| Move / throttle | WASD (Shift sprints) | left stick (push past the rim to sprint) | left stick (full tilt or RB sprints) |
| Look / steer | mouse (pointer lock, or drag) | drag | right stick |
| Zoom (first person to orbit) | wheel | pinch | LB + right stick |
| Jump / climb, descend | Space, Ctrl or C | ▲ ▼ buttons | A, LT |
| Chop | left click (hold to keep swinging) | tap the tree | X or RT |
| Crafting panel | B (Esc closes) | craft button | Y (A crafts, B closes) |
| Craft + board / stow plane | E | plane button | Start |
| Free-flight (Creative) | F | ||
| Mute, stats, help | N, F3, H | Back+LB, R3+LB, R3 |
Velocity chases wherever you look, forward/back set the throttle, and, the part that makes it feel like flying around a planet, flying level holds your altitude above the ground, not above sea level. The flight model samples the column field under you and ahead of you, so rising terrain lifts you over ridgelines and falling terrain lets you sink back down the far side, all the way around the sphere.
src/main.ts: boot behind the splash, then the frame loop (input, player, camera,
streaming, chopping, save, HUD, render).src/game/: the loop itself. coreLoop.ts (inventory, chop, pickup, craft, board),
controls.ts (keyboard/touch/gamepad merged into one per-frame intent), cameraRig.ts
(ground-to-orbit camera), autosave.ts, spawn.ts, hints.ts (per-device copy).src/sim/: pure rules. crafting.ts, resourceDrops.ts, save.ts, equipment.ts
(character action and held item).src/world/: Goldberg tiles to terrain. Layers, terrain noise, columns (with natural cave
voids carved into the terrain), trees, chunk streaming, and ray picking.src/render/: chunk mesher, far sphere, ocean, sky and clouds, stars, character and
plane, loose-log drops, tile highlight.src/player/: player physics and the raw input devices.window.render_game_to_text() returns a read-only JSON snapshot (mode, inventory, target,
nearest tree bearing, plane state) for automated playtests.
three/webgpu (r185); automatic WebGL2 fallback (?gpu=gl).npm test and npm run build.?touch=1, with no console errors.base: './', so the same dist/ works under
https://matthew-kissinger.github.io/goldberg-planet/ and local static preview paths.main via .github/workflows/deploy.yml. The app is
static: no server, secrets, or runtime API keys.public/audio/music/MUSIC.md) predates the
burndown and still names the old pentagon domains.MIT. See LICENSE.