Files
metro-puzzle-jp/doc/plan.md
claude 8fca14e42d
All checks were successful
release / build-release (push) Successful in 1m34s
M9a: stationer i flera våningar med trappor
- level: Point har Z; banor kan ha floors (lika stora rutnät med namn),
  gamla grid-banor läses som en våning; trappor U/D på samma x,y en våning
  upp/ner valideras parvis; Neighbors ger grannar över våningar så att
  Path, lösbarhet, spärregel och Unreachable fungerar; skyltar har z
- sim: att kliva på en trappa flyttar spelaren till andra änden
  (FloorChanges); dimman är per våning och avslöjar trappans andra ände;
  tåg hörs/syns bara på egen våning
- game: bara spelarens våning ritas (följare på andra våningar döljs),
  HUD och minikarta visar våningens namn, trappgrafik i genart och färg på
  minikartan
- bana 004 Tokyo (svårighet 3, tre i sällskapet): start under mark på B1,
  trappa upp till 1F med perronger; generatorn gör våningar med trappor
  som flaskhalsar; ordboken utökad
- testbotar och tools/shots förstår trappor; två våningsbilder
- docs/README/wiki uppdaterade

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-24 11:54:07 +02:00

3.4 KiB
Raw Blame History

metro-puzzle-jp – plan

Navet för projektets dokumentation. Detaljerna ligger i de länkade filerna.

Mål

Ett pixel art-pusselspel där ett sällskap ska hitta rätt tåg genom japanska stationer byggda som labyrinter, med skyltar på japanska som spelaren lär sig läsa. Spelet ska vara en enda binär med en resursmapp bredvid, lika lätt att bygga på Linux som på Windows, utan andra byggverktyg än Go. Hela spelidén: spelbeskrivning.md.

Stack

Go 1.27 + Ebitengine v2.10, JSON-data, standardbibliotekets tester, byggverktyg i Go (go run ./tools/build), VS Code med golang.go. Motivering och alternativ som valts bort: roadmap.md › Teknikval.

Målplattformar

Linux x64 först. Windows x64 byggs från dag 1 (korsbygge utan C-verktyg) men speltestas på riktig Windows först i M12. Linux arm64 (Pi5) är inte ett mål för spelet, men Gitea-CI kan byggas på Pi5-runnern senare.

Leverans

Mönster A enligt playbooken (nedladdningsbar binär). Repot ligger på Gitea (brasse/metro-puzzle-jp, sedan 2026-10-23) och CI bygger release-zippar för Linux och Windows till den rullande releasen latest vid varje push till master; en tagg vX.Y.Z ger en versionerad release. Byggs på brasse-linux01-runnern, inte Pi5:n.

Milstolpar

M0 skelett ✓ → M1 rörelse/kamera ✓ → M2 tåg/spärrar/vinst ✓ → M3 japanska/skyltar ✓ → M4 lämmeltåget ✓ → M5 minikarta ✓ → M6 kort/biljetter/minispel ✓ → M7 svårighet/poäng/debuffar ✓ → M7b tåg som kommer och går ✓ → M8 progression/sparfiler ✓ → M9a flera våningar ✓ → M9b folk/reklam/ljudröra → M9 navigeringslägen → M10 story-innehåll → M11 oändligt läge/NG+ → M12 ljud/polish/release. Innehåll per milstolpe: roadmap.md › Milstolpar. Vad som ska vara testat per milstolpe: mal-och-tester.md.

Idéer till expansioner (ej beslutade)

  • Baneditor i spelet eller ett tools/levelcheck som ritar banor som PNG och rapporterar onåbara rutor – blir troligen nödvändigt i M10.
  • Daglig utmaning: oändligt läge med dagens datum som seed och en lokal topplista.
  • Lärande-läge: en ordlista i menyn över tecken man mött, med repetition – går hand i hand med skyltsystemet.
  • Lokalt samarbete: en andra spelare styr en av polarna (delad skärm på samma tangentbord/gamepad).
  • Steam Deck: Linux-binären bör fungera som den är; gamepad-stöd från M1 gör det gratis.
  • Modbara banor: eftersom banor är JSON i resources/data/levels kan spelare lägga till egna – kräver bara att banväljaren läser mappen.

Öppna frågor

  • Repo-namn – beslutat: metro-puzzle-jp (Gitea 2026-10-23). Visningsnamnet "Metro Puzzle JP" är bara text i resources/text/.
  • "Game box-liknande" banval: tolkat som spelbräde/världskarta – stämmer det?
  • Font – beslutat: PixelMplus 10/12 px (M3).
  • Hur lär man sig ord utöver hjälp? – beslutat av Björn 2026-10-23: bra resultat lär resmålet, läsning ger seedade framsteg, språkpoäng på valfria ord i ordlistan. Implementerat; trädet (M8) bygger vidare på listan.
  • Ska Oändligt läge dela sparfil med story eller ha egen? (Sparfilen har nu ett versionsfält och Current-referens; oändligt läge kan få en egen sektion i samma fil.)
  • Hur många huvudbanor siktar vi på i storyn? (Påverkar M10:s omfattning.)