# 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 - App/package READMEs listed above for module-specific setup and architecture