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.