Standard Of Iron

Promo Capture ๐Ÿ‡บ๐Ÿ‡ธ

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

Iron Sepulcher ๐Ÿ‡บ๐Ÿ‡ธ

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

Rpg Playability ๐Ÿ‡บ๐Ÿ‡ธ

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

Ai Architecture ๐Ÿ‡บ๐Ÿ‡ธ

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

Difficulty ๐Ÿ‡บ๐Ÿ‡ธ

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

Mission Framework ๐Ÿ‡บ๐Ÿ‡ธ

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

Victory System ๐Ÿ‡บ๐Ÿ‡ธ

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

Architecture ๐Ÿ‡บ๐Ÿ‡ธ

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

Audio Licenses ๐Ÿ‡บ๐Ÿ‡ธ

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

Formation Architecture ๐Ÿ‡บ๐Ÿ‡ธ

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

Rendering Architecture ๐Ÿ‡บ๐Ÿ‡ธ

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

Economy Guidance ๐Ÿ‡บ๐Ÿ‡ธ

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

Home Activity ๐Ÿ‡บ๐Ÿ‡ธ

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

Campaign Missions ๐Ÿ‡บ๐Ÿ‡ธ

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

Siege Presentation ๐Ÿ‡บ๐Ÿ‡ธ

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

Marketplace ๐Ÿ‡บ๐Ÿ‡ธ

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 ๐Ÿ‡บ๐Ÿ‡ธ

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

Camera Controls ๐Ÿ‡บ๐Ÿ‡ธ

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

Farm Activity ๐Ÿ‡บ๐Ÿ‡ธ

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

Ci Policy ๐Ÿ‡บ๐Ÿ‡ธ

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

Pathfinding Architecture ๐Ÿ‡บ๐Ÿ‡ธ

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

Map Object Placement ๐Ÿ‡บ๐Ÿ‡ธ

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

Combat System ๐Ÿ‡บ๐Ÿ‡ธ

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

Mission Startup ๐Ÿ‡บ๐Ÿ‡ธ

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

Horse Model Architecture ๐Ÿ‡บ๐Ÿ‡ธ

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

Audio System ๐Ÿ‡บ๐Ÿ‡ธ

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

Ambient Wildlife ๐Ÿ‡บ๐Ÿ‡ธ

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

Food and Farms ๐Ÿ‡บ๐Ÿ‡ธ

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

Minimap ๐Ÿ‡บ๐Ÿ‡ธ

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

Animation Architecture ๐Ÿ‡บ๐Ÿ‡ธ

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

Save Load System ๐Ÿ‡บ๐Ÿ‡ธ

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

Typography ๐Ÿ‡บ๐Ÿ‡ธ

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

Skirmish Bases ๐Ÿ‡บ๐Ÿ‡ธ

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

Creature Bpat Format ๐Ÿ‡บ๐Ÿ‡ธ

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

Hill Shapes ๐Ÿ‡บ๐Ÿ‡ธ

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

Windows Code Signing ๐Ÿ‡บ๐Ÿ‡ธ

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 ๐Ÿ‡บ๐Ÿ‡ธ

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

Frame Pacing ๐Ÿ‡บ๐Ÿ‡ธ

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

Cursed Gold Vein ๐Ÿ‡บ๐Ÿ‡ธ

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

Unit Balance ๐Ÿ‡บ๐Ÿ‡ธ

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

Ui Design System ๐Ÿ‡บ๐Ÿ‡ธ

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

Macos Signing ๐Ÿ‡บ๐Ÿ‡ธ

macOS packaging is implemented in .github/workflows/build-macos.yml. The workflow is reusable and is called by both the weekly packaging job and the release workflow...