What is Gnosis Engine?
Gnosis Engine is a Unity runtime package that gives you:
- A single shared state tree split into Persistent (settings, unlocks, configuration) and Ephemeral (per-run roguelike state).
- Services with stable string ids (e.g.
Money,Shop,UserInterface) that own slices of that state and expose named functions (InvokeFunction). - An event bus plus data-driven rules (JSON under
Persistent.configuration.rules) that can intercept events, observe facts, or trigger side effects. - Unity adapters (
UnityGnosisAdaptersubclasses) that bind engine services to UI Toolkit, audio, input, etc., without putting Unity APIs inside core services.
It is aimed at games that want JSON-tunable balance and content (boons, consumables, shops, scaling) while keeping game-specific simulation (board, world, combat loop, etc.) in your own code that talks to the engine through events and/or a dedicated service.
When it is a good fit
- You want one place for save-shaped data and run-shaped data, with clear lifecycle (new run vs continue).
- Designers or tools edit JSON (rules, definitions, invocations) more than C#.
- You are OK reading C# for behavior that is not expressible in data (new service, new adapter, new event types).
When to look elsewhere or keep code minimal
- You need no shared service layer—only a small game might not justify the indirection.
- You dislike stringly-typed service ids and event ids; the engine leans on conventions and JSON.
Key types (for navigation)
| Concept | Code entry |
|---|---|
| Unity entry point | UnityGnosisEngine |
| Pure C# orchestrator | GnosisEngine |
| State + branches | GnosisState, Persistent / Ephemeral under root |
| Dynamic JSON-like values | GnosisNode, GnosisStore, GnosisValue |
| Cross-service calls | GnosisEngine.CallFunction, RunInvocationList |
| Events + rules | IGnosisEventBus / GnosisEventBus, GnosisRule, GnosisRuleService |
Next: Unity host & runs for how lifetimes map to Play Mode.
Last updated on