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:
2026-10-23 18:52:10 +02:00
commit c1f9546af6
32 changed files with 2165 additions and 0 deletions

81
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,81 @@
{
// Byggtasks. Allt går via `go run ./tools/build` så att samma kommandon
// fungerar på Linux och Windows utan make/bash.
// Ctrl+Shift+B = "build" (debug). Terminal > Run Task… för övriga.
"version": "2.0.0",
"tasks": [
{
"label": "build",
"detail": "Debug-bygge → build/debug/ (standard, Ctrl+Shift+B)",
"type": "process",
"command": "go",
"args": ["run", "./tools/build", "-mode", "debug"],
"group": { "kind": "build", "isDefault": true },
"problemMatcher": ["$go"],
"presentation": { "reveal": "silent", "clear": true }
},
{
"label": "build: release (linux-amd64)",
"detail": "Release-bygge → build/release/linux-amd64/",
"type": "process",
"command": "go",
"args": ["run", "./tools/build", "-mode", "release", "-os", "linux", "-arch", "amd64"],
"group": "build",
"problemMatcher": ["$go"],
"presentation": { "clear": true }
},
{
"label": "build: release (windows-amd64)",
"detail": "Release-bygge (korsbygge, ren Go) → build/release/windows-amd64/",
"type": "process",
"command": "go",
"args": ["run", "./tools/build", "-mode", "release", "-os", "windows", "-arch", "amd64"],
"group": "build",
"problemMatcher": ["$go"],
"presentation": { "clear": true }
},
{
"label": "build: release (alla plattformar)",
"detail": "Linux + Windows release-byggen",
"dependsOn": ["build: release (linux-amd64)", "build: release (windows-amd64)"],
"dependsOrder": "sequence",
"group": "build",
"problemMatcher": []
},
{
"label": "run: debug",
"detail": "Bygg debug och starta spelet (utan debugger)",
"type": "process",
"command": "go",
"args": ["run", "./tools/build", "-mode", "debug", "-run"],
"problemMatcher": ["$go"],
"presentation": { "clear": true }
},
{
"label": "test",
"detail": "go test ./...",
"type": "process",
"command": "go",
"args": ["test", "./..."],
"group": { "kind": "test", "isDefault": true },
"problemMatcher": ["$go"],
"presentation": { "clear": true }
},
{
"label": "test: verbose med race-detektor",
"type": "process",
"command": "go",
"args": ["test", "-race", "-v", "./..."],
"group": "test",
"problemMatcher": ["$go"],
"presentation": { "clear": true }
},
{
"label": "vet",
"type": "process",
"command": "go",
"args": ["vet", "./..."],
"problemMatcher": ["$go"]
}
]
}