M8: progression, items, bankarta och sparfil
All checks were successful
release / build-release (push) Successful in 1m46s

- internal/progress: katalog (skills.json 12 noder, items.json 25 items)
  med validering; XP/nivåer (150·n(n+1)/2) och skillpoäng; skillträd med
  krav och kostnad; items per plats med buffar, genvägar (JR Pass, kartor,
  powerbank) och färgton; banresultat och upplåsning (huvudbanor i ordning,
  sidospår efter föräldern); 33 %-regeln som test
- internal/save: versionerad JSON med kunskap, plånbok, debuffar,
  progression och pågående bana + seed; atomisk skrivning; migrering;
  ~/.config/metro-puzzle-jp/save.json resp. %AppData%
- sim: RunOptions får Extra/FogRadius/Landmarks/FreeGates/RevealAll/
  InfiniteBattery; luck påverkar trängselzonen; Fog.RevealAll och extra
  landmärken
- game: bankarta i spelbrädesstil ersätter menyn (⟳ återupptar med sparad
  seed), skillträd (T), garderob (I), butik i kiosken (B), XP/nivå/items/
  upplåsningar på resultatet, spelaren tonas av skins; autospar vid banstart,
  efter banan och vid köp; flaggor -save/-nosave
- level: kind/order/parent/rewards/shop; ny sidobana 002b Kabukicho som
  belönar skinnet Kimono; 001 belönar Salaryman-skinnet; butikssortiment
  på 002/003
- tools/shots: demo-sparfil (build/, aldrig den riktiga), bilder av karta,
  skills, garderob och butik; alla körningar med -nosave
- docs/README/wiki uppdaterade

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-10-24 11:29:30 +02:00
parent d466333f01
commit 915c684dc2
46 changed files with 3058 additions and 316 deletions

View File

@@ -10,14 +10,16 @@ Storyn följer några polare på semester i Japan, från landningen på
flygplatsen till avresan. Efter storyn låses ett oändligt läge och New Game+
upp. Hela speldesignen finns i [doc/spelbeskrivning.md](doc/spelbeskrivning.md).
**Status:** M7b klar (2026-10-24) – tre banor med stigande svårighet.
Japanska skyltar och ordinlärning, lämmeltåget med sina behov, minikarta med
dimma, tågkort, biljetter och minispel, svårighet med tidsgräns, poäng,
debuffar, egna kort och sittplatsval. Och nu lever tågen: de rullar in på
rälsen till avgångsmelodin, står med öppna dörrar, dörrsignalen ljuder och
de accelererar ut igen, med vind längs perrongen och lampor som varnar den
som står nära rälsen. Nästa är M8: progression, items och sparfiler. Se
[doc/roadmap.md](doc/roadmap.md).
**Status:** M8 klar (2026-10-24) – fyra banor på en bankarta i
spelbrädesstil, med sidospår. Japanska skyltar och ordinlärning,
lämmeltåget, minikarta, tågkort, biljetter och minispel, svårighet med
tidsgräns, poäng och debuffar, tåg som rullar in till avgångsmelodin. Och nu
progression: XP och nivåer, ett skillträd, items med buffar och genvägar som
köps i kioskernas butiker eller vinns på sidospår, och en sparfil som minns
allt inklusive seeden på den bana du höll på med. Nästa är M9a: stationer i
flera våningar. Se [doc/roadmap.md](doc/roadmap.md).
![Bankartan](doc/img/map.png)
![Skylt på japanska med delvis översättning](doc/img/sign.png)
@@ -42,6 +44,13 @@ på japanska.
![Automaten](doc/img/ticket.png)
I kioskens butik (B) köper du hattar, masker, kläder, skor och prylar med
buffar; några är genvägar, som JR Pass som öppnar alla spärrar. Klarade
banor ger XP, nivåer ger skillpoäng till skillträdet (T), och garderoben (I)
visar vad du bär.
![Skillträdet](doc/img/skills.png)
På de svåraste banorna har alla i sällskapet egna kort som måste ha saldo,
alla behöver biljett, och när biljetten är köpt ska sällskapet placeras i
vagnen efter sina önskemål: fönster eller gång, vänster eller höger sida,
@@ -122,7 +131,9 @@ build/
Spelet letar efter `resources/` bredvid binären, annars uppåt från
arbetskatalogen (så `go run` och F5 fungerar), och `JP_RESOURCES=/sökväg`
överstyr allt. Att distribuera spelet = zippa en plattformsmapp.
överstyr allt. Att distribuera spelet = zippa en plattformsmapp. Sparfilen
ligger utanför spelmappen, i `~/.config/metro-puzzle-jp/` (Linux) eller
`%AppData%\metro-puzzle-jp\` (Windows).
### Flaggor
@@ -136,6 +147,8 @@ metro-puzzle-jp -seed 7 # fast seed för händelser, läsning
metro-puzzle-jp -phone -card 0 # kortet i telefonen; kortets startsaldo (tester/skärmdumpar)
metro-puzzle-jp -debuffs sore_feet,tired # debuffar från start (tester/skärmdumpar)
metro-puzzle-jp -mute # inget ljud
metro-puzzle-jp -save /sökväg/save.json # annan sparfil (standard ~/.config/metro-puzzle-jp/save.json)
metro-puzzle-jp -nosave # läs sparfilen men skriv aldrig (tester/skärmdumpar)
metro-puzzle-jp -script "move right 4; shot bild.png; quit" # skriptläge, se internal/game/script.go
metro-puzzle-jp -version
```
@@ -145,8 +158,9 @@ metro-puzzle-jp -version
Pilar eller WASD går. Enter väljer, kliver på tåget, använder toaletten,
handlar i kiosken eller startar automaten; i minispelen väljer pilarna och
Enter bekräftar (håll Enter för att mata in sedlar). H frågar om hjälp vid en
skylt, L öppnar ordlistan, M döljer/visar minikartan, P i menyn lägger
kortet i telefonen, Esc går tillbaka, R spelar om. Gamepad
skylt, L öppnar ordlistan, T skillträdet, I garderoben, B butiken vid en kiosk, M
döljer/visar minikartan, P på kartan lägger kortet i telefonen, Esc går
tillbaka, R spelar om. Gamepad
med standardlayout fungerar: d-pad/vänster spak, A = välj, B = tillbaka,
Y = hjälp, X = ordlista, Back/Select = karta.
@@ -187,6 +201,8 @@ internal/game/ Ebitengine: scener, input, rendering, skriptläge (enda
internal/sim/ rutbaserad rörelse, kollision, kamera, banomgång med tåg/spärrar/hjälp (ren Go)
internal/lang/ japanska: ordbok, kunskap, delvis översättning (ren Go)
internal/minigame/ påfyllning, biljettköp, trängsel, tågresa – seedade minispel (ren Go)
internal/progress/ XP, skillträd, items, banresultat, upplåsning (ren Go)
internal/save/ sparfil (versionerad JSON)
internal/level/ banformat, validering, framkomlighet
internal/res/ hittar och läser resources/
internal/rng/ seedad slump