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,即可验证所有权并自行管理介绍。
一分钟完成验证Core Gyrinx application
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
This repository contains the Gyrinx Django application - a gang management tool
for Necromunda. The code for this application is in the gyrinx
directory.
📚 Full Documentation - Technical overview, architecture,
and development guides.查看完整 README ↗This repository contains the Gyrinx Django application - a gang management tool
for Necromunda. The code for this application is in the gyrinx
directory.
📚 Full Documentation - Technical overview, architecture, and development guides.
Before getting started, you'll need:
curl -LsSf https://astral.sh/uv/install.sh | shsetup-local-postgres.sh, dev.sh) are
macOS-only. Linux contributors will need to set up PostgreSQL 16 manually and start it
before running dev.sh# Clone and enter the repository
git clone [email protected]:gyrinx-app/gyrinx.git && cd gyrinx
# Set up Python environment (creates .venv and installs the locked dependencies)
uv sync --locked
. .venv/bin/activate
# Configure the application
manage setupenv
# Set up frontend toolchain
nodeenv -p && npm install && npm run build
# One-time: install and initialise local PostgreSQL (macOS via Homebrew)
./scripts/setup-local-postgres.sh
# Start the development server (DB fork + migrate + runserver + CSS watch)
./scripts/dev.sh
Visit http://localhost:8000 to see the application.
There's a devcontainer configured in this repo which should get you up and running too, perhaps via a Codespace.
The Django manage.py file (in scripts/) is added to your shell by
setuptools, so you can just use manage from anywhere:
manage shell
The Quick Start above gets you running fast. For more detailed steps:
Clone the repository:
git clone [email protected]:gyrinx-app/gyrinx.git
cd gyrinx
Make sure you're using the right Python version:
python --version # should be >= 3.12
If you use pyenv, we have a .python-version file. If you have pyenv active
in your environment, this file will automatically activate this version for you.
Create the virtual environment and install dependencies:
uv sync --locked && . .venv/bin/activate
uv sync creates .venv, installs the exact versions pinned in uv.lock,
and installs the project itself in editable mode.
Check the manage command is available:
manage --help
Dependencies are declared in pyproject.toml — never edit uv.lock by hand,
and don't pip install into the venv, as the next uv sync will remove
anything the lock doesn't mention. Use uv add / uv remove instead.
You should then be able to run Django manage commands. This one will set up
your .env file:
manage setupenv
With that run, you'll have a .env file with a random and unique
SECRET_KEY and DJANGO_SUPERUSER_PASSWORD:
cat .env
Next, set up the frontend toolchain:
Get nodeenv (installed by uv sync earlier) to install
node and npm in the
virtual env.
nodeenv -p
Check it has worked (you might need to deactivate then
. .venv/bin/activate):
which node # should be /path/to/repo/.venv/bin/node
which npm # should be /path/to/repo/.venv/bin/npm
Install the frontend dependencies:
npm install
The development workflow is a single command:
./scripts/dev.sh
This handles:
gyrinx_main template (if missing)main, 8100–9599 for child worktrees)npm run watch for SCSS rebuildsUseful flags:
./scripts/dev.sh --no-watch # skip the CSS watcher
./scripts/dev.sh --reset-db # drop and re-fork the worktree DB
If you've never set up local PostgreSQL on this machine, run
./scripts/setup-local-postgres.sh first.
[!NOTE] For details on the per-worktree database model and how
gyrinx_mainis used as a template, see docs/useful-scripts.md.
The Python toolchain installs nodeenv which is then used to install node and
npm so we have a frontend toolchain.
To continuously rebuild the frontend (necessary for CSS updates from SASS):
npm run watch
Tests run against your local PostgreSQL database. setup-local-postgres.sh
configures everything you need: max_locks_per_transaction = 256 on the
cluster (required for pytest-xdist parallel syncdb), and a hook in
.venv/bin/activate that exports the per-worktree DB_NAME / DB_CONFIG /
DJANGO_PORT so pytest and manage target the right database.
[!IMPORTANT] Re-run
source .venv/bin/activateafter switching worktrees. The hook readsgit rev-parse --show-toplevelat activation time, not on every command. Symptom of forgetting:pytestfails withFATAL: role "postgres" does not exist(settings.py fell back to defaults becauseDB_CONFIGwas unset or pinned to the wrong worktree).
The wrapper script is a thin convenience over pytest:
./scripts/test.sh # parallel (via pyproject addopts: -n auto)
./scripts/test.sh -n 0 # serial
Or invoke pytest directly — pyproject.toml already sets -n auto --nomigrations, so the bare command runs the full suite in parallel and
rebuilds the test DB from current model definitions on every run:
pytest # full suite, parallel
pytest n23/core/tests/ # one directory
pytest -k campaign # by name
You can also use pytest-watcher for continuous testing:
ptw .
CI runs the same pytest invocation against a GitHub Actions service container
Postgres — see .github/workflows/test.yaml.
To create a new empty migration file for doing data migration:
manage makemigrations --empty content
You can debug the SQL that Gyrinx is running using the Django Debug Toolbar that is installed.
You can also enable SQL logging by setting the SQL_DEBUG variable:
SQL_DEBUG=True
To test Gyrinx locally, you are really limited unless you have the content library data available. This is because the content library is what provides the data for the Gyrinx application to work with.
The content library is managed by the Gyrinx content team in production, and is what makes Gyrinx useful.
Gyrinx uses a custom-ish data export/import process to manage content library data from production, so you can test locally.
[!NOTE] This process is only available for trusted developers and admins.
gyrinx-dumpdata Cloud Run job in production to export
content to the gyrinx-app-bootstrap-dump bucketlatest.json from the bucket and use
manage loaddata_overwrite latest.json to replace local content dataThis process ensures we have access to the latest production content library. See docs/operations/content-data-management.md for details.
Build the frontend:
npm run build
Install the pre-commit hooks:
Before making any changes, make sure you've got pre-commit hooks installed.
pre-commit is one of the locked dependencies, so uv sync already
installed it.
pre-commit install