This guide walks you from a fresh machine to a running Simterm session, then shows you every CLI flag the frontend understands, and finally steps you through creating your first campaign by copying the bundled sample. By the end you will have a custom campaign loading, validated, and playable.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/0x-unkwn0wn/simterm/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Install Rust stable
Run the sample campaign
Clone the repository and launch the bundled sample campaign with a singlecargo run:
--campaign path is provided, Simterm automatically loads examples/sample_campaign. The TUI opens in an alternate screen and is fully playable from the first command.
CLI flags
Thesimterm binary accepts the following flags. Pass them after -- when using cargo run:
Select a campaign
--campaign (or its short form -c) specifies the path to a campaign directory or .ron file. You can also pass the path as a bare positional argument without the flag.
--check confirms the campaign loads and contains missions. It prints a summary and exits immediately — no TUI is opened.
--doctor runs a full semantic analysis: dangling references, unreachable content, bad numeric ranges, and more. It exits with a non-zero code if there are errors, making it suitable for CI.
--autoplay injects real commands into the normal TUI with visible pauses. Use it as an end-to-end playability check.
--autoplay-deterministic is a stricter variant that avoids Unstable exploits and probabilistic privilege escalation. If no deterministic route is available, it stops and writes the reason to the log — ideal for repeatable CI runs.
--autoplay-delay <ms> sets the pause between injected commands (default 900 ms). Works with both autoplay modes.
music/mission_N_theme.wav files alongside campaign.ron. Pass --no-music (or its alias --mute) to silence it regardless.
--help (or -h) prints the usage summary and exits immediately without loading any campaign.
Create your first campaign
The fastest path to a custom campaign is copying the sample and iterating from there.Copy the sample campaign
campaigns/ directory is the conventional local workspace for campaigns under development. It is gitignored by default so private campaign content stays out of the public repository.Edit campaign.ron
Open
campaigns/my_campaign/campaign.ron in your editor and change the name, description, and any mission or host fields you want to customize. The file is plain RON — no Rust knowledge required.Validate the campaign loads
Run A successful check prints the campaign name and mission count, then exits cleanly.
--check to confirm the loader can parse your changes and that the campaign has at least one mission:Run the semantic validator
Run Fix any reported errors before moving on. Warnings are informational — the campaign is still playable.
--doctor for a deeper analysis. It catches problems like dangling references to non-existent commands, unreachable missions, or malformed numeric ranges:What to do next
Campaign overview
Understand the full structure of a campaign directory, the root
campaign.ron format, missions, themes, and achievements.Commands overview
Learn which commands are built into the engine, which are frontend-only, and how to define your own declarative commands in campaign data.