98 lines
5.4 KiB
Markdown
98 lines
5.4 KiB
Markdown
# To do
|
||
|
||
Things worth coming back to. Anything noted here should either get done or get an explicit decision
|
||
not to — the point is that nothing quietly evaporates.
|
||
|
||
Ordered within each section by how much it is currently costing us.
|
||
|
||
---
|
||
|
||
## Next
|
||
|
||
- [ ] **Find out why switching work does not become Revenue.** The crew now drops 11 cars a game and
|
||
couples 8 (was 3.3 and ~0.4), at about 4 Moves per productive act — real railroading. Revenue
|
||
did not move (3.9 → 3.2). Either the freight it is now shuffling is not the freight the
|
||
industries want, or the loads finish too late in the Day to be worked, or the Revenue is going
|
||
somewhere and being lost again. Measure the freight chain end to end before changing anything.
|
||
|
||
---
|
||
|
||
## Open questions for Jesse
|
||
|
||
Blocked on a decision, not on work.
|
||
|
||
- [ ] **Q13 — rear-end collisions on a Mainline card.** §10 says a Mainline collision is the
|
||
Superintendent's fault and removes both trains, and ABS Signals exists to prevent rear-enders —
|
||
but §8.3's trigger list does not include one, and **none is implemented**. Granting clearance is
|
||
currently free: verified, both trains survive, no penalty. Three candidates: collide on entry
|
||
(clearance becomes a gamble), collide on catching up (rewards judging the gap), or accept that
|
||
clearance is safe and ABS Signals is worth less than it reads. The buttons currently describe
|
||
only what the engine does, so nothing promises a consequence that cannot happen.
|
||
- [ ] **Poling.** The only card in the deck with no defined behaviour — the sheet records its effect
|
||
as "TBD in the source". A test asserts it stays TBD so nobody invents one.
|
||
- [ ] **Heavy Grade orientation at setup.** The card says "Player sets orientation", but `createGame`
|
||
is synchronous and has no decision point, so it is currently rolled from the seed. Should become
|
||
a real choice when setup gains an interactive phase.
|
||
|
||
---
|
||
|
||
## Balance, provisional
|
||
|
||
Numbers chosen to fix a measured problem rather than taken from the design. Revisit once the victory
|
||
target is settled and freight carries its intended share.
|
||
|
||
- [ ] **Office card density** (Depot 4→8, Station 2→4, Terminal 1→2). Chosen to remove a 25% chance
|
||
of an unwinnable opening deal. Blunt: it lifts the whole ladder and dilutes every other
|
||
category. The better answer may be fewer Terminals, a cheaper first upgrade, or more A/D
|
||
capacity at the Whistle Post itself.
|
||
- [ ] **Industry density** (9 → 27, Gap 12). Restored roughly the prototype ratio; freight still only
|
||
13–18% of gross revenue.
|
||
- [ ] **Train density.** Left alone by decision, but noted: 22 train cards in 140 are drawn less often
|
||
than 22 in 115 were, and trains scheduled fell 2.9 → 2.1 as a side effect of the other density
|
||
changes.
|
||
- [ ] **The victory target itself** (20 over 5 Days). Still only 1 win in 100. Worth revisiting once
|
||
the bot exploits sidings, since that is a known unclaimed gain.
|
||
|
||
---
|
||
|
||
## Not yet built
|
||
|
||
- [ ] **Action cards (10) and Space-use cards (12).** Genuinely multiplayer-only — they are played AT
|
||
an opponent. Rejected with `NOT_IMPLEMENTED`.
|
||
- [ ] **Multiplayer proper.** The engine runs 2–5 player games and the bot plays them, but there is no
|
||
server, no turn submission, and no per-player view.
|
||
|
||
---
|
||
|
||
## Smaller things
|
||
|
||
- [ ] **Carry `links` forward in replay frames.** Static per card and never changes once laid, but
|
||
re-sent whenever anything on the board changes. The replay is 3.4 MB, mostly board state.
|
||
- [ ] **The 5 MB replay size limit is arbitrary.** Invented, not a browser constraint. It has earned
|
||
its place — it caught a 5.2 MB payload that turned out to be the whole grid re-serialised every
|
||
frame — but the number itself deserves a reason.
|
||
- [ ] **Curves are drawn as two straight segments meeting**, not true arcs. Fine at this size, angular
|
||
close up.
|
||
- [ ] **Wide boards scroll.** A 40-card district and a 13-section Division both need horizontal
|
||
scrolling. Legible, not compact.
|
||
- [ ] **No way to start a fresh game from inside the page.** `?seed=` gives a reproducible deal and
|
||
"new game" only appears once a game has ended, so abandoning a bad opening means editing the URL.
|
||
- [ ] **Save/restore is not version-aware.** A save from an older ruleset stops replaying rather than
|
||
failing loudly, which is the safe direction but says little about what changed.
|
||
|
||
---
|
||
|
||
## Done, kept for the reasoning
|
||
|
||
- [x] **Teach the bot what a siding is for.** Nose coupling (§A.3) implemented, so approach direction
|
||
decides which car is droppable; the bot runs around rather than setting out, when the drop can
|
||
follow. Switching activity transformed, revenue unchanged.
|
||
- [x] **Curve geometry.** Curves were topologically identical duplicates of turnouts, and nothing
|
||
reached north, so a district could only be a vertical column. Now two-port rotatable arcs.
|
||
- [x] **Q10 — when track may be laid.** During the "draw a card" option, one piece a turn. Track was a
|
||
card when §6.2 was written; a 26-piece supply has no hand to bound it.
|
||
- [x] **Q11 — which way a Heavy Grade climbs.** Answered from the card: it prints "(Up)" and "Player
|
||
sets orientation", so it is a property of the placed card, not a compass constant.
|
||
- [x] **Q12 — Whistle Post lock-in.** Players always start at a Whistle Post; office density doubled
|
||
instead.
|