Files
wolf_dart/README.md
T

87 lines
2.0 KiB
Markdown

# wolf_dart
Wolfenstein 3D workspace built with Dart + Flutter.
This repository is organized as a multi-package workspace:
- **Apps** in `apps/` (CLI host and Flutter GUI host)
- **Packages** in `packages/` (core engine, Flutter integration, and assets)
The project expects you to provide legal Wolfenstein 3D game data files locally.
## Workspace Layout
### Apps
- [`apps/wolf_3d_gui/`](apps/wolf_3d_gui/README.md) — Flutter app host (desktop/web)
- [`apps/wolf_3d_cli/`](apps/wolf_3d_cli/README.md) — terminal CLI host
### Packages
- [`packages/wolf_3d_dart/`](packages/wolf_3d_dart/README.md) — core engine/runtime (non-Flutter)
- [`packages/wolf_3d_flutter/`](packages/wolf_3d_flutter/README.md) — Flutter host and UI integration
- [`packages/wolf_3d_assets/`](packages/wolf_3d_assets/README.md) — shared packaged asset trees
## Prerequisites
- Dart SDK `^3.11.1`
- Flutter SDK (for GUI app and Flutter package work)
### Linux native requirements
On Debian/Ubuntu, install:
`libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev lld`
## Quick Start
From workspace root:
```bash
dart pub get
```
Run GUI host:
```bash
cd apps/wolf_3d_gui
flutter run
```
Run CLI host:
```bash
cd apps/wolf_3d_cli
dart run bin/main.dart
```
If game data is not auto-discovered, pass a directory explicitly for CLI:
```bash
dart run bin/main.dart --data-directory /path/to/game-data
```
## Development Workflow
Typical contributor loop:
1. Update dependencies in relevant app/package (`dart pub get` or `flutter pub get`).
2. Run focused tests in the module you changed.
3. Run static analysis for the same module before submitting changes.
4. Keep docs in sync when command-line flags, platform support, or public APIs change.
## Testing
Run tests by module (examples):
```bash
cd packages/wolf_3d_dart && dart test
cd packages/wolf_3d_flutter && flutter test
cd apps/wolf_3d_gui && flutter test
```
## Related Docs
- [`TODO.md`](TODO.md) — high-level project roadmap
- App/package READMEs listed above for module-specific setup and architecture