Update tileset and settings, enhance logging
- Updated tileset configuration in 'tileset.tsj' to include new tiles and adjust dimensions. - Added 'settings.json' for key bindings related to climbing and movement actions. - Enhanced game logging in 'game.log' to track game start events and map loading. - Updated the game binary to the latest version.
This commit is contained in:
11
plan.md
11
plan.md
@@ -11,14 +11,11 @@ Spelets arkitektur bygger på att helt separera 3D-spellogiken från 2D-renderin
|
||||
|
||||
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 (Double Viewport):** Spelet renderas genom två synkroniserade vyportar bredvid varandra, båda med en svart inramning:
|
||||
- **Vänster vy (Sido-vy):** Visar X- och Y-axeln (bredd och höjd). När spelaren går "inåt" längs Z-axeln ritas lagren upp till 3 block inåt i djupet. För varje block inåt blir objektet gradvis mer utgråat (skuggat) och transparent, vilket skapar en tydlig känsla av djup (parallax-liknande 3D-effekt).
|
||||
- **Höger vy (Ovanifrån):** Visar X- och Z-axeln (bredd och djup). Visar bara spelarens närområde i Y-led med en specifik ljushets- och transparensstege:
|
||||
- **-1 block** (Nivån spelaren står på) samt **0 block** (Samma höjd): Båda är lite ljusare (tint 1.2).
|
||||
- **+1 block upp**: Ljusare och lite transparent (alpha 0.5, tint 1.4).
|
||||
- **+2 block upp**: Ännu ljusare och nästan helt transparent (alpha 0.2, tint 1.6).
|
||||
- **Vänster vy (Sido-vy):** Ritar upp z-lagren från -3 (inåt/dold) till +3 (utåt/framför) relativt till spelaren. Lager inåt och utåt styrs enbart av transparens (en sjunkande alpha) så objekten förblir klara men genomskinliga utan ett färgfilter. Objekt framför spelaren ritas korrekt upp OVANPÅ spelaren i vyporten.
|
||||
- **Höger vy (Ovanifrån):** Visar X- och Z-axeln. Ritar upp höjd-lagren (Y) från -3 (ovanför spelaren) till +3 (under mark). Desto djupare nivåer i marken eller ju ytligare/ovanför spelaren ett lager befinner sig, desto mer sänks dess transparens (alpha) utan något färgfilter.
|
||||
3. **Kartstruktur:** Världen sparas i grunden som en tre-dimensionell array (`[][][]Entity`), exempelvis motsvarande en 10x10x10 map. Varje block motsvarar 32x32 pixlar i world-space som sedan representeras av specifika sprites ur `assets/images/1 Tiles`. Kartans botten består av solida jordblock som förhindrar spelaren från att falla igenom.
|
||||
4. **Gemensamt Spelobjekt (Entity):** All logik byggs på ett generiskt `Entity`-interface som besvarar frågor som `IsBlocking()`, `IsMovable()`, `Move()`, `Damage()`, `Pickup()` och `GetHealth()`. Detta gör att karaktärer, pussel och fiender smidigt kan kalla varandras triggers och dela samma kollisionsmekanismer i 3D-kuben.
|
||||
5. **Animation och Input:** Kontroller och inputs (Gå, Hoppa m.m) knyts till konfigurerbara actions. Karaktärerna använder sprite-sheets där varje "frame" är 96x96 pixlar som bläddras igenom i en specifik timer för att spela upp livliga animationer. Att byta håll innebär att man byter animation state och hastighetsvektor. För att springa håller spelaren nere `Ctrl`-knappen. För att klättra i klättringsbara objekt måste spelaren stå inuti objektet och hålla nere `Shift`-knappen; då används `A`, `S`, `D`, `W` för att klättra vänster, ner, höger och upp, och pil upp / pil ner för att klättra inåt eller utåt (Z-axeln).
|
||||
4. **Gemensamt Spelobjekt (Entity):** All logik byggs på ett generiskt `Entity`-interface som besvarar frågor som `IsBlocking()`, `IsMovable()`, `Move()`, `Damage()`, `Pickup()` och `GetHealth()`. Detta gör att karaktärer, pussel och fiender smidigt kan kalla varandras triggers och dela samma kollisionsmekanismer i 3D-kuben. Speciell kollisions-logik sköts vid klättring inuti ett solitt/klätringsbart block. Fallande aktiveras automatiskt om spelaren släpper knappen.
|
||||
5. **Animation och Input:** Kontroller styrs av dynamiskt JSON-Sparad "Input Manager". Karaktärerna använder sprite-sheets där varje "frame" är 96x96 pixlar som bläddras igenom i en specifik timer. Vid in-game tryckande av ESC visas Inställnings-menyn för de anpassningsbara action-bindings (som sparas ner i `assets/settings.json`). Särskilda keybindings finns för de upp till 6 dimensionella klättringsledernas separata kommandon.
|
||||
|
||||
## Map Pipeline
|
||||
* **Tiled JSON (`assets/maps/*.tmj`)**: Kartdata.
|
||||
|
||||
Reference in New Issue
Block a user