M0: skelett, byggkedja och dokumentation för JP Subway Pussel
- 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>
This commit is contained in:
64
doc/plan.md
Normal file
64
doc/plan.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# jp-subway-pussel – plan
|
||||
|
||||
Navet för projektets dokumentation. Detaljerna ligger i de länkade filerna.
|
||||
|
||||
## Mål
|
||||
|
||||
Ett pixel art-pusselspel där ett sällskap ska hitta rätt tåg genom japanska
|
||||
stationer byggda som labyrinter, med skyltar på japanska som spelaren lär sig
|
||||
läsa. Spelet ska vara en enda binär med en resursmapp bredvid, lika lätt att
|
||||
bygga på Linux som på Windows, utan andra byggverktyg än Go.
|
||||
Hela spelidén: [spelbeskrivning.md](spelbeskrivning.md).
|
||||
|
||||
## Stack
|
||||
|
||||
Go 1.27 + Ebitengine v2.10, JSON-data, standardbibliotekets tester,
|
||||
byggverktyg i Go (`go run ./tools/build`), VS Code med `golang.go`.
|
||||
Motivering och alternativ som valts bort: [roadmap.md › Teknikval](roadmap.md#teknikval).
|
||||
|
||||
## Målplattformar
|
||||
|
||||
Linux x64 först. Windows x64 byggs från dag 1 (korsbygge utan C-verktyg)
|
||||
men speltestas på riktig Windows först i M12. Linux arm64 (Pi5) är inte ett
|
||||
mål för spelet, men Gitea-CI kan byggas på Pi5-runnern senare.
|
||||
|
||||
## Leverans
|
||||
|
||||
Mönster A enligt playbooken (nedladdningsbar binär), när projektet ska
|
||||
delas: `build/release/<os>-<arch>/` är redan formen som en release-zip ska
|
||||
ha. Repot är **lokalt** nu och synkas till Gitea senare (Björn skapar repot
|
||||
och lägger till `claude` som medlem, därefter `git remote add origin
|
||||
gitea-claude:brasse/jp-subway-pussel.git`).
|
||||
|
||||
## Milstolpar
|
||||
|
||||
M0 skelett ✓ → M1 rörelse → M2 första spelbara banan → M3 japanska/skyltar
|
||||
→ 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).
|
||||
Vad som ska vara testat per milstolpe: [mal-och-tester.md](mal-och-tester.md).
|
||||
|
||||
## Idéer till expansioner (ej beslutade)
|
||||
|
||||
- **Baneditor i spelet** eller ett `tools/levelcheck` som ritar banor som
|
||||
PNG och rapporterar onåbara rutor – blir troligen nödvändigt i M10.
|
||||
- **Daglig utmaning:** oändligt läge med dagens datum som seed och en lokal
|
||||
topplista.
|
||||
- **Lärande-läge:** en ordlista i menyn över tecken man mött, med
|
||||
repetition – går hand i hand med skyltsystemet.
|
||||
- **Lokalt samarbete:** en andra spelare styr en av polarna (delad skärm på
|
||||
samma tangentbord/gamepad).
|
||||
- **Steam Deck:** Linux-binären bör fungera som den är; gamepad-stöd från M1
|
||||
gör det gratis.
|
||||
- **Modbara banor:** eftersom banor är JSON i `resources/data/levels` kan
|
||||
spelare lägga till egna – kräver bara att banväljaren läser mappen.
|
||||
|
||||
## Öppna frågor
|
||||
|
||||
- Repo-namn: behålla `pussel` (svenska) eller byta till `puzzle`?
|
||||
- "Game box-liknande" banval: tolkat som spelbräde/världskarta – stämmer det?
|
||||
- Font: PixelMplus (fler kanji, 10/12 px) eller Misaki (8 px, tajtare)?
|
||||
Avgörs i M3 när skyltar renderas på riktigt.
|
||||
- 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.)
|
||||
Reference in New Issue
Block a user