Files
security-game/docs/adr/0006-godot-4-gdscript.md
T
zwitschi e23f284ad4 Add initial README and architecture decision records for venue-driven simulation game
- Introduced README.md outlining game concept, mechanics, and planned venues.
- Added ADRs for venue-driven architecture, de-escalation-first model, explicit access verification, local single-player focus, event-based incident recording, and choice of Godot 4 with GDScript.
2026-10-31 11:16:53 +01:00

34 lines
1.6 KiB
Markdown

# ADR-0006: Godot 4 with GDScript
- **Status:** Accepted
- **Date:** TBD
## Context
The project needs a game engine and programming language before implementation can begin. The game is a local single-player workplace simulation with navigation, crowds, NPC behavior, UI for access checks and dialogue, audio, and shift-scoring systems. The project benefits from fast iteration, low cost, and the ability to run rules and scenario tests headlessly.
## Decision
Use the Godot Engine 4.x with GDScript for gameplay logic. Model the venue-driven architecture as nodes, scenes, and custom `Resource` types. Use Godot's navigation, UI, audio, and headless mode. Test with the GUT framework.
## Consequences
### Positive
- Free and open-source license with no per-seat or royalty cost.
- Built-in 3D rendering, navigation, animation, UI, and audio reduce external dependencies.
- GDScript is tightly integrated and fast to iterate on.
- Headless mode supports deterministic, GUI-free automated tests.
- Custom resources make scenario data editable and data-driven.
### Negative
- GDScript is less suited to very large, performance-critical systems than some alternatives.
- The team commits to Godot's editor workflow and version cadence.
- C# remains an option only if future needs justify adding a toolchain.
## Alternatives considered
- **Unity with C#:** Rejected due to licensing uncertainty and a heavier editor/workflow.
- **Bevy with Rust:** Rejected because Rust adds friction and iteration time for a prototype team.
- **Web-based TypeScript (Three.js/Babylon.js):** Rejected because Godot provides more out-of-the-box game systems and simpler desktop export.