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。 以下為已儲存的摘錄。
public facing side of the Aleucia TTRPG world. Runs on Node + Vitest (jsdom environment). The suite covers:檢視完整 README ↗
public facing side of the Aleucia TTRPG world.
npm install
npm test
Runs on Node + Vitest (jsdom environment). The suite covers:
tests/unit/ — the pure logic in assets/js/*.js (auth/session handling, the
auth guard, the content-store cache, character-data helpers, world.js
helpers, the relationship graph, the player nav menu). These scripts are
loaded exactly as a <script> tag would, so no source changes were needed
to test them.tests/data/ — validates data/*.json against data-schema.json's field
list, and cross-checks the exported data itself (relationship edges resolve
to real entities, image paths resolve to real files, manifest counts match
the data on disk, the auth.js roster matches data/characters.json).tests/static/ — every protected page loads assets/js/guard.js first (see
SECURITY.md), and every internal link/asset reference across the site
resolves to a real file.CI runs this on every push and pull request via .github/workflows/test.yml.
data/maps/index.json's imageFile entries are the full-resolution map
exports (several MB each), which is too slow for the location and assets-list
card grids to load a dozen of at once. scripts/generate-map-thumbnails.py
derives a compressed thumbFile for each map that's missing one, or whose
source image changed (Cast's imageHash no longer matches the recorded
thumbHash).
.github/workflows/map-thumbnails.yml runs this automatically on every push
that touches data/maps/index.json or data/assets/maps/** (i.e. every data
re-export from the vault; Cast carries thumbFile/thumbHash forward for
maps whose image is unchanged, so only new or replaced images are redone) and
commits any new thumbnails back to
the branch — new maps get one without anyone having to remember to run the
script. tests/data/data-integrity.test.js fails if a map is ever missing
its thumbFile, which is the signal that workflow didn't run (e.g. a fork
PR, where the default GITHUB_TOKEN can't push back).
To run it yourself — required for a fork PR, or just to check before pushing:
pip install Pillow
python3 scripts/generate-map-thumbnails.py
Every spell gets a spell writing circle, drawn per the Gorilla of Destiny's
Spell Writing Guide
and shown in the spell's expanded card on the Spell Book. scripts/generate-spell-circles.py
(standard library only, no pip packages) writes one SVG per spell in
data/spells.json to assets/spell-circles/<spell-slug>.svg, and removes
circles for spells that are gone. Damage type and area of effect aren't in
spells.json, so they are read from the rules text; each SVG's <desc> lists
the values used.
It is part of the build: npm run build runs it, and
.github/workflows/spell-circles.yml runs it on every push that touches
data/spells.json and commits the result (GitHub Pages only runs Jekyll, so
the circles are committed, like the map thumbnails). npm test fails if a
circle is missing, orphaned or stale — rerun npm run build to fix.
GitHub Pages (and browsers) cache assets/css/style.css and the page
scripts, so a page can load new HTML/JS alongside a stale stylesheet and
render broken. Every page links the stylesheet as style.css?v=N — bump
N in all *.html files whenever a change adds or renames CSS classes
that new markup depends on.