Happy Healthy Games
A Godot party game, built for determinism
A friend and I built this Godot 4 party game in one night: a signal-driven architecture with a headless test harness that runs a thousand shuffle iterations and a hundred random matches to check the rules hold.
Project brief
PrototypeProblem
Game rules are difficult to trust when state changes are spread across rendering code.
Outcome
A Godot 4 party game built with a friend in one night, on a signal-driven architecture with a headless test harness that runs a thousand shuffle iterations and a hundred random matches to check the rules hold.
Evidence
- That split is what makes it testable without a renderer: a shuffle-stability invariant over a thousand iterations, and a hundred random matches run headless.
- Headless harness fuzzes matches to verify single-winner termination.
Key decisions
- Mutation zone: Only GameManager changes game state; subscribers react to typed signals.
- Input zone: InputController gates player intent against the current FSM state.
- Test zone: Headless harness fuzzes matches to verify single-winner termination.
- Presentation zone: HUD, audio, FX, and visuals never mutate model state directly.
The build
My friend and I built a Godot 4 party game where one object mutates state through an explicit finite-state machine; everything on screen is a pure subscriber to typed signals. That split is what makes it testable without a renderer: a shuffle-stability invariant over a thousand iterations, and a hundred random matches run headless. A one-command installer bootstraps the toolchain. State machines here share the explicit-transition discipline Tightrope applies to API contracts. Scripts judge; agents propose is the same trust split applied to game rules instead of APIs.
Why it's built this way
Game rules are difficult to trust when state changes are spread across rendering code.
Architecture
Happy Healthy Games is built for determinism. One object mutates state through an explicit finite-state machine; everything on screen subscribes to typed signals.
Zones
Mutation zone
Only GameManager changes game state; subscribers react to typed signals.
Input zone
InputController gates player intent against the current FSM state.
Test zone
Headless harness fuzzes matches to verify single-winner termination.
Presentation zone
HUD, audio, FX, and visuals never mutate model state directly.
Skills applied
Happy Healthy Games is built as an interactive game loop with explicit state and feedback.
Game logic in Happy Healthy Games is written in GDScript on Godot.
Thousand-iteration shuffle stability and hundred random headless matches catch rule regressions.
Happy Healthy Games enumerates states and transitions so “what can happen next” stays testable.
Where automation helps outside the renderer, Python supports harness and tooling edges.
Headless harnesses make party-game rules regression-testable without a play session.
Happy Healthy Games runs on the Godot engine: scenes, nodes, and export targets.
Related work
Related writing
Portfolio graph
Maps how the work here connects. Open the Portfolio graph →
- Professional
- Personal
- Skill
- Writing