This is an old revision of the document!
Table of Contents
River Oath: source and licence
River Oath is Copyright (C) 2026 Michael Slater. It is free software under the GNU General Public License, version 2 or (at your option) any later version, and comes with no warranty. The retro screen, font and hex battle come from Sengoku and The Broken Seal.
The source is river-oath-0.1.0-source.tar.gz from https://retro.theiguru.au/riveroath/. It needs Free Pascal 3.2.2 and the Lazarus 4.4 LCL (GTK 2), as Sengoku does.
Building
make # builds ./river_oath ./run.sh # builds if needed, then runs make test # the rules tests and the screen tests make gui-test # the window test, under xvfb
tools/build-win64.shcross-compiles the Windows exe on Linux (needs the win64 cross compiler), andtools/package.pymakes the release files.- On Windows,
build-windows.cmdbuilds with Lazarus'slazbuild.
What is where
| File | What it is |
|---|---|
src/rogame.pas and ro*.inc | The campaign rules: places, bands, tasks, the month's end, tales, dikes, the Intendancy, the computer bands, saves |
src/robattle.pas | The hex battle |
src/roui.pas and ui*.inc | Every screen (no window code, so the tests can drive it) |
src/rodesk.pas | The window |
assets/data/world.json | Places, links, people, ties, officials and scenarios, made by tools/makeworld.py |
assets/data/rules.json | The numbers of the rules, each checked against a range when the game starts |
SPECIFICATION.md | The full design, with every number |
docs/TESTS.txt | What the tests check |
Tests
make test checks routes and seasons, every kind of task, tales spreading and fading, hunger, the dikes and the Great Flood, all three victories and the deadline, battles (and that a battle replayed from its moves ends the same), a battle saved halfway and loaded, offers and prisoners, and damaged saves. It then plays ten computer-only campaigns of each beginning to the end, checking the whole game after every month and saving and loading on the way. build/tests/rotests assets/data –full plays a hundred of each.
