Show the whole Division mainline. district now has option for auto hiding on phases where not needed. scaffold for multi-player geometry showing division. regions on mainline cards implemented. bug fix on laying rail cards. optimized replay (carried links forward). Add sounds, first pass
This commit is contained in:
@@ -93,6 +93,39 @@ target is settled and freight carries its intended share.
|
||||
|
||||
## Not yet built
|
||||
|
||||
- [ ] **Real audio, as committed assets.** Everything the game plays is synthesised from oscillators
|
||||
(`src/web/sound.ts`), which was the honest choice for a site that fetches nothing — but it is a
|
||||
placeholder, not the finished sound. Sound therefore defaults to OFF.
|
||||
- **"All aboard" most of all.** It currently goes through the browser's `speechSynthesis`, so
|
||||
it is whatever system voice the player happens to have — a robot, not a conductor. A real
|
||||
clip is the single biggest improvement available here.
|
||||
- **Find and add the rest as assets**: steam whistle, grade-crossing bell, couplers clashing,
|
||||
a train pulling away. Needs licences that permit redistribution (CC0 or similar), files small
|
||||
enough to commit, and a check that the "fetches nothing external" test still passes — assets
|
||||
must be served from the site's own folder, never hot-linked.
|
||||
- Keep the synthesised versions as the fallback for anything not sourced, so a missing file is
|
||||
a quieter game rather than a broken one.
|
||||
|
||||
- [ ] **Regions as the primary model (the other half of §8.2).** The Division map now DRAWS regions,
|
||||
deriving position from what the crossing already cost. The engine still models a crossing as a
|
||||
countdown of Stages, so two things printed on the cards remain unimplemented:
|
||||
- `entryPoints` is declared on every Mainline profile and read nowhere. The Heavy Grade card
|
||||
has five named Start positions, and playing Brakeman is supposed to move your entry point
|
||||
along the card. The engine gets the same ANSWER by taking a Stage off the crossing, which is
|
||||
why the derived drawing looks right — but the mechanism is not the printed one, so a card
|
||||
whose starts do not correspond to its speed would be drawn wrong.
|
||||
- `implications.md` §6 calls this "the single largest mechanical gap" and asks for typed cards
|
||||
with speeds and named entries, with crossing time DERIVED from the region walk.
|
||||
Doing it properly changes movement, so it invalidates every balance figure — revenue 8.7, the
|
||||
freight numbers, all of it — and needs a full paired re-measure over 400 seeds. Needs the
|
||||
source Start-position art for the ten card types before it can begin.
|
||||
|
||||
- [ ] **Player settings, saved.** The district's auto-focus is the first of these: it is DISPLAY
|
||||
state, so in a multiplayer game two players may reasonably want it set differently and it must
|
||||
never become part of game state. It currently resets on reload. Worth a settings object in
|
||||
localStorage — auto-focus mode to start with, and whatever else earns a preference — kept
|
||||
strictly separate from the save, which is the seed plus the intents and has to stay portable.
|
||||
|
||||
- [ ] **Let the game join a call and talk to the table.** Long-term. If the game could join a Zoom,
|
||||
Teams or Jitsi call and post into its chat, it could carry the whole table's shared state
|
||||
without anyone alt-tabbing: the history of actions as they happen, and a prompt when someone
|
||||
@@ -117,8 +150,11 @@ target is settled and freight carries its intended share.
|
||||
|
||||
## 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.
|
||||
- [x] **Carry `links` forward in replay frames.** Done, and the premise was wrong in an instructive
|
||||
way: measured, `links` was 5% of the `cells` payload. What actually cost was the `what` prose
|
||||
(32%), the facility object stored a second time inside its own cell (24%) and the rest of the
|
||||
static identity (26%). All three are interned now — 3415 KB → 1877 KB, and a round-trip test
|
||||
runs the page's own unpacking function.
|
||||
- [ ] **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.
|
||||
|
||||
Reference in New Issue
Block a user