This project is an exploration of using Arch ECS together with Godot 4 (.NET).
Features: deterministic gameplay, command pattern, EventBus integration, complete state serialization (save/load), and engine-agnostic game logic.
This project implements the Stranne.EcsArchitecture template, which provides:
- Layered architecture (Core, Adapter, Contracts, UI)
- Command pattern infrastructure
- Event system with Arch.EventBus
- Deterministic ECS logic
- Complete testing patterns
For architectural details, see the Architecture Template.
-
It’s a classic Memory game:
- Flip two cards at a time.
- If they match, they stay visible.
- If not, they flip back after a short delay.
- The game ends when all cards are matched.
-
The UI is minimal:
- A grid of cards (buttons).
- A move counter.
- A New Game button to restart with a new seed.
- Adapter: Thin bridge between Core and Game (Godot).
- Contracts: Shared DTOs and event interfaces for cross-assembly communication.
- Core: Arch ECS logic (deterministic, engine-agnostic) with EventBus for event handling.
- Core.Tests: Unit tests for Core game logic.
- Game: Visuals and input using Godot game engine.
Before running, make sure you have Godot .NET installed.
- From IDE: open the solution in Visual Studio and run the
Stranne.EcsMemory.Gameproject. - From CLI: from the repository root, run:
godot --path Stranne.EcsMemory.GameOn some systems use godot4 or Godot.exe.
