Four playtest fixes off the Gitea tracker. The submodule pin moves to v0.7.1 and the version follows it; the downstream digit resets to :0, since v0.7.0 only ended on :3 because three test packs were played before it was released. - An empties-only train may couple a caboose again — a caboose carries the crew, not freight. - The end of a Day is a modal carrying the standings, the Days left and the combined target, instead of passing between one click and the next inside the automatic phases. - A Timetabled train may be discarded to a Department pile for a rival to pick up, governed by a new discardTimetabled setting that appears in both the New Game dialog and the lobby, on by default. An Extra never may. - A blocked passenger platform now gives its reason, including the coach shortage and what ends it. No new version file and no migration: current.ts's migrations.up is empty and nothing is carried from 0.7.0. GAMES IN PROGRESS SURVIVE THIS UPDATE — all three engine-visible changes only widen what is legal, so every intent a 0.7.0 game recorded still replays, and the server resumes a save by replaying it rather than by comparing version strings (src/server/index.ts in the game repo). README.md and instructions.md both named 0.7.0 and carry the three user-visible changes now. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FLnYR4XtXQNamYJXGYT8oC
5.6 KiB
Station Master
Documentation
- Rules and design docs — the rulebook implications, the multiplayer design, and the game's architecture.
What you get on StartOS
This service runs the multiplayer server: a lobby, and a table for 2 to 4 players to play a competitive or cooperative game together from their own browsers. Everything a player needs — the game itself, the lobby, and the connection back to this server — is served from the single web interface below; there is nothing else to install or configure on a player's side.
Getting set up
- Run the Get Join Secret action from this service's Actions menu, and copy the value it returns.
- Share that secret, and this service's address, with everyone you want to play with. Anyone holding the secret can create a new game or join one that hasn't started yet.
- Open this service's Multiplayer Table interface. You'll land on the front page, which offers three ways in: solitaire, the replay viewer, and multiplayer.
- Click Play multiplayer, then Create Game (or Join Game with a game code someone else created), and enter the join secret when asked.
Using Station Master
Multiplayer Table
The front page offers solitaire, the replay viewer, and multiplayer. Play multiplayer takes you to the lobby: create or join a game, seat players (including filling empty seats with a bot), and start. Once a game is underway, this same interface is where every player plays their turns and watches the table — there is nothing else to open.
Solitaire runs entirely in your own browser and needs nothing from the server, so it works here exactly as it does on the public Station Master site.
Setting a game up (new in 0.7.0). The lobby opens on Join a game: type the code you were given and you will see the whole rule set — the opening hand, what the work pays, every way the game can end — before you take a seat. Creating a game instead starts from a game type: Co-op, Competitive or Cutthroat. A type just fills in the rules; every one of them is yours to change, and changing any of them marks the game Custom, which keeps the scoring of the type you started from. The seed, the number of players and the number of Days sit above the type and do not make a game Custom — the targets re-derive from them.
What changed in 0.7.1. Three things you will see at the table. The end of a Day now stops and says so — a dialog with the standings, how many Days are left and the combined target, because a Day used to turn over inside the phases that run themselves and pass between one click and the next. A Timetabled train may now be thrown away: toss it face-up to a Department slot and a rival may pick it up. That is a New Game setting (A Timetabled train may be discarded, on by default) — turn it off and a train card can only ever be played onto the timetable. An Extra is never discardable either way. And a platform where nothing can be worked now tells you why — no train for the passengers waiting, a train whose card bars Porters, coaches already full, the same-district rule, or the Division Yard being out of coaches, in which case it says how many are stranded in the Classification Yard and what brings them back. Running out of coaches is part of the game, not a fault; what was missing was the explanation.
Leaving, and coming back. Anyone may leave a lobby, and the host can clear a chair, so a mis-join or somebody who wanders off no longer blocks a table that cannot start until every seat is taken. A Leave game button appears once a game is running: it keeps your seat and the table waits for you, and the lobby lists every game this browser is in so you can rejoin it — or join a different one without losing the first. Forget on that list is the one thing that cannot be undone: the token kept in your browser is the only proof of who you are, so a forgotten game cannot be rejoined from that browser.
Get Join Secret
Run this whenever you need the current join secret again, or want to shut out anyone still holding an old one. Every run replaces the secret and immediately puts the new one into effect — players already seated in a game are unaffected, but the old secret stops working for creating or joining games from that point on.
Games in Progress
Shows every game on the server: who is playing, which Day and Stage they have reached, and whose turn it is. It changes nothing, so run it whenever you are curious. It is also how you spot a game nobody is coming back to — one whose last move was days ago, still waiting on a particular player.
Manage Game
Pick a game, then either save a copy of it or end it.
Export hands you the whole game as text and leaves it running. Save that text as a .json
file and you can open it in the replay viewer later to watch the game back.
End the game deletes it and disconnects anyone still watching. This is the only way to clear a game that will never be finished — otherwise it sits there, and comes back every time the service restarts. It cannot be undone, so the game's save is handed back to you when it happens: that text is the only copy left, so keep it if the game was worth watching.
Games in progress normally survive an update of this service. When the update changes the rules of the game itself, a half-played game cannot be resumed under rules it was not played by, and that game is set aside rather than continued — you would see it disappear from the lobby. Nothing is ever deleted, so going back to the previous version makes it playable again.