-
Notifications
You must be signed in to change notification settings - Fork 3
Home
Archon is a high-performance grand strategy game engine built in Unity. It provides the foundation for building games like Europa Universalis, Crusader Kings, or Victoria—with support for thousands of provinces, deterministic multiplayer, and modding.
| Getting Started | Feature Guides | Reference |
|---|---|---|
| Getting Started | Commands | Architecture Overview |
| Your First Game | Events | Engine Architecture Docs |
| Economy | Session Logs | |
| Buildings | ||
| Units | ||
| Map Modes |
Archon is split into two parts:
-
ENGINE (
Assets/Archon-Engine/) - Reusable grand strategy infrastructure- Province/country systems with GPU-accelerated map rendering
- Command pattern for deterministic state changes
- Event-driven architecture with zero allocations
- Save/load, pathfinding, modifiers, time management
-
GAME (your code) - Game-specific rules and content
- Economy formulas, building effects, unit stats
- UI panels and player interactions
- AI goals and decision-making
- Custom map modes and visualizations
The StarterKit (Assets/Archon-Engine/Scripts/StarterKit/) demonstrates how to build a GAME layer using the ENGINE.
- CPU Simulation: Deterministic game state using fixed-point math
- GPU Presentation: High-performance rendering using textures, not meshes
- ENGINE provides mechanisms (HOW things work)
- GAME defines policy (WHAT happens)
Example: ENGINE provides ModifierSystem for applying bonuses. GAME defines that farms give +1 local income.
All state changes flow through commands:
// GAME layer creates command
var cmd = new ConstructBuildingCommand { ProvinceId = 42, BuildingType = "farm" };
// ENGINE validates and executes
commandProcessor.Execute(cmd);This enables: multiplayer sync, replay, undo, and save/load.
Systems communicate via EventBus (zero-allocation structs):
// Subscribe to events
gameState.EventBus.Subscribe<BuildingConstructedEvent>(OnBuildingBuilt);
// Emit events
gameState.EventBus.Emit(new BuildingConstructedEvent { ProvinceId = 42 });Assets/
├── Archon-Engine/ # ENGINE (don't modify unless contributing)
│ ├── Scripts/
│ │ ├── Core/ # Simulation: provinces, countries, commands
│ │ ├── Map/ # Rendering: textures, borders, selection
│ │ ├── StarterKit/ # Example GAME layer (copy this!)
│ │ └── Utils/ # Logging, circular buffers
│ └── Docs/
│ ├── Wiki/ # You are here
│ ├── Engine/ # Architecture documentation
│ └── Log/ # Development session logs
│
└── Game/ # YOUR GAME (modify freely)
├── Systems/ # Your game systems
├── Commands/ # Your commands
├── UI/ # Your UI panels
└── ...
- Unity 2023.3+ (6000+, preferably latest LTS version)
- Universal Render Pipeline (URP)
- IL2CPP scripting backend (Mono is fine for development though)
- Burst Compiler enabled
- UI Toolkit
- New to Archon? → Start with Getting Started
- Want to build a game? → Follow Your First Game
- Adding features? → See Commands, Events, Economy
- Custom visuals? → See Map Modes
- Search the API Documentation
- Review the StarterKit source code