From ecbf79b80af678252411fe740c0cb7d8d768507a Mon Sep 17 00:00:00 2001 From: claude Date: Sat, 24 Oct 2026 11:24:15 +0200 Subject: [PATCH] =?UTF-8?q?M8:=20bankarta,=20skilltr=C3=A4d,=20items,=20bu?= =?UTF-8?q?tik=20och=20sparfil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Home.md | 51 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/Home.md b/Home.md index de6a8e4..47e2b15 100644 --- a/Home.md +++ b/Home.md @@ -16,12 +16,16 @@ till rätt resmål. | [`doc/roadmap.md`](../src/branch/master/doc/roadmap.md) | Teknikval, katalogstruktur, milstolpar M0–M12 | | [`doc/mal-och-tester.md`](../src/branch/master/doc/mal-och-tester.md) | Projektmål, teststrategi, checklistor | -## Så fungerar spelet (läget efter M7b) +## Så fungerar spelet (läget efter M8) -**Menyn** listar banorna i `resources/data/levels/` med resmål. Pilar/WASD -väljer, Enter startar, Esc avslutar. Gamepad fungerar också. +**Bankartan** är ett spelbräde: huvudbanorna på en linje från flygplatsen, +sidospåren som avstickare ovanför. Låsta banor är grå, klarade visar sina +stjärnor. Nästa huvudbana öppnas när föregående är klarad, sidospår när +föräldern är det. `⟳` betyder att banan återupptas med samma seed som när du +slutade. Pilar väljer, Enter startar; L ordlistan, T skillträdet, I +garderoben, P telefonen. -![Meny](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/menu.png) +![Bankartan](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/map.png) **I banan** startar du på den gröna dörrmattan. Stationen är en labyrint: mörka väggar, ljust golv, skyltar (blå tavla på stolpe), biljettautomat @@ -148,9 +152,32 @@ av en tom matmätare och matförgiftning med liten otur vid kiosken. De sänker farten, snabbar på mätarna eller gör skyltarna svårare att lära sig, och räknas ned en bana i taget. -Resultatet visar tid mot par, stjärnor, utforskat, spenderat, missade tåg och -sällskapets försörjning. R spelar om, L öppnar ordlistan, Enter/Esc går till -menyn. +Resultatet visar tid mot par, stjärnor, poäng, spenderat och missade tåg – +och vad banan gav: **XP**, nivå upp, nya items och vilka banor som öppnades. +R spelar om, L öppnar ordlistan, Enter/Esc går till kartan. + +**Progression.** En klarad bana ger `poäng/10 + 25 × stjärnor` XP. Nivå n+1 +nås vid 150·n(n+1)/2 XP och varje nivå ger en **skillpoäng** till +skillträdet (T): fyra grenar – språk (kana, fokus, hjälp), kropp (fart, +törst, toa), resenär (tur) och utforskare (sikt, landmärken på minikartan). + +![Skillträdet](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/skills.png) + +**Items** köps kontant i kioskernas **butik** (B): hattar, masker, kläder, +skor och prylar med buffar, några med genvägar – JR Pass öppnar alla spärrar, +kartor avslöjar en bana, powerbanken håller telefonen vid liv. Ett item per +plats bärs (huvud, ansikte, kropp, fötter, väska); skins ändrar din färg. +Sidospår belönar unika skins. Det finns fler items än man har råd med på en +omgång – det är meningen. + +![Butiken](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/shop.png) + +![Garderoben](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/items.png) + +**Sparfilen** ligger i `~/.config/metro-puzzle-jp/save.json` (Linux) eller +`%AppData%\metro-puzzle-jp\` (Windows) och sparas automatiskt vid banstart +(med seeden), efter varje bana och vid köp. Den har ett versionsfält så att +äldre filer kan migreras. ![Resultat](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/result.png) @@ -177,6 +204,8 @@ cmd/metro-puzzle-jp programstart, flaggor internal/game Ebitengine: scener (meny → bana → resultat), rendering, input internal/sim ren spellogik: rörelse, kollision, kamera, banomgång (tåg, spärrar, plånbok, hjälp, stjärnor, minispel), sällskap, dimma/minikarta internal/minigame påfyllning, biljettköp, trängsel, tågresa – seedade tillståndsmaskiner +internal/progress XP, skillträd, items, banresultat, upplåsning av bankartan +internal/save sparfil: versionerad JSON, migrering, atomisk skrivning internal/lang japanska: ordbok, tokenisering, kunskap, delvis översättning, engelska-andel internal/level banformat (JSON), validering, BFS-lösbarhet internal/res hittar resources/ (env → bredvid binären → uppåt från cwd) @@ -218,6 +247,14 @@ resources/ sprites/ sound/ text/ data/ – skeppas bredvid binäre gemensamt gränssnitt (Update/Done/Success) och all slump från del-seeds. Därför kan hela bana 002 – fel biljett, rätt biljett, spärr, trängsel, resa – spelas igenom i ett vanligt `go test`. +- **Progressionen är data.** Skills och items är JSON-rader med en + `effect` som antingen multiplicerar en stat eller sätter en flagga; samma + tabell gäller debuffar åt andra hållet. Nya items/skills = nya rader, inga + kodändringar. Designregeln "knappt 33 % per omgång" är ett test mot + itemlistan. +- **Sparfilen skrivs atomiskt** (tempfil + byte av namn) och har version + + migrering från dag ett, så att vi kan ändra formatet utan att förstöra + någons spel. - **Tågets liv är sex faser ur tidtabellen** (away, approaching, arriving, dwelling, closing, leaving), beräknade i `level` utan tillstånd. Animation, ljud, vind och indikator i spelet läser bara av fasen – och boten i