Uppdaterat plan, README och lagt till VS Code bygg-tasks

This commit is contained in:
2026-04-25 22:45:09 +02:00
parent a5ab983206
commit 680a6f5f9e
3 changed files with 94 additions and 3 deletions

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

@@ -0,0 +1,58 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Build Windows",
"type": "shell",
"command": "go",
"args": [
"build",
"-o",
"release/windows/regin_mountain_game.exe",
"."
],
"options": {
"env": {
"GOOS": "windows",
"GOARCH": "amd64"
}
},
"group": "build",
"problemMatcher": [
"$go"
]
},
{
"label": "Build Linux",
"type": "shell",
"command": "go",
"args": [
"build",
"-o",
"release/linux/regin_mountain_game",
"."
],
"options": {
"env": {
"GOOS": "linux",
"GOARCH": "amd64"
}
},
"group": "build",
"problemMatcher": [
"$go"
]
},
{
"label": "Build All",
"dependsOn": [
"Build Windows",
"Build Linux"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}

View File

@@ -1,5 +1,5 @@
# Regin_mountain_of_treasures # Regin_mountain_of_treasures
Ett spel som beretar historier om dvärgen Regin och hans äventyr Ett spel som beretar historier om dvärgen Regin och hans äventyr
Baserat på mitt didigare skol projekt Maze Baserat på mitt didigare skol projekt Maze
@@ -24,4 +24,29 @@ https://sv.wikipedia.org/wiki/Regin
https://sv.wikipedia.org/wiki/Gram_(mytologi) https://sv.wikipedia.org/wiki/Gram_(mytologi)
https://sv.wikipedia.org/wiki/Reidmar https://sv.wikipedia.org/wiki/Reidmar
## Bygginstruktioner
### Systemkrav & Beroenden
Eftersom spelet använder Ebitengine behöver du ha följande installerat för att kunna kompilera.
**På Windows:**
Inget speciellt krävs utöver en modern version av Go. Ebitengine klarar sig bra för Windows-bygge även på Windows (ibland kan gcc/MinGW vara bra vid ljud-tjafs/cgo).
**På Linux:**
Du behöver installera Go samt följande C-bibliotek för X11 och ljud:
```bash
sudo apt-get install libc6-dev libgl1-mesa-dev libxcursor-dev libxi-dev libxinerama-dev libxrandr-dev libxxf86vm-dev libasound2-dev pkg-config
```
### Bygg spelet (VS Code Tasks)
Spelet stödjer publisering via fördefinierade VS Code Tasks.
Gå till `Terminal -> Run Task...` i VS Code. Följande alternativ finns:
* **Build Windows**: Kompilerar projektet för Windows (.exe) i mappen `release/windows`.
* **Build Linux**: Kompilerar projektet för Linux i mappen `release/linux`.
* **Build All**: Kompilerar för båda ovanstående plattformar.
För att bygga manuellt:
* Linux: `GOOS=linux go build -o release/linux/regin_mountain_game .`
* Windows: `GOOS=windows go build -o release/windows/regin_mountain_game.exe .`

View File

@@ -5,3 +5,11 @@ typ: spel
* **Ebitengine** (`github.com/hajimehoshi/ebiten/v2`): Kärnmotor. Hanterar 2D-rendering av sprites (top-down + side-view), fönster, tangentbord/mus/handkontroll samt plattformsoberoende ljuduppspelning. * **Ebitengine** (`github.com/hajimehoshi/ebiten/v2`): Kärnmotor. Hanterar 2D-rendering av sprites (top-down + side-view), fönster, tangentbord/mus/handkontroll samt plattformsoberoende ljuduppspelning.
* **net** (Standardbiblioteket) / **kcp-go** (`github.com/xtaci/kcp-go`): Nätverk för multiplayer. `net` erbjuder standard TCP/UDP, medan `kcp-go` ger "Reliable UDP" för snabb realtidsuppdatering utan dataförlust. * **net** (Standardbiblioteket) / **kcp-go** (`github.com/xtaci/kcp-go`): Nätverk för multiplayer. `net` erbjuder standard TCP/UDP, medan `kcp-go` ger "Reliable UDP" för snabb realtidsuppdatering utan dataförlust.
* **mathgl** (`github.com/go-gl/mathgl/mgl64`): Vektormatematik (3D-vektorer). Används för koordinatsystemet och spelets 3D-positioner, vilket är basen för egen handkodad fysik (gravitation) och projicering ner till 2D-skärmen. * **mathgl** (`github.com/go-gl/mathgl/mgl64`): Vektormatematik (3D-vektorer). Används för koordinatsystemet och spelets 3D-positioner, vilket är basen för egen handkodad fysik (gravitation) och projicering ner till 2D-skärmen.
## Kärnarkitektur
Spelets arkitektur bygger på att helt separera 3D-spellogiken från 2D-rendering.
1. **3D Verklighet:** Varje spelfigur och block har en 3D-vektor (`X`, `Y`, `Z`) samt en storlek (`Width`, `Height`, `Depth`). Fysikmotorn (som bygger på euler-integrering och AABB-kollisioner) körs helt och hållet i denna 3D-värld. Tyngdkraft drar objekt neråt längs Y eller Z axeln.
2. **2D Rendering:** Spelet håller reda på aktuellt "ViewMode" (t.ex. TopDown eller SideView). I renderingen itererar motorn över 3D-objekten och översätter deras 3D-vektorer till `(X, Y)` på skärmen baserat på vald vy. Varje objekt har hänvisningar till olika 2D-sprites (t.ex. en bild fotograferad uppifrån, en från sidan) som sedan ritas med *Ebitengine*.
3. **Spelcykel (Game Loop):** Spelet styrs av en global `Game`-struct med en `Update()` (sköter 3D-fysik, input, state-förändringar) och en `Draw()` (översätter till 2D och ritar) funktion.
4. **States:** Koden är uppdelad i "Scenes" eller "States" (Huvudmeny, Gameplay-läge) för isolerad logik.