- level: Point har Z; banor kan ha floors (lika stora rutnät med namn),
gamla grid-banor läses som en våning; trappor U/D på samma x,y en våning
upp/ner valideras parvis; Neighbors ger grannar över våningar så att
Path, lösbarhet, spärregel och Unreachable fungerar; skyltar har z
- sim: att kliva på en trappa flyttar spelaren till andra änden
(FloorChanges); dimman är per våning och avslöjar trappans andra ände;
tåg hörs/syns bara på egen våning
- game: bara spelarens våning ritas (följare på andra våningar döljs),
HUD och minikarta visar våningens namn, trappgrafik i genart och färg på
minikartan
- bana 004 Tokyo (svårighet 3, tre i sällskapet): start under mark på B1,
trappa upp till 1F med perronger; generatorn gör våningar med trappor
som flaskhalsar; ordboken utökad
- testbotar och tools/shots förstår trappor; två våningsbilder
- docs/README/wiki uppdaterade
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- 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>
- sim/stats.go: Stats (fart, törst, fokus, toalett, tur), debuffar som
multiplikatorer, Profile som följer med mellan banor och räknar ned
- sim.Run: tidsgräns och maxantal missade tåg förlorar banan; poängformel
(tid mot par, pengar, sällskapets mätare, utforskat, avdrag); debuffar
tjänas av många steg, lång tid, tom matmätare och seedad otur vid
kiosken; stats påverkar fart, mätartakter, läsning och hjälptid
- egna kort (individualCards): Member.Card, spärren kräver allas saldo och
drar från alla, automaten frågar vems kort, biljetter köps åt alla
- sittplatsval (seatSelection): Ticket får ett sittplatssteg med seedade
önskemål (fönster/gång/sida/bredvid); missnöjda ger mätar- och poängavdrag
- level: maxMissedTrains, individualCards, seatSelection; bana 003 Shibuya
(svårighet 3, fyra i sällskapet) och 002 med tidsgräns och sittplatser;
ordboken utökad; generatorn är spec-driven
- game: tid kvar/missade i HUD, debuffar i meny/HUD/resultat, poäng och
förlustorsaker på resultatet, vyer för personval och vagn, skript-pick,
flaggan -debuffs; HUD och resultat komprimerade för fyra i sällskapet
- plan (Björn 2026-10-24): flera våningar med trappor som M9a, egna kort
och sittplatsval som svårighetsinställningar i M7 – i spelbeskrivning,
roadmap, testplan
- docs/README/wiki med sittplatsbilden
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- sim.Wallet: IC-kort, kontanter, pappersbiljett, telefon med batteri,
spenderat; följer med mellan banor (Game.Wallet)
- internal/minigame: gemensamt Game-gränssnitt (Update/Done/Success), all
slump från del-seeds: TopUp (hitta チャージ, belopp, mata sedlar),
Ticket (taxetavla med resmål på japanska), Crowd (tidsfönster, två
försök), Ride (stationerna passerar, kliv av vid resmålet)
- sim.Run: spärren kräver biljett på biljettbanor annars användbart kort;
telefonen ger ×1,1 fart men 15 % seedad omskanning (frysning 1,5 s),
dött batteri gör kortet oanvändbart; automaten startar påfyllning eller
biljettköp; tåget kontrollerar biljetten; fulla tåg kräver trängsel;
resan avgör vinst/förlust (fel station, åkte förbi, fel tåg); StepMini
låter klockan och sällskapet ticka medan rörelsen pausar
- level: ticketRequired, rideStops, Train.Crowded; 002 är biljettbana med
fullt tåg och fyra stopp; ordboken har stationer (kind) + sju nya namn
- game: vyer för minispelen, plånbok i HUD, P i menyn = kort i telefonen,
förlustorsaker och spenderat på resultatet, flaggor -phone/-card,
skriptkommandon hold/waitstop; inforuta/minikarta döljs under minispel
- plan: M7b (Björn) – tågvind, ankomstindikator nära rälsen,
in-/utkörningsanimation för tåg och bussar – i spelbeskrivning, roadmap,
testplan
- docs/README/wiki med tre nya bilder (automat, biljettavla, tågresa)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- resources/text/fonts: PixelMplus 10/12 px (M+ FONT LICENSE) + licens;
all text ritas via text/v2 på heltalspositioner, debugfonten är borta
- internal/lang: ordbok (60 ord, validerad), tokenisering med längsta
matchning, Knowledge (ord + kana, nivå 0–5, hintar), Render (kända ord
markerade/översatta, okända kvar, kana som romaji), EnglishShare/
ShowEnglish per svårighet (deterministiskt per bana+position),
HelpSeconds; datatest kräver att all japanska i banorna finns i ordboken
- sim.Run: AskHelp (H) med väntetid efter nivå, avbryts om man går,
avslöjar skylten och lär första okända ordet; Knowledge delas mellan banor
- game: skylt- och avgångstavlor renderade genom kunskapen med färgkodning,
engelsk rad på lätta banor, hjälp-förlopp, "Nytt ord"-notis, HUD visar
resmålet på japanska från nivå 1 och japanska-nivå; meny med svårighet;
pixelbaserad radbrytning av färgade textsegment; -know-flagga
- tools/shots: tre skyltbilder (skylt, hjälp, nytt ord) med förkunskap
- docs/README/wiki uppdaterade
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- Go 1.27 + Ebitengine v2.10, intern upplösning 320x180 med heltalsskalning
- internal/res (resursuppslag), internal/rng (seedad slump), internal/level
(banformat, validering, BFS-lösbarhet) med tester; internal/archtest
kontrollerar att bara presentationslagret beror på Ebitengine
- tools/build: debug -> build/debug/, release -> build/release/<os>-<arch>/
med resources/ bredvid binären; Windows korsbyggs utan C-verktyg
- VS Code tasks (build/test/release) och launch (dlv)
- Första banan 001-flygplatsen, sv/en-texter, skyltordbok, placeholder-sprite
- doc/: spelbeskrivning (renskriven), mål och tester, roadmap med teknikval
(M0–M12), plan.md; README med bygg- och beroendeinformation
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>