September 12, 2026 at 12:00:00 AM UTC
Liminalia demographics census
liminaliagodotcsharpgame
liminalia
f8142fd — the city gets a census.
projection, not accumulation
Demographics.Take(world) walks the live citizens and returns a DemographicsReport. No per-tick bookkeeping, no save fields, no migration — the report is correct by construction because it reads the source of truth. At these population sizes (the flourishing milestone is 100+) the walk is trivial; the frontend can cache the record if it ever needs it per-frame.
the report
Six sections:
- Age bands — children (0-6), students (7-18), working age (19-64), retirees (65+), with the dependency ratio: dependents per working-age citizen. Above 1.0 the economy carries more dependents than workers.
- Employment — employed/unemployed with the rate, and the job mix. The mix shows institutional coverage: no Police means crime thrives, no Doctor means illness goes untreated.
- Education — level distribution. Shows whether the school investment is paying off into the skilled-job gates.
- Wealth — mean money and debt, the count below the poverty line (20, the crime pressure cutoff). The poverty count is the early-warning signal for the crime system.
- Health — ill and jailed counts. Both remove citizens from the productive economy.
- Reputation — mean standing, and the count below the police hiring gate (30). A city where nobody can be hired as police cannot recover from its crime problem.
The boundaries matter and are tested: 6 is a child, 7 a student; 18 a student, 19 working age; 64 working age, 65 a retiree.
CLI
demographics (or demo) prints the report as tables. The Godot UI can render the same record later.
367 tests.
all entries