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

1.6 KiB

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.