Standard Of Iron

Economy Guidance

EN

The economy guidance layer makes the gather-build-recruit loop visible to the player. Resource counters explain what each resource is for, the economy guide shows costs and prerequisites, and skirmish coaching gives the player a short sequence of economic goals...

Food and Farms

EN

Food connects settlement growth to military production. Farms grow grain, builders harvest grain or slaughter sheep, homes spend food to recruit civilians, and civilians become manpower when they reach a barracks. The result is an economic loop in which food drives population while wood, stone, and ...

Pathfinding Architecture

EN

Pathfinding in Standard of Iron is deliberately simple at the core: the game keeps one flat 2D navigation grid, and A* searches that grid. The grid is not a physics simulation, not a unit occupancy map, and not a navmesh. It is a compact answer to one question...

Frame Pacing

EN

Frame pacing in Standard of Iron is measured from real gameplay runs and reported as a frame_pacing verdict. The gate is designed to answer a broader question than “what was the average FPS?” It measures whether presented frames arrive consistently, whether CPU/GPU frame work fits the active graphic...

Rendering Architecture

EN

Standard of Iron renders from published simulation snapshots. Gameplay state belongs to the simulation; the renderer receives a detached view of that state, resolves visibility and presentation, records draw work, and submits the result through a backend boundary...

Home Activity

EN

Roman and Carthaginian houses look inhabited: a hearth vents smoke through an opening the model actually has, shutters stand open by day and close at dusk, washing hangs out, cloth stirs in the breeze, lamps come on at night, residents step outside, an...

Drama

EN

Standard of Iron: The Dead Company is a dialogue series filmed in the arena. An episode goes from script to finished film in five steps, all driven by files under scripts/drama/episodes//...

Campaign Missions

EN

This document explains the purpose of every campaign mission: what the player is asked to do, what the mission is designed to teach, and whether victory comes from attacking, defending, or managing the economy...

Promo Capture

EN

Standard of Iron's promotional video pipeline is split into two reproducible stages: deterministic gameplay capture in Arena and offline editorial assembly with FFmpeg...

Documentary

EN

The Barcid Road: Hannibal's War (epic #1547) is finished by scripts/documentary, a small Python package with one entry point: ...

Campaign Map Film

EN

campaign_map_film films the campaign's Mediterranean map for "The road" sequence of each episode (#1531, epic #1547): a camera flight over the map with Hannibal's march drawing in, regions lit, battle sites pinned and dated, and army strengths exported...

Formation Architecture

EN

Standard of Iron has two formation layers because they solve two different spatial problems...

Animation Architecture

EN

How a creature in Standard of Iron goes from "this unit is attacking" to moving geometry on screen — and why it is fast enough to do for thousands of units at once...

Baked Meshes

EN

Every mesh the game assembles out of primitive parts (unit spheres, cylinders, cones and boxes placed by C++ code) is assembled once, at build time, and merged into a single mesh. The running game loads the merged result; it never builds a procedural mesh out of parts, and it never keeps the parts a...

Cursed Gold Vein

EN

The cursed gold vein is a capturable world element built around a deliberate trade-off. Visually, it is a crag of dark rock split by an ore seam, with gold crystals growing from the fracture and a claim flag planted beside it. Mechanically, it rewards ownership with a steady income while damaging th...

Map Generator

EN

scripts/soi-mapgen.py turns a seed, a preset and a handful of parameters into a complete, playable battlefield. It does not replace the map pipeline; it authors the intent that pipeline already consumes and then runs it...

Unit Balance

EN

Unit balance in Standard of Iron is defined by executable simulation inputs: shipped troop data, nation overrides, combat multipliers, formation/stance behavior, production/economy values, and deterministic matchup fixtures run through tools/balance_sim...

Rafts

EN

A raft is a fixed crossing on a river: a log raft on a guide rope stretched between the two banks. It carries one unit at a time from one bank to the other. The Rhône crossing (218 BC) is the first battle of The Barcid Road campaign, and the rafts are what let Hannibal's army cross a river with no b...

