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,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Fossil-preparation game: crack, scribe and abrade procedurally generated fossils out of rock. Web + WebXR (iPad, PC, Quest).
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A fossil-preparation game for iPad, PC and Meta Quest 3S. Buy or collect fossil-bearing rock, work the matrix off with brushes, scrapers, air abrasion and acid, then display or sell the specimen. Later: expeditions to deposits by period, multi-specimen blocks where exposing one fossil can sacrifice another, and museum curation. Real techniques where possible; gameplay wins over realism.
docs/preparation-survey.md: real preparation techniques,
how each succeeds and fails, its damage modes and speed, rock/fossil compatibility, a
material property sheet, and proposed simulation rules.web/)A playable build for iPad, PC and Meta Quest (WebXR) from one URL. No build step: plain ES modules with three.js from a CDN.
cd web
./serve.py # desktop: http://localhost:8000
./serve.py --https # iPad / Quest on the LAN: https://<this-ip>:8443, accept the cert warning
WebXR needs HTTPS except on localhost, which is why --https makes a self-signed certificate.
Add ?level=phacops&seed=12 to jump straight into a level.
Levels: the contrast ladder.
Tools.
web/src/fracture.js): a crack takes the cheapest path the blow can pay for. Bedding
planes, joints, earlier damage and a clean fossil parting are all weak. Edge flakes come
away, blows into the middle of a face crush, and a side blow along a weak shale bedding
plane splits the layer off. Where the crack meets the fossil it follows the shell if it
parts cleanly and cuts through where it's welded. Pieces fall as debris.Discovery and planning.
Scoring. Fossil integrity % (shown live) times exposure gives the value. Materials are told apart by lustre as well as colour. There is a movable raking light and a wet-surface spray.
Design notes: docs/design-v2.md and docs/fracture-research.md.
Rules and numbers follow docs/preparation-survey.md §8.
Controls.
Code (web/src/).
trilobite.js: seeded SDF, ported from the prototype, plus spine part IDs.specimen.js: block, strata and parting map; the spine-support lists and grading targets.volume.js: density fields and ray marching.mesher.js: chunked surface nets with gradient normals.tools.js: tool physics and grading.view.js: three.js scene.input.js: touch, mouse and pad input.xr.js: Quest controls.audio.js: synthesised tool sounds.game.js and ui.js: game loop and interface.Tests (web/test/).
node test/sim.test.js: builds and meshes every level, and checks the mesh is closed and
outward-facing. Add --reveal --ply DIR to export meshes for Blender.node test/selectivity.js: one second of each tool on rock and on shell, per level. This
is the contrast ladder in numbers.node test/pacing.js LEVEL TOOL [MEDIA]: a methodical bot. It reports exposure, damage
and value against simulated play time.node test/balance.js: a careless bot.node test/fracture.test.js LEVEL: chisel scenarios. A centre blow crushes, an edge
blow flakes, and a side blow along the bedding splits.node test/smoke.mjs, node test/xr-smoke.mjs and node test/career.mjs: browser checks with the server (career: storeroom, pack up, resume)node test/loose.test.js: loose rock falls away; sliced jobs give identical resultsnode test/frames.mjs: frame times through a big chisel split on the GPU (performance probe)node test/bake.test.js: a prepared specimen baked to a light display meshnode test/museum.mjs: finish two specimens, display them, walk the museum (screenshots in ../build/museum)node test/economy.test.js: what displays and the gift shop bring in per day
running. The XR test emulates a Quest 3 with Meta's IWER and drives the controllers.npm i, then npx playwright install chromium.proto/)Python generator plus a Blender renderer for checking the look before engine work.
python3 -m venv venv && venv/bin/pip install numpy scipy scikit-image
venv/bin/python proto/generate.py --sheet 1-12 --specimens 3,6 # meshes -> build/meshes/*.ply
blender -b --python proto/render_blender.py -- --samples 96 # renders -> build/*.png
Outputs: build/trilobite_sheet.png (12 seeds), build/specimen_NNNN_stages.png
(raw / partial / prepared), build/specimen_NNNN_closeup.png. Each fossil's parameters
are saved next to its mesh as JSON.
fossilgen/trilobite.py): the shield is a height field over a seeded
outline. It has a head shield (cephalon), thorax segments and a tail shield
(pygidium). The axial lobe, furrows, glabella, border rim and tubercles are all height
terms. Spines and eyes are 3D shapes smooth-unioned on. The head and trunk are separate
volumes so a moult can shift the head away from the body.fossilgen/localities.py): six archetypes loosely based on real groups.
These are ptychopariid, redlichiid, asaphid, phacopid, dalmanitid and odontopleurid.
Each specimen is a primary archetype blended with a secondary one. About 15% of seeds
are strong blends: plausible animals that have never been found.fossilgen/specimen.py): the block is a noisy rounded box with chipped
faces and seeded strata, and the fossil rests on a bedding plane. Preparation is a
floor field: the bedding plane next to the fossil, with a moat against the outline
and a slope rising away from it. The partial stage adds a ragged working front.
Vertex colours mark fossil vs matrix and fresh-worked vs weathered rind.