M1: rörelse, kollision, kamera, scener, tileset, skärmdumpar, CI
Some checks failed
release / build-release (push) Failing after 27s
Some checks failed
release / build-release (push) Failing after 27s
- 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>
This commit is contained in:
@@ -58,16 +58,20 @@ metro-puzzle-jp/
|
||||
│ ├── res/ hittar och läser resources/ (ren Go)
|
||||
│ ├── rng/ seedad slump (ren Go)
|
||||
│ ├── level/ banformat, validering, BFS (ren Go)
|
||||
│ ├── game/ Ebitengine-loop, scener, rendering ← får använda Ebitengine
|
||||
│ ├── sim/ rutbaserad rörelse, kollision, kamera (ren Go)
|
||||
│ ├── game/ Ebitengine-loop, scener, input, rendering, skriptläge ← får använda Ebitengine
|
||||
│ ├── archtest/ beroenderegler
|
||||
│ └── … kommande: sim/, lang/, nav/, score/, save/, minigame/, ui/, audio/
|
||||
│ └── … kommande: lang/, nav/, score/, save/, minigame/, ui/, audio/
|
||||
├── tools/build/ byggverktyget
|
||||
├── tools/genart/ genererar placeholder-grafik (tiles.png, player.png)
|
||||
├── tools/shots/ tar dokumentationens skärmdumpar till doc/img/
|
||||
├── resources/ kopieras bredvid binären vid bygge
|
||||
│ ├── sprites/ bilder, tilesets, UI
|
||||
│ ├── sound/ OGG/WAV
|
||||
│ ├── text/ sv.json, en.json, jp-dictionary.json, fonts/
|
||||
│ └── data/ levels/, items, skills (JSON)
|
||||
├── doc/ denna dokumentation
|
||||
├── doc/ denna dokumentation (doc/img/ = skärmdumpar från tools/shots)
|
||||
├── .gitea/workflows/ CI: test + release-zippar för linux/windows på brasse-linux01-runnern
|
||||
├── .vscode/ tasks.json, launch.json
|
||||
└── build/ (gitignorerad) debug/ och release/<os>-<arch>/
|
||||
```
|
||||
@@ -85,6 +89,27 @@ metro-puzzle-jp/
|
||||
Versionen i binären kommer från `git describe --tags --always --dirty`,
|
||||
så en tagg `v0.1.0` ger `metro-puzzle-jp v0.1.0` i `-version`.
|
||||
|
||||
### Skärmdumpar till dokumentationen
|
||||
|
||||
README och wikin visar bilder från `doc/img/`. De tas av spelet självt i
|
||||
skriptläge så att de alltid är pixelexakta och går att återskapa:
|
||||
|
||||
```bash
|
||||
go run ./tools/genart # bara om placeholder-grafiken ska genereras om
|
||||
go run ./tools/shots # bygger debug, kör spelet med -script, skriver doc/img/*.png
|
||||
```
|
||||
|
||||
**Regel:** när sprites, tileset eller UI ändras – kör `tools/shots` och
|
||||
committa `doc/img/` i samma commit, så visar README och wiki alltid aktuell
|
||||
grafik. Nya vyer läggs till i listan i `tools/shots/main.go`.
|
||||
|
||||
### CI
|
||||
|
||||
`.gitea/workflows/release.yaml` kör `go vet` + `go test`, bygger
|
||||
`linux-amd64` och `windows-amd64` och lägger zipparna på den rullande
|
||||
releasen `latest` (en tagg `vX.Y.Z` ger en versionerad release). Jobbet körs
|
||||
på **brasse-linux01-runnern** (label `linux-amd64`), aldrig på Pi5:n.
|
||||
|
||||
## Milstolpar
|
||||
|
||||
### M0 – Skelett och byggkedja ✓ (klar 2026-10-23)
|
||||
@@ -97,17 +122,23 @@ så en tagg `v0.1.0` ger `metro-puzzle-jp v0.1.0` i `-version`.
|
||||
- Verifierat: debug-bygge, Linux-release, Windows-korsbygge, smoke-test
|
||||
med fönster, alla tester gröna.
|
||||
|
||||
### M1 – Rörelse, kollision och kamera
|
||||
### M1 – Rörelse, kollision och kamera ✓ (klar 2026-10-23)
|
||||
|
||||
- **Mål:** gå runt i en labyrint som är större än skärmen.
|
||||
- Spelare som rör sig i 4 riktningar (tangentbord + gamepad), kollision mot
|
||||
väggar, kamera som följer och klampas till kartan.
|
||||
- Scen-system (meny → bana → resultat) som en enkel tillståndsmaskin.
|
||||
- Tileset i stället för färgade rutor; sprite-animation (gå/stå).
|
||||
- **Teknik:** `internal/game/scene`, `internal/sim` (rörelse/kollision som
|
||||
ren logik), Ebitengine `inpututil`.
|
||||
- **Klar när:** man kan gå från S till P i bana 001, kameran följer, testerna
|
||||
i mål-dokumentet för M1 är gröna.
|
||||
- Rutbaserad rörelse i 4 riktningar (pilar/WASD + gamepad d-pad/spak), mjukt
|
||||
interpolerad, riktningsbyte vid rutgränser; kollision mot väggar; kamera
|
||||
som följer spelaren och klampas till kartan (centrerar små kartor).
|
||||
- Scen-system: meny (banlista) → bana → resultat (rätt/fel tåg, R = spela om).
|
||||
- Tileset (`tiles.png`) och spelarsprite med gå-animation i fyra riktningar
|
||||
(`player.png`), genererade av `tools/genart` tills riktig pixel art finns.
|
||||
- Större testbana `002-shinjuku` (33×21 rutor) som bevisar kamerascrollen.
|
||||
- Skriptläge (`-script`) och `tools/shots` som tar dokumentationens
|
||||
skärmdumpar deterministiskt.
|
||||
- **Teknik:** `internal/sim` (Mover, Camera – ren Go med tester),
|
||||
`internal/game` (scener, input, assets), Ebitengine `inpututil`/`vector`.
|
||||
- **Avsteg:** resultatskärmen visar redan rätt/fel tåg eftersom perrongen är
|
||||
det naturliga slutet på en bana; tidtabell, spärrar och väntan på tåg
|
||||
kommer i M2 som planerat.
|
||||
|
||||
### M2 – Stationen: tåg, spärrar och vinst/förlust → första spelbara banan
|
||||
|
||||
|
||||
Reference in New Issue
Block a user