Siege Presentation

EN

Roman and Carthaginian ballistas and catapults use reinforced timber carriages, open spoked wheels with iron tyres, bronze straps and hubs, and short moving standards. The presentation scale is 1.35x for ballistas and 1.20x for catapults, applied after...

Minimap

EN

The HUD minimap combines four cached raster layers with one live QML overlay. The split is designed around invalidation: stable pictures of world state are rebuilt only when their inputs change, while continuously animated signals stay on the scene graph...

Ai Architecture

EN

Standard of Iron runs one strategic AI instance per computer-controlled owner. The AI is deliberately separated from the live ECS world: the world-owning thread builds an immutable snapshot, worker code reasons from that snapshot, the result is converted into typed AI commands, command conflicts are...

Hill Shapes

EN

A terrain entry of type hill uses its shape field to define the tactical footprint of raised ground. Maps can author organic mounds, straight ridges, arcs, elbows, rings, traced paths, or exact painted cell masks...

Performance

EN

How the game is profiled, what was found on the heaviest mission, and why the hot paths look the way they do. Source files carry no comments (the formatter strips them), so the reasoning behind each optimisation lives here...

Camera Controls

EN

The RTS camera supports nine ways to move or restore the view. The same control definitions feed the in-battle legend and field manual, while automated tests cover the underlying geometry and input rules. This page explains the complete control model and ends with the manual regression pass needed f...

Rockfall

EN

Defenders holding high ground can roll boulders onto troops climbing towards them. This is how the Allobroges struck Hannibal's army on the climb into the Alps, and the Alps episode of The Barcid Road is built on it...

Ambient Wildlife

EN

Ambient wildlife makes battlefields feel inhabited rather than staged. Sheep occupy pasture, wolves work the edges of settlement and cover, and bird flocks move through the sky or burst away from nearby threats...

Audio System

EN

Everything the player hears goes through one path: a cue is requested by gameplay or QML, the cue registry picks a resource from the manifest, AudioSystem decides whether it may play, and the miniaudio backend mixes it. Music and ambience beds are chosen by tags in the manifest rather than by ID in ...

Mission Framework

EN

Missions add authored gameplay rules to an existing battlefield. A map defines terrain, structures, spawns, environment, camera data, regions, and other world geometry. A mission selects that map and adds player/AI setup, objectives, scripted waves, stages, events, commander messages, and campaign-f...

Architecture

EN

Standard of Iron is organized around one rule: gameplay state belongs to the simulation, while application code, UI, rendering, tools, persistence, and AI consume or transform that state through explicit boundaries...

Mission Startup

EN

Mission startup separates preparation from playable simulation. Loading a battle is not one monolithic map parse: the application resolves the authored map, constructs the world, applies mission ownership/setup, initializes AI, prepares renderer-facing terrain/scatter state, starts simulation, and k...

Victory System

EN

Victory rules look simple to a player: eliminate an enemy, survive long enough, capture a position, or keep a commander alive. The implementation has to satisfy a harder set of requirements. Rules must be cheap enough to evaluate during simulation, expressive enough for both skirmishes and authored ...

Save Load System

EN

Standard of Iron stores match saves in a versioned SQLite database. A save is more than a serialized entity list: it combines the authoritative battlefield, non-entity session state, campaign/mission metadata, and a preview image, then stores that snapshot with compression, checksums, transactional ...

Combat System

EN

Combat in Standard of Iron is coordinated by Game::Systems::CombatSystem. It owns the shared combat query context and advances normal attacks, combat state, formation contacts, siege behavior, elephant behavior, automatic engagement, target commitment, hit feedback, and threat alerts in a fixed orde...

Ci Policy

EN

The CI pipeline is organized around feedback speed. Pull requests run the checks that are fast enough to support normal review, while expensive acceptance, performance, and whole-surface audits run weekly, on demand, or as part of release validation...

Horse Model Architecture

EN

