Prerequisites
- Python 3.13 or higher
- Git
- uv (recommended) - Install uv
Clone the repository
Project structure
The repository is organized as follows:Development workflow
Running tests
Run the test suite:Code quality checks
Run linting:The
just command requires just to be installed.Development dependencies
Development dependencies are defined in thedependency-groups section of pyproject.toml:
| Package | Purpose |
|---|---|
pytest | Testing framework |
pytest-cov | Coverage reporting |
pytest-mock | Mocking utilities |
syrupy | Snapshot testing |
ruff | Linting and formatting |
ty | Type checking |
import-linter | Import dependency validation |
numpy | Numerical testing utilities |
pylint | Additional linting |
mkdocstrings | API documentation |
zensical | Documentation site generator |
Running specific components
Extract game assets
Extract PAQ archives into a filesystem tree:View quest scripts
Print quest spawn scripts:Launch debug views
Run debug views and sandboxes:Replay commands
List replays:Building the documentation
The project documentation is built with zensical:http://localhost:3000.
Pre-commit hooks
Install git hooks for automatic checks:pre-commitruns fast checks (ruff/import-linter/ty/docs/ast-grep)pre-pushruns heavy checks (pytest/build)
Contributing
Before contributing, please read:- CONTRIBUTING.md - Development philosophy and guidelines
- Float parity policy - Deterministic behavior requirements
- Differential playbook - Capture-driven parity workflow
Key principles
- Deterministic parity + evidence-backed correctness - Preserve native-faithful behavior and prove it with captures/replays/tests
- Structural simplicity - Prefer deleting complexity over adding layers
- UX polish - Only after parity is preserved
Verification commands
Before committing:Local runtime directory
By default, runtime files (saves, config, logs, replays) are stored in your per-user data directory. To keep everything local to the checkout:Next steps
Runtime configuration
Customize runtime directories and configuration
CLI reference
Explore all available commands
Architecture
Understand the codebase structure
Reverse engineering
Learn about the decompilation process