A narrative-driven Godot game blending retro aesthetics (DOS terminals, NetHack ASCII, Wizardry party management, dungeon crawling, pixel combat) with modern AI-powered storytelling.
Omega Spiral is an revolutionary and evolutionary narrative and turn based rpg game where players navigate through five distinct scenes, each representing a different era of gaming aesthetics. The game features dynamic AI-driven narrative personas (Dreamweavers) that adapt to player choices, creating emergent storytelling experiences.
- 5 Unique Scenes: Each with distinct visual styles and gameplay mechanics
- AI-Powered Narratives: Three Dreamweaver personas + Omega system for dynamic storytelling
- Retro Aesthetics: CRT effects, terminal interfaces, ASCII art, and pixel graphics
- Character Progression: Party management, stats, and persistent save system
- Engine: Godot 4.5 with .NET/Mono support
- Language: C# for game logic
- AI Integration: NobodyWho plugin for local LLM inference
- Testing: NUnit + Godot test framework
- Godot 4.5 (Mono/.NET version): Download here
- .NET 8.0 SDK: Download here
- Git: For cloning the repository
- Visual Studio Code or Rider for C# development
- Min0: For handling large assets (if needed)
git clone https://github.com/jessenaiman/chapter-zero.git
cd chapter-zeroThe game uses local LLM models for dynamic narrative generation. Due to file size constraints, the model is not included in the repository.
Recommended Model: Qwen3-4B-Instruct Q4_K_M (~2.5GB)
mkdir -p models
cd models
wget https://huggingface.co/Qwen/Qwen2.5-3B-Instruct-GGUF/resolve/main/qwen2.5-3b-instruct-q4_k_m.gguf
mv qwen2.5-3b-instruct-q4_k_m.gguf qwen3-4b-instruct-2507-q4_k_m.gguf
cd ..- Visit Qwen2.5-3B-Instruct on Hugging Face
- Download
qwen2.5-3b-instruct-q4_k_m.gguf - Create a
models/directory in the project root - Move the downloaded file to
models/qwen3-4b-instruct-2507-q4_k_m.gguf
- Smaller/Faster (~600MB): Qwen2.5-0.5B-Instruct
- Larger/Quality (~8GB): Qwen2.5-7B-Instruct
- Launch Godot 4.5 (Mono version)
- Click "Import"
- Navigate to the cloned repository
- Select
project.godot - Click "Import & Edit"
The NobodyWho plugin requires platform-specific binaries that are too large for git. Download them separately:
- Visit NobodyWho Releases
- Download the latest release for your platform
- Extract the binaries to
addons/nobodywho/directory
Expected files:
- Linux:
nobodywho-godot-x86_64-unknown-linux-gnu-release.so - Windows:
nobodywho-godot-x86_64-pc-windows-msvc-release.dll - macOS:
nobodywho-godot-x86_64-apple-darwin-release.dylibandnobodywho-godot-aarch64-apple-darwin-release.dylib
- In Godot, go to Project → Project Settings → Plugins
- Enable the "NobodyWho" plugin
- Restart the Godot editor when prompted
Godot should automatically build the C# project. If not:
dotnet build OmegaSpiral.csprojPress F5 or click the Play button in the top-right corner.
godot --path . --verbosechapter-zero/
├── Source/
│ ├── Scenes/ # Godot scene files (.tscn)
│ ├── Scripts/ # C# game logic
│ ├── Shaders/ # CRT and visual effects
│ ├── Resources/ # Assets and resources
│ └── Data/ # Game data (JSON, YAML)
├── Tests/ # NUnit test files
├── addons/
│ └── nobodywho/ # LLM integration plugin
├── models/ # LLM models (gitignored)
├── docs/ # Documentation and ADRs
└── specs/ # Feature specifications
dotnet testNote: Some tests require the Godot runtime and cannot be run with dotnet test alone. For full integration testing, use Godot's test runner or GdUnit4.
- Review the relevant specification in
specs/ - Check Architecture Decision Records (ADRs) in
docs/adr/ - Understand the data models in
docs/adr/adr-0002-namespace-review.md
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes
- Run tests:
dotnet test - Commit with descriptive messages
- Push and create a Pull Request
- Follow C# coding conventions
- Include XML documentation comments
- Pass all existing tests
- Maintain or improve code coverage
Before every commit, the following checks are automatically run and must pass:
- Code Formatting:
dotnet format --verify-no-changesensures all code is properly formatted. - Static Analysis & Linting:
dotnet build --warnaserrorenforces all warnings as errors, using Roslyn and StyleCop analyzers. - Automated Tests:
dotnet testruns all unit and integration tests. - Security Scan (Optional): If Trivy is installed,
trivy fs --exit-code 1 --severity HIGH,CRITICAL .scans for vulnerabilities and secrets.
If any check fails, the commit is blocked until issues are resolved.
- The
.git/hooks/pre-commitscript enforces these checks automatically. - All contributors must have these tools installed and configured.
- No code with errors, warnings, failed tests, or critical vulnerabilities can be committed.
- Ensure you have the latest .NET SDK and Trivy (optional) installed.
- The pre-commit hook is located at
.git/hooks/pre-commitand should be executable. - If you clone the repo, verify the hook is present and run
chmod +x .git/hooks/pre-commitif needed.
This workflow guarantees that only clean, tested, and secure code is committed, preventing error accumulation and improving team velocity.
- Scene 1: Narrative Terminal - DOS-style terminal with typewriter effect and CRT shader
- Scene 2: NetHack Sequence - ASCII dungeon exploration
- Scene 3: Wizardry Party - Party management and character creation
- Scene 4: Tile Dungeon - Grid-based dungeon crawling
- Scene 5: Pixel Combat - Turn-based combat system
The game uses the NobodyWho plugin to run local LLMs for:
- Three Dreamweaver Personas: Hero, Shadow, and Ambition guides
- Omega System: Meta-narrator weaving player choices into coherent narrative
- Dynamic Responses: Context-aware dialogue based on game state
See docs/adr/adr-0003-nobodywho-llm-integration.md for full implementation details.
Ensure you have Godot 4.5 Mono version, not the standard version. Check by opening Godot and verifying ".NET" appears in the version string.
- Verify the model file is in
models/qwen3-4b-instruct-2507-q4_k_m.gguf - Check file size is approximately 2.5GB
- Ensure the NobodyWho plugin is enabled
# Clean and rebuild
dotnet clean
dotnet buildSome tests depend on Godot nodes and require the Godot runtime. Run them through Godot's test interface or use GdUnit4.
- Fork the repository
- Create a feature branch
- Make your changes with tests
- Ensure code passes quality checks
- Submit a Pull Request
[License information to be added]
- Technical Lead: Adam (jessenaiman)
- NobodyWho Plugin: nobodywho-ooo/nobodywho
- Qwen Models: Alibaba Cloud
For issues, questions, or contributions, please open an issue on GitHub.
Last Updated: October 10, 2025