M1: rörelse, kollision, kamera, scener, tileset, skärmdumpar, CI
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:
2026-10-23 19:16:53 +02:00
parent ae50d444a4
commit 4ae7dba291
34 changed files with 1730 additions and 124 deletions

View File

@@ -10,8 +10,22 @@ Storyn följer några polare på semester i Japan, från landningen på
flygplatsen till avresan. Efter storyn låses ett oändligt läge och New Game+
upp. Hela speldesignen finns i [doc/spelbeskrivning.md](doc/spelbeskrivning.md).
**Status:** M0 – skelett och byggkedja klara (2026-10-23). Se
[doc/roadmap.md](doc/roadmap.md) för vad som byggs härnäst.
**Status:** M1 klar (2026-10-23) – man kan gå runt i labyrinterna med kamera
som följer, välja bana i menyn och nå perrongen. Nästa är M2: tåg med
tidtabell, spärrar och första riktigt spelbara banan. Se
[doc/roadmap.md](doc/roadmap.md).
![Bana 001 – Flygplatsen](doc/img/level-001.png)
Så fungerar det: du startar på den gröna dörrmattan, letar dig genom
stationen förbi skyltar, automater och spärrar, och ställer dig på en
perrong (gul ledlinje). Rätt perrong tar dig till resmålet, fel perrong ger
fel tåg.
![Resultat – rätt tåg](doc/img/result.png)
Fler bilder och en genomgång finns i
[wikin](https://gitea.brasse-pc.eu/brasse/metro-puzzle-jp/wiki).
## Bygga
@@ -80,12 +94,27 @@ arbetskatalogen (så `go run` och F5 fungerar), och `JP_RESOURCES=/sökväg`
### Flaggor
```
metro-puzzle-jp -level 001-flygplatsen # starta en viss bana
metro-puzzle-jp # meny
metro-puzzle-jp -level 001-flygplatsen # hoppa direkt in i en bana
metro-puzzle-jp -scale 3 # fönsterstorlek (320x180 × skala)
metro-puzzle-jp -smoke 90 # öppna fönster, avsluta efter 90 bildrutor (smoke-test)
metro-puzzle-jp -script "move right 4; shot bild.png; quit" # skriptläge, se internal/game/script.go
metro-puzzle-jp -version
```
### Styrning
Pilar eller WASD går, Enter väljer, Esc går tillbaka, R spelar om. Gamepad
med standardlayout fungerar: d-pad/vänster spak, A = välj, B = tillbaka.
### Verktyg
| Kommando | Gör |
|----------|-----|
| `go run ./tools/build …` | bygger (se ovan) |
| `go run ./tools/genart` | genererar placeholder-grafiken `resources/sprites/tiles.png` och `player.png` |
| `go run ./tools/shots` | tar dokumentationens skärmdumpar till `doc/img/` – **kör efter varje grafik-/UI-ändring och committa bilderna** |
## Beroenden
| | Linux | Windows |
@@ -108,12 +137,22 @@ vid körning, så den fungerar på alla vanliga distributioner.
## Struktur i korthet
```
cmd/metro-puzzle-jp/ programstart
internal/game/ Ebitengine-loop och rendering (enda paketet som får känna till Ebitengine)
cmd/metro-puzzle-jp/ programstart
internal/game/ Ebitengine: scener, input, rendering, skriptläge (enda paketet som får känna till Ebitengine)
internal/sim/ rutbaserad rörelse, kollision, kamera (ren Go)
internal/level/ banformat, validering, framkomlighet
internal/res/ hittar och läser resources/
internal/rng/ seedad slump
tools/build/ byggverktyget
tools/ build/ genart/ shots/
resources/ sprites/ sound/ text/ data/ – kopieras bredvid binären
doc/ dokumentation
doc/ dokumentation, doc/img/ = skärmdumpar
.gitea/workflows/ CI: test + release-zippar (linux/windows)
```
## Release
Varje push till master bygger zippar för Linux och Windows på Gitea och
lägger dem på releasen
[latest](https://gitea.brasse-pc.eu/brasse/metro-puzzle-jp/releases/tag/latest).
En tagg `vX.Y.Z` ger en versionerad release. Packa upp och kör binären;
`resources/` måste ligga bredvid.