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:
119
README.md
Normal file
119
README.md
Normal file
@@ -0,0 +1,119 @@
|
||||
# JP Subway Pussel
|
||||
|
||||
Pixel art-pusselspel: leda ett sällskap – *lämmeltåget* – genom japanska
|
||||
tågstationer byggda som labyrinter, hitta rätt tåg och komma fram till rätt
|
||||
resmål. Nästan alla skyltar är på japanska; ju mer du lär dig, desto mer kan
|
||||
du läsa. Sällskapet behöver mat, dryck och toapauser, tågkortet måste ha
|
||||
saldo, telefonen batteri, och på svåra banor tickar klockan.
|
||||
|
||||
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.
|
||||
|
||||
## Bygga
|
||||
|
||||
Enda kravet är **Go ≥ 1.27**. Linux behöver dessutom en C-kompilator och
|
||||
X11/GL-headers för fönsterhanteringen (Ebitengine/GLFW). Windows-bygget är
|
||||
ren Go och kan korsbyggas från Linux.
|
||||
|
||||
### Linux
|
||||
|
||||
```bash
|
||||
# Arch / Garuda
|
||||
sudo pacman -S --needed go gcc pkgconf mesa libx11 libxrandr libxcursor libxinerama libxi libxxf86vm alsa-lib
|
||||
|
||||
# Debian / Ubuntu
|
||||
sudo apt install golang gcc libc6-dev pkg-config libgl1-mesa-dev libx11-dev libxrandr-dev libxcursor-dev libxinerama-dev libxi-dev libxxf86vm-dev libasound2-dev
|
||||
```
|
||||
|
||||
```bash
|
||||
git clone <remote>/jp-subway-pussel.git && cd jp-subway-pussel
|
||||
go run ./tools/build # debug → build/debug/
|
||||
go run ./tools/build -mode release -os linux # release → build/release/linux-amd64/
|
||||
go run ./tools/build -mode release -os windows # korsbygge → build/release/windows-amd64/
|
||||
./build/debug/jp-subway-pussel # kör
|
||||
go test ./... # tester
|
||||
```
|
||||
|
||||
### Windows (bygga på Windows)
|
||||
|
||||
Installera Go från <https://go.dev/dl/>. Ingen C-kompilator behövs.
|
||||
|
||||
```powershell
|
||||
go run ./tools/build -mode release # → build\release\windows-amd64\jp-subway-pussel.exe
|
||||
```
|
||||
|
||||
### VS Code
|
||||
|
||||
Öppna mappen med tillägget **Go** (`golang.go`, föreslås automatiskt).
|
||||
|
||||
| Vad | Hur |
|
||||
|-----|-----|
|
||||
| Bygga debug | `Ctrl+Shift+B` (tasken `build`) |
|
||||
| Debugga | `F5` – "Debug (dlv)". Tillägget erbjuder att installera delve första gången. |
|
||||
| Bygga release | Terminal › Run Task › `build: release (linux-amd64)` / `(windows-amd64)` / `(alla plattformar)` |
|
||||
| Köra tester | Terminal › Run Task › `test`, eller testknapparna i editorn |
|
||||
|
||||
### Resultatet av ett bygge
|
||||
|
||||
```
|
||||
build/
|
||||
├── debug/ debug-bygge för den här datorn
|
||||
│ ├── jp-subway-pussel
|
||||
│ └── resources/
|
||||
└── release/
|
||||
├── linux-amd64/
|
||||
│ ├── jp-subway-pussel en strippad binär
|
||||
│ └── resources/ sprites/ sound/ text/ data/
|
||||
└── windows-amd64/
|
||||
├── jp-subway-pussel.exe
|
||||
└── resources/
|
||||
```
|
||||
|
||||
Spelet letar efter `resources/` bredvid binären, annars uppåt från
|
||||
arbetskatalogen (så `go run` och F5 fungerar), och `JP_RESOURCES=/sökväg`
|
||||
överstyr allt. Att distribuera spelet = zippa en plattformsmapp.
|
||||
|
||||
### Flaggor
|
||||
|
||||
```
|
||||
jp-subway-pussel -level 001-flygplatsen # starta en viss bana
|
||||
jp-subway-pussel -scale 3 # fönsterstorlek (320x180 × skala)
|
||||
jp-subway-pussel -smoke 90 # öppna fönster, avsluta efter 90 bildrutor (smoke-test)
|
||||
jp-subway-pussel -version
|
||||
```
|
||||
|
||||
## Beroenden
|
||||
|
||||
| | Linux | Windows |
|
||||
|---|---|---|
|
||||
| **Bygga** | Go ≥ 1.27, gcc, pkgconf, mesa (GL-headers), libx11/libxrandr/libxcursor/libxinerama/libxi/libxxf86vm, alsa-lib | Go ≥ 1.27 |
|
||||
| **Köra** | libc, samt ett skrivbord med OpenGL (mesa) och X11 eller Wayland (XWayland), ALSA/PipeWire för ljud – laddas dynamiskt vid start | Windows 10+ med DirectX 11 eller OpenGL |
|
||||
| **Go-moduler** | `github.com/hajimehoshi/ebiten/v2` (spelbibliotek) + dess indirekta beroenden (`purego`, `gomobile`, `x/sys`, `x/sync`, `x/image`) | samma |
|
||||
|
||||
Release-binären för Linux är dynamiskt länkad bara mot libc; GL/X11 laddas
|
||||
vid körning, så den fungerar på alla vanliga distributioner.
|
||||
|
||||
## Dokumentation
|
||||
|
||||
- [doc/plan.md](doc/plan.md) – navet: mål, stack, milstolpar, öppna frågor
|
||||
- [doc/spelbeskrivning.md](doc/spelbeskrivning.md) – hela speldesignen
|
||||
- [doc/roadmap.md](doc/roadmap.md) – teknikval, katalogstruktur, milstolpar i ordning
|
||||
- [doc/mal-och-tester.md](doc/mal-och-tester.md) – projektmål, teststrategi, checklistor
|
||||
- `resources/*/README.md` – vad som ska ligga i respektive resursmapp
|
||||
|
||||
## Struktur i korthet
|
||||
|
||||
```
|
||||
cmd/jp-subway-pussel/ programstart
|
||||
internal/game/ Ebitengine-loop och rendering (enda paketet som får känna till Ebitengine)
|
||||
internal/level/ banformat, validering, framkomlighet
|
||||
internal/res/ hittar och läser resources/
|
||||
internal/rng/ seedad slump
|
||||
tools/build/ byggverktyget
|
||||
resources/ sprites/ sound/ text/ data/ – kopieras bredvid binären
|
||||
doc/ dokumentation
|
||||
```
|
||||
Reference in New Issue
Block a user