Björns feedback efter v0.1.0. Titelskärm med premissen i text och menyn
Fortsätt/Starta, Tutorial, Inställningar, Avsluta (Enter två gånger);
språkval första gången spelet startar. Tutorial i fem sidor med riktiga
sprites och en exempelskylt där resmålet markeras och resten tonas ned,
plus nyckeln 番線/方面/改札 och biljettipset. Kontextuella tips i spelet
tills första banan är klarad, och resmålets tecken markeras på skyltar
och avgångstavlor under tiden. Esc i en bana öppnar en pausmeny
(Fortsätt, Lämna banan, Inställningar, Avsluta spelet) i stället för att
lämna banan; Esc på bankartan går till titeln. Kortare lägestexter så att
bankartans rader ryms på svenska. Test för markeringen, docs, wiki och
skärmdumpar.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
tools/gensound syntetiserar 21 ljud: fyra stationsmelodier i klockklang
(en per station via melody-fältet eller banans id), ankomstjingel,
ding-dong vid inrullning, dörrsignal vid avgång, spärrens pip och
nekande, kiosk, toalett, lärt ord, bekräfta/varning, byte, personal,
vinst, förlust, flygplan, sorl och menymusik. sfx.go spelar effekter
utifrån vad som hänt i sim.Run sedan förra bildrutan. Ljudlagret har
huvudvolym × effekter/musik och byter inte slinga i onödan.
Inställningar (S på bankartan, sparas): volymer, språk sv/en som laddas
om direkt, fönsterskala, fullskärm (F11 överallt) och tangentöversikt.
Fönsterikon från genart. CHANGELOG.md. Tester för ljudfiler, melodival
och inställningar. Docs, wiki och skärmdumpar uppdaterade.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
internal/endless lottar mål ur en seed: en av storyns nätkopplade
stationer (aldrig samma två gånger i rad) med ett resmål som minst ett
tåg går rakt till men inte alla; banan kopieras, bedöms om mot nätet,
sällskapet växer var tredje mål och tidsgränsen krymper. O på bankartan
(eller -endless) startar en omgång; klarade mål ger poäng och XP, Enter
ger nästa mål, förlust eller Esc avslutar och omgången hamnar i
sparfilens poänglista (fem bästa). G två gånger startar New Game+: items,
banresultat, pengar och debuffar nollställs, skills, XP och japanskan
behålls, sällskapet är en person större per varv. Docs, wiki, tester och
skärmdumpar uppdaterade.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Resor med byten: en bana kan ha next som pekar på en delbana (kind leg,
syns inte på bankartan). När man klivit av rätt tåg fortsätter samma
omgång på nästa station med klocka, plånbok, sällskap och räknare;
par-tiden adderas, dimma och folk är nya, en Byte!-banner visas och
HUD:en visar resmålet via bytesstationen. Tidsgräns och missade tåg
gäller hela resan. level.ValidateChains kräver sammanhängande kedjor.
Nya resor: 007 Akihabara -> Ueno -> Asakusa och finalen 008 Tokyo (två
våningar) -> Nippori -> Narita flygplats. Slutscen när sista huvudbanan
klaras första gången: planet lyfter, resan summeras, eftertexter;
Progress.StoryCleared sparas; flaggan -ending. tools/levelcheck ritar
banorna och rapporterar problem. HUD-nivån kortas när mätarna tar plats;
poängraden radbryts. Skärmdumpar och docs uppdaterade.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
internal/nav med resources/data/network.json (76 stationer, 11 linjer,
Yamanote som ringlinje). Tåg bedöms från lineId + terminus mot banans
station/to: rätt, fel håll, för långt bort (fler än 12 stationer) eller
ingen trafik; correct räknas ut för nätkopplade banor, 1-4 rätta tåg.
Tågresan visar linjens riktiga stationer. Nya förlustorsaker "Fel håll"
och "För långt bort". Listläge (nästa tåg nere till vänster) och
skyltläge (+50 % poäng) växlas med N på bankartan och sparas; -mode.
Terminalen: biljettautomaten visar linjetavlan på nätbanor. Perronger
P p Q q R r. Bana 006 Ikebukuro med fyra perronger. Banorna 001-005
kopplade till nätet. Skript: waitover och pick calm; poängraden
radbryts; skärmdumpar uppdaterade.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Folk på stationen (NPC:er som vandrar, kliver av tåg och går mot
utgången, blockerar spelaren men inte varandra), vänster-/högerfiler
som bromsar på fel sida, bredare gångar, reklamaffischer (clutter),
japanskt sorl i loop (noise), vagnval med kvinnovagn (stort avdrag med
man i sällskapet, tidsstyrd), kömarkeringar på perrongen, trängsel per
vagn (bonus för tom vagn, svettig-debuff och svårare resa i full vagn,
släpp förbi passagerare) och att folk kliver av innan man får gå på.
Ny bana 005 Ueno. Skärmdumpsverktyget kan filtrera på bana/skript.
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>
- level.Schedule.Phase: away/approaching/arriving/dwelling/closing/leaving
ur tidtabellen med progress; Boardable (öppna dörrar) och Present;
validering av minsta uppehåll/borta-tid; TrackTile för rälsen
- sim.Run: ombordstigning bara med öppna dörrar, TrainVisible via Present,
PlatformPhase och NearTrack (närmaste perrong inom två rutor)
- game/trains.go: rälsrutor längs kantraden (roterade för vertikala spår),
tre vagnar som bromsar in och accelererar ut längs rälsen, strålkastare
under inrullningen, blinkande lampor vid kanten för den som står nära,
dammpartiklar längs perrongen; kameran får en rutas marginal så att
kanträlsen syns
- game/audio.go: ebiten/v2/audio med avgångsmelodi (approaching) och
dörrsignal (closing), volym efter avstånd, -mute; tools/gensound
syntetiserar placeholder-WAV:ar
- HUD: fasberoende perrongtext och "tåg på väg in" nära rälsen;
skriptkommandot waitphase; skärmdump av ankomsten
- plan (Björn 2026-10-24): räls/väg-grafik och melodierna i M7b; folk/NPC:er,
vänster-/högertrafik, bredare gångar, reklam- och ljudröra som nytt steg
M9b – i spelbeskrivning, roadmap, testplan
- 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>
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>
- 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>
- internal/sim: rutbaserad Mover (4 riktningar, riktningsbyte vid rutgräns,
bildrute-exakt ankomst) och Camera (följer, klampar, centrerar små kartor),
med tester
- internal/game: scener meny -> bana -> resultat, tangentbord + gamepad,
tileset och spelaranimation, HUD, skriptläge (-script) för deterministiska
skärmdumpar och tester
- tools/genart genererar placeholder-grafik (tiles.png, player.png);
tools/shots tar doc/img/*.png som README och wiki visar
- bana 002-shinjuku (33x21) för kamerascroll; level.List/LoadFile/TrainAt
- .gitea/workflows/release.yaml: vet + test + linux/windows-zippar till
rullande latest på brasse-linux01-runnern (linux-amd64)
- docs: roadmap M1 klar, tester, plan, README med bilder och styrning
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Mapp, Go-modul, binär, VS Code-sökvägar, dokumentation och visningsnamn
följer nu repots namn på Gitea. Arbetsnamnet jp-subway-pussel finns kvar
som historik i spelbeskrivningen §15.
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>