Pygame-based 3D shooter prototype (currently scaffolding and tooling). This repo uses the uv Python package/dependency manager for fast, reproducible environments.
Prerequisites:
- Python 3.10+
- uv installed (
pipx install uvor see uv docs)
Setup dependencies (including dev tools):
uv sync --devRun the game:
uv run python -m wolfie3dIf you prefer a simpler variant without enemies (for debugging/demo):
uv run python -m wolfie3d.game_no_enemiesTip:
uv runexecutes commands inside the project’s virtual environment without activating it manually.
Common checks:
uv run python -m ruff check .
uv run python -m mypy src
uv run python -m pytestFormat code:
uv run python -m black .Coverage:
PYTHONPATH=src uv run python -m pytest --cov --cov-report=term-missingPre-commit (optional, if you enable hooks):
uv run python -m pre_commit run --all-files || uv run python -m pre-commit run --all-filessrc/wolfie3d/— core package (entry point:python -m wolfie3d)assets/— game assets (textures, sprites, etc.)tests/— unit/integration tests (add new ones here)docs/— design notes and documentationscripts/— helper scripts
You can still use a traditional virtualenv, but we recommend uv for speed and reproducibility.
python -m venv .venv
source .venv/bin/activate # Windows: .venv\\Scripts\\activate
pip install -e .[dev]
python -m wolfie3d- Import errors or missing packages: run
uv sync --devagain. - Pygame display issues on headless machines/CI: use a virtual framebuffer or skip running the game; tests shouldn’t require a display by default.
- If
uvis not found, install it viapipx install uvor see the official docs linked above.
- Follow Black/Ruff/Mypy rules; keep functions small and documented.
- All new code in
src/should have corresponding tests intests/. - Use conventional commits (
feat:,fix:,chore:,docs:,test:). - Open PRs from
feat/*,fix/*, etc. branches; ensure checks pass before review.
TBD.