Skip to content

How it works ​

These pages explain how parts of Banished work, and how Un-Banished rebuilds them. Each page is a short introduction for readers who do not know the code. It links to the research notes in docs/, which hold the full evidence: function addresses, field offsets, constants, and what is still unknown.

TopicWhat it explains
Game data filesThe .pkg packages, the compiled resources inside them, and type ids
Exact maths and random numbersWhy float rounding matters, the game's random numbers, game time
Terrain generationHow a seed becomes a map: the five stages, rivers, cell types
The game loopEngine loops, the simulation step, game speed and the update buckets
CitizensHow a citizen chooses what to do, and how it walks there
Save filesThe save container, the game state inside it, and loading
The interfaceDialog resources, layout, controls and controllers
AudioSound resources, the WMA decoder, the device and sound effects
The emulator harnessHow original functions run in an emulator to give exact results

The research notes ​

The notes in docs/ were written while the original was traced. They are evidence, not tutorials. Good places to start:

  • FINDINGS.md: the program files, the package and resource formats, and the first decoded classes.
  • GAME-LOOP-CHECKLIST.md: what is traced and ported, and what is open, with links to every step.
  • PARITY-AUDIT.md: what has been checked against the original.
  • DEVIATIONS.md: every known, intentional difference from the original.
  • How it was made: the method, from the program files to tested Rust code.

Each note starts with a paragraph that says what it covers and what kind of evidence it uses: static reading of the decompiled code, the disassembly, emulation of original functions, or decoded game data. A claim is either observed, marked inferred, or listed under Open questions.

Un-Banished 0.4.0-5125009 is free software under the MIT or Apache-2.0 licence. It is not affiliated with or endorsed by Shining Rock Software.