This page is for the people who run a game: how to end an age, plan the next one and open it. Players don't need it. To see when the next age starts, look at the Age panel or GET /age.
The short version
- Plan the next age: which rules it runs, its number and name, when it starts, and any changed numbers. The game checks the plan straight away.
- End the current age, or let it end on its last tick.
- Open the next age. The finished world is archived and the server restarts by itself into the new one.
- Players found their houses before the start time. When it comes, the age begins.
You can do all of it from the War Room's staff panel, or with the requests below.
Who may do it
- Admins may plan the next age and drop a plan.
- Owners may also end the age and open the next one. Both are permanent.
As with every staff action on a live game, you must have signed in with Google or a passkey within the last hour, on the game's own site, and give a short note saying why. Every action goes into the audit log. Roles are given by an owner, or on the server's own command line: realm-server role add <email> owner.
1. Plan the next age
A plan says:
- Age file: which rules the age runs, by the file's name in
rules/ages, such asage-3. You can run the same age file again. - Number: the age's number. It must be higher than this age's and every earlier one's; leave it out to take the next free number. Results, heirs and chat are all kept by age number, so two ages never mix, even if they run the same rules.
- Name: optional. Without one, the age keeps the age file's name; an age file named only "Age 3" gives "Age" and the new number instead.
- Start time: when ticks begin. Until then, players can only found houses and bring back heirs. If the time has already passed when you open the age, it starts at once.
- Changed numbers: any of the age's numbers (its params, as
GET /ruleslists them), for example a shorter age withage_ticks. Everything else comes from the age file.
The game compiles the plan the way it would make the world, and refuses it with every problem listed at once: an age file that doesn't exist, a number that isn't a param, a value the rules don't allow, or an age number that's too low. A plan that's accepted will start.
Once there's a plan, everyone can see the next age's number, name and start time in GET /age (as next), so players can get ready. Planning again replaces the plan; dropping it takes it away.
POST /dev/age/plan
{"ruleset": "age-3", "name": "The Age of Ash", "start_at": 1792000000000,
"params": {"age_ticks": 1200}, "note": "next age, a little shorter"}
start_at is in milliseconds since 1 January 1970, UTC. The answer is the plan as the game understands it: the age's number and name, its ruleset fingerprint, its tick length and length in ticks, and roughly when it will end.
2. End the age
An age ends by itself on its last tick. To end it sooner:
POST /dev/age/end {"note": "why it ends now"}
It ends exactly as on its last tick: wars still running are settled, states are scored, a state wins, and houses keep their heirs (see The End of an Age). The result and the age's recap are stored at once, outside the world, so they outlive it. There's no undo.
3. Open the next age
When the age has ended and a plan is in place:
POST /dev/age/open {"note": "opening the next age"}
- The world's database is moved aside next to it, named after the age it held (for example
realm-age-3.db). It's kept, not deleted. - The server answers, then restarts itself within a second: same program, same settings, same process. Finding no world, it makes the planned one and forgets the plan.
- The War Room waits and reloads by itself. Players see the new age's countdown.
Accounts, roles, heirs and past results carry over: they live in the accounts database, not in the world. Chat starts empty in each age.
After opening
GET /ageshows the new age, its start time and"started": falseuntil then.- The finished age's result is at
GET /ages/{age}, and its recap atGET /ages/{age}/recap, for the War Room's replay. - The wiki's pages for the age file describe its rules. Changed numbers in a plan apply to that age only; the age file itself is unchanged.
If something goes wrong
- The plan stopped compiling. If the age files change after you plan,
GET /dev/ageshows the error underplan_check, and opening is refused. Plan again. - "already exists" when opening. An archive with that name is already there, perhaps from a test. Move it, then open again. Nothing has changed yet.
- The server didn't come back. Start it again the usual way. With no world in place, it makes the planned age, exactly as the restart would have.
- On a test server (dev mode), anyone signed in may do all of this, with no note needed.