Skip to content
ForgottenHistory edited this page Jan 18, 2026 · 1 revision

Archon Engine Wiki

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.

Quick Links

Getting Started Feature Guides Reference
Getting Started Commands Architecture Overview
Your First Game Events Engine Architecture Docs
Economy Session Logs
Buildings
Units
Map Modes

What is Archon?

Archon is split into two parts:

  1. 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
  2. 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.

Core Concepts

Dual-Layer Architecture

  • CPU Simulation: Deterministic game state using fixed-point math
  • GPU Presentation: High-performance rendering using textures, not meshes

ENGINE vs GAME Separation

  • 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.

Command Pattern

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.

Event-Driven Communication

Systems communicate via EventBus (zero-allocation structs):

// Subscribe to events
gameState.EventBus.Subscribe<BuildingConstructedEvent>(OnBuildingBuilt);

// Emit events
gameState.EventBus.Emit(new BuildingConstructedEvent { ProvinceId = 42 });

Project Structure

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
    └── ...

Requirements

  • 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

Next Steps

  1. New to Archon? → Start with Getting Started
  2. Want to build a game? → Follow Your First Game
  3. Adding features? → See Commands, Events, Economy
  4. Custom visuals? → See Map Modes

Getting Help