diff --git a/Home.md b/Home.md index 47ca5ed..ba6b9ef 100644 --- a/Home.md +++ b/Home.md @@ -16,7 +16,7 @@ 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 M2) +## Så fungerar spelet (läget efter M3) **Menyn** listar banorna i `resources/data/levels/` med resmål. Pilar/WASD väljer, Enter startar, Esc avslutar. Gamepad fungerar också. @@ -36,20 +36,35 @@ kanter. Bana 002 (Shinjuku, 33×21 rutor) finns för att testa just det. ![Bana 002 – Shinjuku](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/level-002.png) -**Skyltar** visar sin text när du står stilla på skyltrutan. De talar om -vilket spår som går vart – det är så du ska hitta rätt utan lista. +**Skyltar** visar sin text när du står stilla på skyltrutan – på japanska. +Ord du kan lyser gult i originalet och översätts i raden under; okända ord +står kvar i grått. På lätta banor finns en engelsk rad (cyan) på alla +skyltar, på svårare banor på allt färre, på de svåraste inga alls. ![Skylt](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/sign.png) +**Fråga någon om hjälp** med H. En förbipasserande förklarar skylten – det +tar några sekunder (kortare ju bättre din japanska är), och går du därifrån +avbryts det. + +![Hjälp pågår](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/sign-help.png) + +När hjälpen är klar är hela skylten översatt och du har lärt dig ett nytt +ord. Lär du dig fyra ord når du nivå 1, och då visar HUD:en resmålet även på +japanska (新宿) så att du kan matcha tecknen mot skyltarna. Från nivå 2 visas +läsningen efter kända ord. Kunskapen följer med mellan banorna. + +![Nytt ord](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/sign-learned.png) + **Spärrarna** (stolpar med grön lampa) släpper bara igenom dig om tågkortet har saldo. Avgiften dras när du går in i spärren; HUD:en visar saldot. Alla perronger ligger innanför spärrar – det är en regel som testerna kontrollerar för varje bana. -**Perrongen** (gul ledlinje längs kanten) har ett tåg med tidtabell. Rutan -längst ner visar spår, linje, resmål och om tåget är inne ("Avgår om") eller -på väg ("Nästa tåg om"). Står tåget inne syns vagnen bortom kanten och du -kliver på med Enter. +**Perrongen** (gul ledlinje längs kanten) har ett tåg med tidtabell. +Avgångstavlan är en skylt som alla andra – japansk, sedd genom din kunskap – +och visar om tåget är inne ("Avgår om") eller på väg ("Nästa tåg om"). Står +tåget inne syns vagnen bortom kanten och du kliver på med Enter. ![Perrongen](/brasse/metro-puzzle-jp/raw/branch/master/doc/img/platform.png) @@ -80,7 +95,8 @@ repot gör det. Nya vyer: lägg till i listan i `tools/shots/main.go`. ``` cmd/metro-puzzle-jp programstart, flaggor internal/game Ebitengine: scener (meny → bana → resultat), rendering, input -internal/sim ren spellogik: rutbaserad rörelse, kollision, kamera +internal/sim ren spellogik: rörelse, kollision, kamera, banomgång (tåg, spärrar, kort, hjälp) +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) internal/rng seedad slump (PCG), del-seeds per kontext @@ -103,6 +119,14 @@ resources/ sprites/ sound/ text/ data/ – skeppas bredvid binäre ett vanligt `go test`, utan fönster. - **Ombordstigning är ett val** (Enter på perrongen medan tåget är inne), så att spelaren hinner läsa skylten innan hen bestämmer sig. +- **Språket är data + ren logik.** `jp-dictionary.json` är enda källan till + japanska ord; `internal/lang` tokeniserar skyltar med längsta matchning och + renderar dem genom spelarens kunskap. Ett test kräver att all japanska i + banorna finns i ordboken – annars kan spelet inte översätta den. +- **PixelMplus 10 px** som enda font (kana + kanji, fri licens), ritad på + heltalspositioner för skarpa pixlar. +- **Engelska på skyltar hashas från bana + position**, inte från seeden: + banorna är statiska och ska se likadana ut varje gång. - **Intern upplösning 320×180, 16 px-rutor**, heltalsskalning till fönstret. - **All slump via seed.** Minispel och oändligt läge ska gå att återskapa från sparfilen.