M3: japanska skyltar, hjälp och kunskapsnivåer – bilder och designbeslut

2026-10-23 20:13:05 +02:00
parent 9fa85beaf1
commit 70643e18f7

40
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/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 | | [`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 **Menyn** listar banorna i `resources/data/levels/` med resmål. Pilar/WASD
väljer, Enter startar, Esc avslutar. Gamepad fungerar också. 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) ![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 **Skyltar** visar sin text när du står stilla på skyltrutan – på japanska.
vilket spår som går vart – det är så du ska hitta rätt utan lista. 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) ![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 **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 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 perronger ligger innanför spärrar – det är en regel som testerna
kontrollerar för varje bana. kontrollerar för varje bana.
**Perrongen** (gul ledlinje längs kanten) har ett tåg med tidtabell. Rutan **Perrongen** (gul ledlinje längs kanten) har ett tåg med tidtabell.
längst ner visar spår, linje, resmål och om tåget är inne ("Avgår om") eller Avgångstavlan är en skylt som alla andra – japansk, sedd genom din kunskap –
på väg ("Nästa tåg om"). Står tåget inne syns vagnen bortom kanten och du och visar om tåget är inne ("Avgår om") eller på väg ("Nästa tåg om"). Står
kliver på med Enter. 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) ![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 cmd/metro-puzzle-jp programstart, flaggor
internal/game Ebitengine: scener (meny → bana → resultat), rendering, input 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/level banformat (JSON), validering, BFS-lösbarhet
internal/res hittar resources/ (env → bredvid binären → uppåt från cwd) internal/res hittar resources/ (env → bredvid binären → uppåt från cwd)
internal/rng seedad slump (PCG), del-seeds per kontext 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. ett vanligt `go test`, utan fönster.
- **Ombordstigning är ett val** (Enter på perrongen medan tåget är inne), så - **Ombordstigning är ett val** (Enter på perrongen medan tåget är inne), så
att spelaren hinner läsa skylten innan hen bestämmer sig. 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. - **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 - **All slump via seed.** Minispel och oändligt läge ska gå att återskapa
från sparfilen. från sparfilen.