1.7 KiB
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.neterbjuder standard TCP/UDP, medankcp-goger "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.
- 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. - 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. - Spelcykel (Game Loop): Spelet styrs av en global
Game-struct med enUpdate()(sköter 3D-fysik, input, state-förändringar) och enDraw()(översätter till 2D och ritar) funktion. - States: Koden är uppdelad i "Scenes" eller "States" (Huvudmeny, Gameplay-läge) för isolerad logik.