Uppdaterat plan, README och lagt till VS Code bygg-tasks
This commit is contained in:
58
.vscode/tasks.json
vendored
Normal file
58
.vscode/tasks.json
vendored
Normal 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
31
README.md
31
README.md
@@ -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 .`
|
||||||
8
plan.md
8
plan.md
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user