Files
Regin_mountain_of_treasures/plan.md

1.7 KiB

språk: go typ: spel

Bibliotek och Verktyg

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