Articles

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

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

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

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

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

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

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

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

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

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

Formation Architecture

EN

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

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

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

Dynamic Programming

EN

Dynamic Programming (DP) is a way to solve complex problems by breaking them into smaller, easier problems. Instead of solving the same small problems again and again, DP stores their solutions in a structure like an array, table, or map. This avoids wasting time on repeated calculations and makes t...

Sorting

EN

Sorting arranges a collection of items according to a defined ordering, such as ascending numeric value or a record's timestamp. The comparison rule must be consistent; contradictory comparisons make a sorted result ill-defined...

Asynchronous Programming

EN

Asynchronous programming is a technique for achieving concurrency without forcing one operation to block progress while it waits for another to finish. Instead of requiring each task to complete before the next can make progress, asynchronous code can suspend waiting work and continue with other rea...

Mpi

EN

The Message Passing Interface (MPI) is a standardized, portable interface for message passing across a wide range of parallel-computing systems. It provides library routines for building parallel applications whose processes communicate by explicitly sending and receiving data. The MPI standard defi...

Multithreading

EN

Multithreading lets several threads make progress within one process. Threads share its address space and resources such as open files, while each thread has its own stack, registers, and execution position...

Multiprocessing

EN

Multiprocessing runs work in several processes, each normally with its own virtual address space. Separate address spaces help contain accidental memory changes and failures. CPU-bound work can run across multiple cores when enough independent work is available...

Basic Terminology

EN

Let's start with the terms used throughout these notes. Some sound similar but describe different things: how tasks are ordered, whether they run at the same time, and what happens while they wait. These ideas apply across programming languages; later notes explain how individual languages implement...

Gpu Programming

EN

The CUDA and OpenCL listings in this chapter are platform API and kernel mechanics, separate from the C++20 application examples. CUDA kernels need a CUDA toolchain, and OpenCL examples need its runtime and headers. Raw device allocation, transfer, and launch calls are shown to explain the GPU execu...

Processes

EN

In any operating system, a process is the fundamental unit of execution—a live instance of a program. Beyond its executable code (the text segment), a process encompasses its dynamic state: the program counter, CPU registers, call stack, heap, and other variable storage. To manage and schedule these...

End to End Case Study

EN

This small project connects the main ideas from the notes: generate geometry, produce triangles, attach a named scalar array, export to VTP, read the result back, validate it, and configure color mapping. The workflow uses VTK and the Python standard library only. It runs without opening a rendering...

Eigenvalues and Eigenvectors

EN

An eigenvector identifies a direction that a square matrix preserves under multiplication, while its eigenvalue records the scaling along that direction. The scaling may include a sign change or, over the complex numbers, a phase change. These concepts connect matrix transformations to vibration mod...

Systems of Equations

EN

A linear system of equations is a collection of one or more linear equations involving the same set of variables. Such systems arise in diverse areas such as engineering, economics, physics, and computer science. The main goal is to find values of the variables that simultaneously satisfy all equati...

Gaussian Elimination

EN

Gaussian elimination solves a linear system by applying elementary row operations to its augmented matrix. Each operation preserves the solution set while eliminating a coefficient below a pivot. The process produces an upper-triangular system, which can be solved from the last equation upward by ba...

Newtons Method

EN

Newton's method, also called the Newton–Raphson method, approximates a root using the function value and its first derivative at the current point. It replaces the nearby curve by its tangent line and uses that line's zero as the next approximation. This is an open method: one starting guess is suff...

Differentiation

EN

Differentiation describes how a quantity changes as its input changes. The derivative gives a local rate of change and, geometrically, the slope of the tangent to the function's graph. It also supplies the linear term used to predict the effect of a small input change: f(x+h) ≈ f(x)+hf'(x). This con...

Central Difference

EN

The central difference method estimates a derivative using function values at equal distances on either side of the target point. It combines the forward and backward difference formulas so that their leading curvature errors cancel. For a sufficiently smooth function, this symmetry gives a second-o...

Convex Optimization

EN

Convex optimization minimizes a convex objective over a convex feasible set. Its structure provides a useful guarantee before an algorithm is chosen: a point that is locally optimal is also globally optimal. Supporting-hyperplane inequalities and, when applicable, KKT multipliers turn that geometric...

Optimization

EN

Optimization asks a simple question with many numerical subtleties...

Newton and Quasi Newton

EN

Newton-type methods use local curvature to transform the gradient into a better-scaled search direction...

Local Optimization

EN

Local optimization methods refine a starting point using information about the objective near the current iterate. They are the default tools for smooth numerical optimization because they can converge rapidly with far fewer evaluations than global search...

Constrained Optimization

EN

Constrained optimization adds restrictions to the decision variables...

Global Optimization

EN

Global optimization seeks the best feasible point across the entire search region rather than only within the basin of a starting point...