Quick Start — 5-Minute Pack Creation
Create a minimal balance pack in under 5 minutes.
Prerequisites
- DINOForge installed (Getting Started)
.NET 8 SDKinstalled- A text editor or IDE
1. Create the Pack Directory
bash
mkdir -p packs/my-balance-mod
cd packs/my-balance-mod2. Write the Manifest
Create pack.yaml:
yaml
id: my-balance-mod
name: My Balance Mod
version: 0.1.0
framework_version: ">=0.1.0 <1.0.0"
author: Your Name
type: balance
description: Doubles archer damage and increases wall HP
depends_on: []
conflicts_with: []
loads:
units:
- archer_buffed
buildings: []Pack Metadata
id: Must match^[a-z][a-z0-9-]*$(lowercase, hyphens OK)version: Semantic versioning (MAJOR.MINOR.PATCH)type: One ofcontent,balance,ruleset,total_conversion,utilityframework_version: Supported DINOForge versions (uses semver ranges)
3. Create Content Directories
bash
mkdir units
mkdir buildings4. Define a Unit Override
Create units/archer_buffed.yaml:
yaml
id: archer_buffed
display_name: Elite Archer
unit_class: CoreLineInfantry
faction_id: vanilla
tier: 1
stats:
hp: 100
damage: 25 # doubled from vanilla ~12
armor: 0
range: 8
speed: 3.5
accuracy: 0.8
fire_rate: 1.2
morale: 85
cost:
food: 40
wood: 10
weapon: BallisticLight
defense_tags:
- Unarmored
- Biological
behavior_tags:
- HoldLine
- AdvanceFire
vanilla_mapping: archerStats Fields
All stats are optional and default to reasonable values if omitted:
hp: Hit points (default: 1)damage: Base damage per attack (default: 0)armor: Damage reduction (default: 0)range: Attack range in world units (default: 0 = melee)speed: Movement speed (default: 0)accuracy: Hit chance 0.0-1.0 (default: 0.7)fire_rate: Attacks per second (default: 1.0)morale: Base morale (default: 100)
5. Validate the Pack
bash
dotnet run --project src/Tools/PackCompiler -- validate packs/my-balance-modExpected output:
✓ Pack validation passed
Schema: OK
References: OK
Dependencies: OKThe validator checks:
- Pack manifest schema conformance
- Unit YAML schema conformance
- Required fields present and correct types
- ID format (
^[a-z][a-z0-9-]*$for packs,^[a-z][a-z0-9_]*$for content IDs) - Version format (semver)
- Dependency resolution (no cycles, no missing packs)
6. Build the Pack
bash
dotnet run --project src/Tools/PackCompiler -- build packs/my-balance-modYour pack is now ready. The Runtime will discover and load it automatically at game boot.
Test in Game
- Launch Diplomacy is Not an Option
- Press F10 to open the DINOForge mod menu
- You should see "My Balance Mod" listed with status "Loaded"
- Your unit override is now active — test it in the game!
What You Just Built
- Pack manifest with explicit metadata (id, version, author, dependencies)
- Unit definition with complete stats (HP, damage, armor, cost, behavior)
- Validated against DINOForge's JSON schema system
- Built as a distributable artifact
No C# code. No Harmony patches. No reverse engineering. Just YAML.
Next Steps
- Creating Packs — Full guide to all pack types
- Unit Schema Reference — All unit fields documented
- Building Schema Reference — Building definitions
- Warfare Overview — Learn factions and unit archetypes