Inlärning (framsteg, stjärnor, ordlista) och M4: lämmeltåget
All checks were successful
release / build-release (push) Successful in 1m49s
Inlärning enligt Björns regler: - lang.Knowledge: framsteg per ord (3 läsningar = känt), språkpoäng, köp av valfria ord (kostnad = tier), Award per stjärna - sim.Run: RunOptions med seed; stjärnor 1–3 mot par (parSec eller kortaste vägen × 0,5 s + 20 s); ≥2 stjärnor lär resmålets ord; att stanna på skylt/perrong ger seedad 35 % chans till framsteg per okänt ord - game: ordlista (L) med kända ord, framsteg och kostnad; stjärnor, poäng och inlärt resmål på resultatskärmen; framstegsnotis; flaggor -points/-seed M4 lämmeltåget: - sim.Party: medlemmar med mat/dryck/toa-mätare, behov under tröskel, seedade händelser var 45 s / antal (toa, törst, hunger, distraktion), fartstraff, toalett (W, 3 s/person) och kiosk (K, 150 ¥/person), följare på ledarens spår - level: rutor W och K, party och parSec i bandatan; banor med sällskap måste ha toalett och kiosk (testas); 001 har 2, 002 har 3 i sällskapet - game: följare med färgton, behovsmarkering över huvudet, mätarpanel, facilitetsrutor med förlopp; genart ritar toalett och kiosk - skriptläget: move stannar exakt på målrutan även när farten inte är bildruteexakt (sällskapets fartstraff), stall-skydd mot väggar - docs/README/wiki/spelbeskrivning uppdaterade Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 16 KiB |
BIN
doc/img/menu.png
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 24 KiB |
BIN
doc/img/sign.png
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 24 KiB |
BIN
doc/img/words.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
@@ -98,6 +98,14 @@ att bygga på Linux som på Windows.
|
||||
| `internal/lang` | `TestHelpSeconds`, `TestEnglishShareAndDeterminism` | Hjälptiden sjunker med nivån men inte under golvet; engelska-andelen per svårighet (1 = alltid, 5 = aldrig), deterministisk, ~60 % på svårighet 2 |
|
||||
| `internal/lang` | `TestParseDictionaryValidation`, `TestShippedDictionary`, `TestAllJapaneseInLevelsIsInDictionary` | Ordboken är komplett per post och **täcker all japanska i banorna** |
|
||||
| `internal/sim` | `TestAskHelpRevealsSignAndTeachesWord`, `TestHelpIsCancelledByWalkingAway`, `TestNoHelpOffSign` | Hjälpen tar rätt tid, avslöjar skylten, lär första okända ordet; avbryts när man går; kräver skylt |
|
||||
| `internal/lang` | `TestProgressLearnsAfterEnoughReads`, `TestBuyWordsWithPoints` | Tre framsteg lär ordet; köp för poäng (kostnad = tier), stjärnor ger poäng |
|
||||
| `internal/level` | `TestPartyAndParDefaults` | Sällskap/par-standardvärden, max sällskap, toalett/kiosk passerbara, avgångstavlans text |
|
||||
| `internal/sim` | `TestStarsFromParTime`, `TestGoodResultTeachesDestination` | Par från kortaste vägen eller bandatan, stjärntrösklar; tre stjärnor lär resmålet och ger poäng, långsam vinst gör det inte |
|
||||
| `internal/sim` | `TestReadingGivesSeededProgress` | Att stanna på en skylt ger seedade framsteg; samma seed = samma utfall; ord lossnar efter många läsningar |
|
||||
| `internal/sim` | `TestMetersDecayAtRates`, `TestUrgeArisesBelowThreshold` | Mätarnas takt; behov under tröskeln |
|
||||
| `internal/sim` | `TestMoreMembersMoreEvents`, `TestEventsAreSeeded` | **M4:** fyra i sällskapet ger minst 3× så många händelser som en; samma seed = samma logg |
|
||||
| `internal/sim` | `TestUrgesSlowAndFacilitiesRestore`, `TestFollowersTrailLeader`, `TestPartySizeIsClamped` | Fartstraff, toalett/kiosk återställer och kostar, distraktion går över, följarna står på ledarens spår |
|
||||
| `internal/sim` | `TestToiletAndKioskInRun`, `TestPartySlowsLeader` | Enter på W startar ett besök som tar tid och avbryts om man går; K drar från kortet; sällskapet saktar ledaren |
|
||||
| `internal/archtest` | `TestOnlyPresentationPackagesImportEbitengine` | Beroenderegeln ovan |
|
||||
|
||||
### Planerade tester per milstolpe
|
||||
@@ -107,7 +115,7 @@ att bygga på Linux som på Windows.
|
||||
| ~~M1 Rörelse & kamera~~ ✓ | Kollision mot vägg, rörelse i 4 riktningar, kamera klampas till kartan – finns, se tabellen ovan |
|
||||
| ~~M2 Stationen~~ ✓ | Tidtabell, spärr med/utan saldo, vinst/förlust, bot klarar bana 001 headless – finns, se tabellen ovan |
|
||||
| ~~M3 Japanska & skyltar~~ ✓ | Delvis översättning, engelska-andel, ordbokens fullständighet och täckning, hjälptid – finns, se tabellen ovan |
|
||||
| M4 Lämmeltåget | Mätare sjunker med rätt takt; event-frekvens ökar med gruppstorlek; event väljs deterministiskt per seed |
|
||||
| ~~M4 Lämmeltåget~~ ✓ | Mätare, händelsefrekvens efter gruppstorlek, seedade händelser – finns, se tabellen ovan |
|
||||
| M5 Minikarta | Upptäckta rutor markeras, återställs per bana; avgångar syns från start |
|
||||
| M6 Kort/biljetter/minispel | Saldo dras i spärr; tomt kort → automatkrav; biljettminispel: rätt/fel biljett; telefon-skanning misslyckas med given procent per seed; batteri tar bara slut över tröskeltid |
|
||||
| M7 Svårighet/poäng/debuffs | Poängformeln (tid, pengar, mätare, läge); tidsgräns och maxantal missade tåg; varje debuff ändrar rätt stat; temporära debuffar räknar ned 1–4 banor |
|
||||
|
||||
@@ -33,7 +33,7 @@ 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
|
||||
→ M4 lämmeltåget ✓ → M5 minikarta → M6 kort/biljetter/minispel → M7
|
||||
svårighet/poäng/debuffar → M8 progression/sparfiler → M9 navigeringslägen →
|
||||
M10 story-innehåll → M11 oändligt läge/NG+ → M12 ljud/polish/release.
|
||||
Innehåll per milstolpe: [roadmap.md › Milstolpar](roadmap.md#milstolpar).
|
||||
@@ -59,7 +59,8 @@ Vad som ska vara testat per milstolpe: [mal-och-tester.md](mal-och-tester.md).
|
||||
- ~~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 ska spelaren lära sig ord utöver "fråga om hjälp"? Förslag: att klara
|
||||
en bana lär ut resmålets namn; skill tree i M8 kan ge kana direkt.
|
||||
- ~~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?
|
||||
- Hur många huvudbanor siktar vi på i storyn? (Påverkar M10:s omfattning.)
|
||||
|
||||
@@ -188,8 +188,18 @@ på **brasse-linux01-runnern** (label `linux-amd64`), aldrig på Pi5:n.
|
||||
- **Hintar efter nivå:** från nivå 1 visar HUD:en resmålet på japanska (att
|
||||
matcha mot skyltarna), från nivå 2 visas läsningen efter kända ord.
|
||||
- Kunskapen följer med mellan banor under en session (`Game.Know`); att
|
||||
spara den på disk är M8. Flaggan `-know ord,ord` ger förkunskap för
|
||||
tester och skärmdumpar.
|
||||
spara den på disk är M8. Flaggorna `-know ord,ord`, `-points N` och
|
||||
`-seed N` ger förkunskap och determinism för tester och skärmdumpar.
|
||||
- **Inlärning utöver hjälp** (Björns regler, tillägg samma dag):
|
||||
- **Bra resultat lär ut resmålet.** Vinst ger 1–3 stjärnor efter tid mot
|
||||
par (`parSec` i bandatan, annars kortaste vägen × 0,5 s + 20 s); från
|
||||
två stjärnor lärs resmålets ord in.
|
||||
- **Läsning ger framsteg.** Varje gång spelaren stannar på en skylt eller
|
||||
perrong har varje okänt ord 35 % chans (seedat per bana, skylt och
|
||||
besök) att få +1 framsteg; vid 3 framsteg kan man ordet.
|
||||
- **Språkpoäng** (1 per stjärna) läggs på valfria ord i **ordlistan**
|
||||
(L i menyn och på resultatskärmen): hela ordboken sorterad på tier,
|
||||
kända ord, framsteg och kostnad (= tier). Blir ett riktigt träd i M8.
|
||||
- **Teknik:** `internal/lang` (ren Go, 11 tester + datatester), `sim.Run`
|
||||
(hjälp-tillstånd, avslöjade skyltar), `internal/game/text.go`
|
||||
(pixelbaserad radbrytning av färgade textsegment).
|
||||
@@ -198,17 +208,30 @@ på **brasse-linux01-runnern** (label `linux-amd64`), aldrig på Pi5:n.
|
||||
`TestAskHelpRevealsSignAndTeachesWord`); bana 001 spelas med japanska
|
||||
skyltar. ✓
|
||||
|
||||
### M4 – Lämmeltåget och mätarna
|
||||
### M4 – Lämmeltåget och mätarna ✓ (klar 2026-10-23)
|
||||
|
||||
- **Mål:** sällskapet följer med och ställer till det.
|
||||
- Följare som går i rad efter spelaren.
|
||||
- Mätare mat/dryck/toa per karaktär; händelser (toabesök, köpa dricka,
|
||||
distraktion) vars frekvens skalar med gruppstorlek.
|
||||
- Toaletter, kiosker och automater som rutor i banan.
|
||||
- **Teknik:** `internal/sim/party`, `internal/sim/events` (seedade via
|
||||
`internal/rng`).
|
||||
- **Klar när:** fler i gruppen ger mätbart fler händelser i test; händelser
|
||||
går att lösa i spelet.
|
||||
- Följare som går i rad efter spelaren längs ledarens spår (`party` i
|
||||
bandatan: 001 har två, 002 tre; max fem). Egna färgtoner tills de får
|
||||
egna sprites.
|
||||
- Mätare mat/dryck/toa per person (100 → 0 på ~10/7/8 min). Under 25
|
||||
uppstår ett behov av sig självt.
|
||||
- **Händelser** var `45 s / antal i sällskapet` (± 30 %), slumpade från
|
||||
omgångens seed: någon måste på toa, blir törstig, hungrig eller
|
||||
distraherad. Fler i lämmeltåget = oftare, testat.
|
||||
- Behov saktar ned hela sällskapet (×0,8; distraktion ×0,5 i 4 s; tom
|
||||
mätare ×0,5) och syns som markering över huvudet och i HUD:en.
|
||||
- **Toalett** (W, Enter: 3 s per person) och **kiosk** (K, Enter: 150 ¥
|
||||
per person från kortet) återställer mätarna och tar bort behoven.
|
||||
Mätarpanel uppe till höger.
|
||||
- **Teknik:** `sim.Party` (ren Go, 7 tester), `sim.Run` (fart, faciliteter),
|
||||
nya rutor `W`/`K` i `level` och `tools/genart`; banor med sällskap måste ha
|
||||
minst en toalett och en kiosk (testas).
|
||||
- **Klar när:** fler i gruppen ger mätbart fler händelser i test
|
||||
(`TestMoreMembersMoreEvents`), händelser är seedade
|
||||
(`TestEventsAreSeeded`) och går att lösa i spelet (`TestToiletAndKioskInRun`). ✓
|
||||
- **Skjutet till M7:** mätarnas värde vid målgång påverkar poängen; debuffar
|
||||
vid tomma mätare.
|
||||
|
||||
### M5 – Minikarta och utforskning
|
||||
|
||||
|
||||
@@ -91,6 +91,19 @@ otydligt står tolkningen i [§15](#15-tolkningar-av-originalet).
|
||||
- Huvudsyftet med stationslabyrinten är att navigera med symboler och
|
||||
skyltar, med stöd av dina skills.
|
||||
|
||||
**Så lär man sig ord** (tillägg 2026-10-23):
|
||||
|
||||
- **Bra poäng på en bana lär ut resmålets namn.** Klarar man banan med
|
||||
tillräckligt bra resultat kan man resmålets ord efteråt.
|
||||
- **Ord man läser kan ge framsteg.** Varje gång man läser en skylt har varje
|
||||
okänt ord på den en chans att ge ett steg framåt. Har man fått tillräckligt
|
||||
många steg kan man ordet.
|
||||
- **Fråga någon om hjälp** översätter skylten och lär ut ett ord direkt (§6
|
||||
ovan).
|
||||
- **Språkpoäng kan läggas på valfria ord.** Man tjänar språkpoäng på banor
|
||||
och kan i sitt språkträd/sin ordlista välja fritt vilka ord ur hela listan
|
||||
man vill lära sig, mot en kostnad i poäng.
|
||||
|
||||
## 7. Minikarta
|
||||
|
||||
- Visar bara **avgångar** och några **riktmärken** som man kan förhålla sig
|
||||
|
||||