Rewrite the README for players: what each layer does in play, the wiki linked front-and-center

This commit is contained in:
flan
2026-07-16 02:05:56 +00:00
parent 5465f64a3d
commit ff703271ba
+45 -58
View File
@@ -1,76 +1,63 @@
# The Institution suite
# Institution — Prison Architect in RimWorld
A set of RimWorld 1.6 mods about **what an institution does to the people inside it** — and the
crime, policing, and justice that put them there. Each mod is a separate install built on a small
shared **Core**; together they form one system.
**Every pawn has a criminal propensity on a spectrum — nature (traits) × nurture (mood, mistreatment,
treatment) — and the colony can police it. Catching and punishing one pawn changes the disposition of
the rest.**
## The thesis
Institution is the whole suite in **one install**, with a **checkbox per layer** in the mod settings
(all on by default). It turns RimWorld's forgotten rap sheet into a living justice system — police,
prison, parole — mirroring the real separation of powers.
> Every pawn has a criminal propensity on a spectrum — **nature** (traits) × **nurture**
> (circumstance, mood, treatment) — and the colony can **police** it.
## 📖 Documentation — [**read the Wiki**](https://git.onetick.ninja/flan/institution/wiki)
The suite is the two halves of that: colonists commit crimes and a policing layer catches them
(pre-arrest), and prison / contraband / wards / secure areas hold and reform them (post-arrest).
Arrest is the hinge. Nothing hard-codes "prisoner" — every held-person system keys off a
**secured context**: prisoner, ward patient, slave, or secure-area occupant.
The **[Institution Wiki](https://git.onetick.ninja/flan/institution/wiki)** is the full guide: the
gameplay loop, every layer, and how the pieces feed each other. Start at the
**[Wiki home](https://git.onetick.ninja/flan/institution/wiki)**, then dive into any layer below.
## Documentation
## The six layers
The **complete suite wiki lives in this repo** — [**Wiki/Home.md**](Wiki/Home.md) is the front door:
the full gameplay loop, all five layers, and per-layer deep dives, aggregated in one place under
[`Wiki/`](Wiki/) (`core/`, `contraband/`, `justice/`, `gangs/`, `ward/`). Each layer repo carries its
own copy for a standalone install; [`Tools/sync-wiki.sh`](Tools/sync-wiki.sh) refreshes the
aggregated view here.
Turn any off in **Options → Mod Settings** and it goes inert immediately. All build on a shared
**Core** engine that ships inside — no separate dependency.
## The mods
| Layer | In play | Wiki |
|---|---|---|
| **Core** | The engine every layer agrees on: propensity, the criminal record, the treatment engine. Invisible on its own. | [Core](https://git.onetick.ninja/flan/institution/wiki/core/Home) |
| **Contraband** | Prisoners conceal what they walked in with, whittle shivs from their cell's furniture, and dig tunnels under the wall. Wardens search the likeliest prisoner first — and a bent warden looks the other way. | [Contraband](https://git.onetick.ninja/flan/institution/wiki/contraband/Home) |
| **Policing** | Your own colonists offend on the spectrum. Witnesses and a constable name the culprit; a weighed arrest can end in a cell or a resisted breakout. A climate of order feeds back into everyone — plus riots when it collapses. | [Policing](https://git.onetick.ninja/flan/institution/wiki/policing/Home) |
| **Corrections** | Classification grades every prisoner by what they've done (a wall marker grades a whole wing). Discipline hardens or reforms; parole frees the reformed; regime gives them recreation, yard time, and visits. | [Corrections](https://git.onetick.ninja/flan/institution/wiki/corrections/Home) |
| **Gangs** | Disposed prisoners band together and move contraband among themselves. Rival gangs fight — inside the wire or out — and the fight is a crime. A well-run colony grows few gangs. | [Gangs](https://git.onetick.ninja/flan/institution/wiki/gangs/Home) |
| **Ward** | Commit a prisoner for **psychiatric treatment** instead of punishment: counselling reduces the disorder that broke them and builds a recovery track toward discharge. Neglect them and they deteriorate. | [Ward](https://git.onetick.ninja/flan/institution/wiki/ward/Home) |
| Mod | What it is | Needs | Status |
|---|---|---|---|
| [Institution: Core](https://git.onetick.ninja/flan/rimworld-core) | the shared engine — **propensity** (nature × nurture), the **criminal record**, the **secured-context** predicate. Invisible on its own | — | shipping |
| [Institution: Contraband](https://git.onetick.ninja/flan/rimworld-contraband) | the physical smuggling loop — conceal / improvise shivs / Prison-Architect tunnels / warden search / corruption | Core | shipping |
| [Institution: Justice](https://git.onetick.ninja/flan/rimworld-justice) | corrections & **policing** — classification, deterrence, discipline & reform, parole, regime, and colony crime → witnesses → a weighed arrest | Core, Harmony | shipping |
| [Institution: Gangs](https://git.onetick.ninja/flan/rimworld-gangs) | gangs as **contraband economies** — joining by disposition, smuggling networks, rivalry, fights-as-crime | Core, Contraband, Justice | shipping |
| [Institution: Ward](https://git.onetick.ninja/flan/rimworld-ward) | involuntary **psychiatric care** — a prisoner committed for treatment, not punishment, on Core's shared treatment engine: counselling reduces the disorder, a recovery track leads to discharge, and neglect deteriorates. Folded into the suite as its psychiatric-care layer | Core, Harmony | shipping |
| [Foul Play](https://git.onetick.ninja/flan/rimworld-foulplay) | throw a container of something off a body; a Noita-flasks liquid framework (vessels + substances) with the **Piss Nuke** flagship; bridges to the suite | standalone | shipping |
## The loop
The original monolith split along its natural seams in 2026-07: the substrate became **Core**, the
corrections/justice systems became **Justice**, and the gang layer became **Gangs**, leaving
**Contraband** as the physical smuggling loop. Regime (prisoner recreation) folded into Justice, which
now also ships **policing** (colony crime → witnesses → a weighed arrest). **Ward** — once a standalone
sister mod — is folded in as the psychiatric-care layer, consuming Core's shared treatment engine, so
the suite is now five layers over one Core, bundled into a single install with a toggle each.
Disposition → Crime → Detection → **Arrest** → Contraband / Gangs → Corrections → Parole — and back to
the start: reforming or punishing one pawn moves the colony's climate of order, which bends who else
decides that crime pays here. (A future **Judiciary** layer — a court that tries and sentences — is
reserved to sit between arrest and prison.)
## Principles
## Install
- **One shared engine, then build up.** The suite runs on a small **Core** (propensity, record,
secured context) so every mod agrees about who is dangerous instead of each guessing. Contraband
and Justice build on Core; Gangs, the capstone, needs Core + Contraband + Justice. Foul Play stands
fully alone and merely *bridges* to the suite when it is present. Cross-mod integrations that
aren't hard dependencies stay soft — features light up if a mod is present and the loop still
closes without it (e.g. Core's deterrence seam is neutral until Justice fills it).
- **Coexist, don't duplicate.** We test against the all-time most-subscribed Workshop mods and
never rebuild what a genuinely good mod already does well — judged by quality, not sub count.
- **Extend by capability, not by list.** New content registers via `IsWeapon` / `IsDrug` /
category, so modded items are covered without being named.
**Steam Workshop:** subscribe, and enable **Harmony** + **Institution** in the mod list. *(Workshop link
coming with the 0.1.0 upload.)*
## The plan
**Or drop it straight onto your machine** (auto-detects the Steam Mods folder on Linux/Mac):
The full design, module scope, build order, and prior-art verdicts are in
[ROADMAP.md](ROADMAP.md). Per-mod roadmaps live in each repo (e.g. Contraband's item build list).
```bash
D=$(ls -d ~/Library/Application\ Support/Steam/steamapps/common/RimWorld/RimWorldMac.app/Mods \
~/.steam/steam/steamapps/common/RimWorld/Mods \
~/.local/share/Steam/steamapps/common/RimWorld/Mods 2>/dev/null | head -1)
git clone --depth 1 https://git.onetick.ninja/flan/institution.git "$D/Institution"
```
## Compatibility
Update later with `git -C "$D/Institution" pull`.
The in-game harness (`Tools/run-compat-test.sh` in the Ward repo) boots a real headless RimWorld
with the suite plus the popular psych/prison mods **and** the all-time most-subscribed mods loaded
at once, and fails on any error naming our code. Combat Extended gets its own dedicated pass. It
needs a licensed RimWorld + xvfb, so it is a LOCAL step, not CI.
## Requires
## CI
**RimWorld 1.6** and **[Harmony](https://steamcommunity.com/sharedfiles/filedetails/?id=2009463077)**.
Pairs with the standalone **Foul Play** (a vessel/substance framework), which bridges in when both are
present.
Each code repo runs a Gitea Actions workflow (`.gitea/workflows/ci.yml`) on push: **lint def XML**
(catches malformed XML and relative-xpath silent no-ops) + **dotnet build** against the Krafs
RimWorld reference assemblies (no game install needed). Runs on the self-hosted `truenas-runner`
(host mode, label `ubuntu-latest`); .NET is provisioned per-run via `setup-dotnet`. Green across
Foul Play, Contraband, and Ward; the split-out **Core**, **Justice**, and **Gangs** build clean and
are exercised by the full-stack harness, with per-repo CI workflows still to be added.
---
**License:** CC BY-NC-SA 4.0 · **Version:** 0.1.0 · Attribution in [NOTICE](NOTICE).
Modding or curious how it fits together? The design notes live in [ROADMAP.md](ROADMAP.md).