Horses and elephants use authored, skinned low-poly geometry compiled into deterministic creature packages. The production pipeline preserves mesh topology, skinning weights, joint hierarchy, authored animation channels, attachment landmarks, and reviewed production proportions from asset generation...

Rpg Playability

EN

This document is the permanent contract for direct commander control: what playable means, how the mode is validated, and which runtime rules make the result reliable. tools/arena/rpg_gate_manifest.json is the live record of scenario status...

Audio Licenses

EN

Where every .ogg under assets/audio/ came from, and under what licence. For how the files are used, see AUDIO_SYSTEM.md...

Farm Activity

EN

Roman and Carthaginian farms show presentation-only field workers. They are the nation's own civilian humanoids -- the same rig, proportions, equipment archetypes and palette the real civilian and builder units use, driven by the baked clip bank throug...

Trailer

EN

standard_of_iron_trailer.mp4 is built entirely from Standard of Iron's own renderer, simulation and audio. Nothing in it is offline CGI: every image is a deterministic arena scenario photographed by an authored camera, and every sound is either the gam...

Skirmish Bases

EN

Every skirmish map authors its barracks in the map JSON structures array. Originally, the player_id on each barracks determined the starting position completely: player 1 began at p1_barracks, player 2 at p2_barracks, and so on. The setup screen could change which player occupied a seat, but not whi...

Map Object Placement

EN

An object authored in map JSON has to become two things that agree with each other: a physical body on the ground and a model on the screen. This document explains the coordinate contract that keeps them aligned, how object footprints are validated, and how the placement audit detects geometry that ...

Macos Signing

EN

macOS packaging is implemented in .github/workflows/build-macos.yml. The workflow is reusable: the weekly packaging job and the release workflow both call it. Developer ID signing and notarization are done by scripts/sign-and-notarize-macos.sh, which h...

Iron Sepulcher

EN

The Iron Sepulcher is Standard of Iron's undead faction. It has no economy, recruitment loop, or player-selectable slot. Undead troops reach the battlefield through undead zones authored on the map: dormant sites that awaken, raise a garrison, and turn part of the terrain into a temporary strategic ...

Difficulty

EN

Single-player difficulty is one shared system across the campaign, standalone missions and skirmish. It gives the enemy more or fewer resources, starting troops and scripted reinforcements. It does not make the opponent think better, and it does not touch combat statistics...

Marketplace

EN

Both nations' marketplaces are open courts on a stepped plinth, entered from the local −X side through a gateway, with a row of three shops along the back (+X) wall. The plinth stays 2.80 local units wide so the drawn body matches the collider (Buildin...

Accessibility

EN

Standard of Iron exposes accessibility and input options from Settings in both the main menu and pause menu. Every option has a default that reproduces the shipped presentation and controls, so accessibility features can be enabled deliberately without changing the experience for a fresh installatio...

Typography

EN

Standard of Iron controls its typography explicitly so the game, tools, and promotional output can render the same text consistently on every machine. UI code does not rely on an arbitrary operating-system font lookup for branded text, and the custom title face is built and tested as part of the rep...

Creature Bpat Format

EN

BPAT is the baked runtime animation format used for skinned creatures in Standard of Iron. A BPAT file packages the data the runtime needs to animate a creature without rebuilding authored skeletal animation from source definitions every frame...

Windows Code Signing

EN

Windows packaging is implemented in .github/workflows/build-windows.yml. The workflow is reusable and is called by both the weekly packaging job and the release workflow. When the signing secrets are available, it signs standard_of_iron.exe with Authenticode and verifies the result before packaging ...

Battlefield Capture

EN

battlefield_capture is a deterministic, render-free acceptance runner used to validate battlefield behavior during migration work. It advances the simulation on a fixed 30 Hz clock from an explicit seed and writes newline-delimited JSON (JSONL), making its output suitable for repeatable comparisons ...

Ui Design System

EN

Standard of Iron's interface uses the StandardOfIron.Design QML module as the shared presentation layer for colour, spacing, typography, motion, iconography, faction styling, notifications, hints, sound hooks, accessibility-derived values, and reusable controls...