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

@@ -0,0 +1,69 @@
{
"destination": {
"en": "Shibuya",
"ja": "渋谷",
"romaji": "Shibuya",
"sv": "Shibuya"
},
"difficulty": 2,
"grid": [
"#################################",
"#S#..i..#.#...........#.........#",
"#.#.#.#.#.#.#######.#.#########.#",
"#.#.#.#.#.#.#.....#.#...........#",
"#.###.#.#.#.#####.#.###########.#",
"#.#...#.#.........#.#.......#...#",
"#.#.###.###########.#.#.###.#.###",
"#.....#.......#...#.#.#.........#",
"#####.#######.#.#.#.#.#########.#",
"#.....#.....#...#...#...#.....#.#",
"#.#####.###.###########.#.###.#.#",
"#.......#...#.....#...#.#...#.#.#",
"#.#######.#.#.#.###.#.#.###.#.#.#",
"#.#.......#.#.#...#.#.#.....#.#.#",
"#.#.###.###.#.###.#.#.#######.#.#",
"#...#T#.#..i#.#.#...#.....#...#.#",
"#####.#.#.#.#.#.#####.#####.###.#",
"#.....#.#.#.#..i....#.......#G..#",
"#.#.#.#.#.#########.#########.#.#",
"#p..#...#.....................#P#",
"#################################"
],
"id": "002-shinjuku",
"name": {
"en": "Shinjuku Station",
"ja": "新宿駅",
"sv": "Shinjuku station"
},
"timeLimitSec": 0,
"trains": [
{
"correct": true,
"destination": {
"en": "Shibuya",
"ja": "渋谷",
"romaji": "Shibuya"
},
"line": {
"en": "Yamanote Line",
"ja": "山手線",
"romaji": "Yamanote-sen"
},
"platform": "P"
},
{
"correct": false,
"destination": {
"en": "Tokyo",
"ja": "東京",
"romaji": "Tōkyō"
},
"line": {
"en": "Chūō Line",
"ja": "中央線",
"romaji": "Chūō-sen"
},
"platform": "p"
}
]
}

View File

@@ -4,4 +4,4 @@ Pixel art: karaktärer, tilesets, UI, ikoner. PNG med alfa.
- Rita i den interna upplösningen (320×180, rutor om 8×8 px). Ingen
uppskalning i filerna – spelet skalar med heltalsfaktor.
- `placeholder.png` är en 16×16-testfigur som används tills riktig grafik finns.
- `tiles.png` och `player.png` är placeholder-grafik som genereras av `go run ./tools/genart`. Ersätt dem med riktig pixel art i samma layout (tiles: remsa om 16×16 i ordningen vägg, golv, start, perrong, spärr, automat, skylt; player: 3 bildrutor × 4 riktningar ner/upp/vänster/höger).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 B

BIN
resources/sprites/tiles.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 599 B

View File

@@ -13,5 +13,12 @@
"meter.toilet": "Toilet",
"meter.battery": "Battery",
"level.failed": "You missed too many trains…",
"level.cleared": "Arrived!"
"level.cleared": "Arrived!",
"menu.choose_level": "Choose a level:",
"menu.hint": "Arrows/WASD: select Enter: start Esc: quit",
"hud.time": "Time",
"hud.steps": "Steps",
"hud.controls": "Esc: menu",
"level.wrong_train": "Wrong train!",
"result.hint": "R: replay Enter/Esc: menu"
}

View File

@@ -13,5 +13,12 @@
"meter.toilet": "Toa",
"meter.battery": "Batteri",
"level.failed": "Du missade för många tåg…",
"level.cleared": "Framme!"
"level.cleared": "Framme!",
"menu.choose_level": "Välj bana:",
"menu.hint": "Pilar/WASD: välj Enter: starta Esc: avsluta",
"hud.time": "Tid",
"hud.steps": "Steg",
"hud.controls": "Esc: meny",
"level.wrong_train": "Fel tåg!",
"result.hint": "R: spela om Enter/Esc: meny"
}