# Regin_mountain_of_treasures

## Regin: Mountain of Treasures

Ett spel som berättar historier om dvärgen Regin och hans äventyr.

Projektet bygger vidare på mitt tidigare skolprojekt Maze, men har vuxit till ett eget spel med tydligare värld, starkare tema och en mer egen presentation.

Spelet handlar om dvärgen Regin och hans kamp att få tag på sin fars skatt och Andvaranaut, den magiska ringen. Historien är baserad på berättelser från Eddan, men tilläggas ska att ändringar till historien har gjorts för att passa spelet bättre.

Regin var en dvärg och berömd smed, son till Reidmar, också känd som Hreidmar, och bror till Fafne och Utter. Regin och Fafne är ute efter att döda deras far för att komma över hans skatt och ringen Andvaranaut.

Kommer dom lyckas?

Om du känner till historien om Andvaranaut så kan du kanske lista ut hur spelet kommer att sluta.

Eller gör du?

## Spelet Just Nu

Här är några bilder som visar hur spelet ser ut just nu, med sido-vy till vänster och top-vy till höger.

### Utforskning och dubbel vy

![Översikt av spelvärlden](release/Progres_images/Skärmbild_20260426_160012.png)

### Klättring, nivåskillnader och lager

![Klättring och lager i världen](release/Progres_images/Skärmbild_20260426_160136.png)

### Större objekt och miljödetaljer

![Sten, träd och höjdskillnader](release/Progres_images/Skärmbild_20260426_160201.png)

### Inomhusyta och tätare scen

![Interiör och kompakt spelrum](release/Progres_images/Skärmbild_20260426_160235.png)

## Teknik I Korthet

Projektet använder en liten men tydlig teknikstack:

- Go som huvudspråk för spelkod, struktur och spel-loop.
- Ebitengine för rendering, fönsterhantering, input och 2D-grafik.
- MathGL för 3D-vektorer och positionshantering i spelvärlden.
- Tiled JSON-kartor för att bygga upp rum och lager i världen.
- JSON-drivna entity-definitioner för block, portaler, stegar och större miljöobjekt.
- En egen renderingsmodell med dubbel vy: sido-vy och top-vy som visar samma värld från två håll samtidigt.

## Mer Om Spelet

Arkitekturen bygger på att världen tolkas som lager i flera led, där spelaren rör sig i en 3D-liknande struktur men spelet visas i två synkade 2D-vyer. Det gör att mark, höjd, djup, klättring och större objekt kan läsas på ett tydligare sätt direkt i spelbilden.

Målet är att låta myt, utforskning och rumslig förståelse arbeta tillsammans, så att spelet både känns som ett äventyr och som en värld man måste lära sig att läsa rätt.

## Inspiration Och Info

https://sv.wikipedia.org/wiki/Regin

https://sv.wikipedia.org/wiki/Gram_(mytologi)

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 eller MinGW vara bra att ha vid ljud-tjafs eller cgo-relaterade problem.

**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 Med VS Code Tasks

Spelet stödjer publisering via fördefinierade VS Code Tasks. Gå till `Terminal -> Run Task...` i VS Code.

- **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.

### Bygg Manuellt

- Linux: `GOOS=linux go build -o release/linux/regin_mountain_game .`
- Windows: `GOOS=windows go build -o release/windows/regin_mountain_game.exe .`