This commit is contained in:
2025-12-07 21:31:44 +01:00
parent 4a0ca267ea
commit 974141c08c
52 changed files with 2485 additions and 397 deletions

View File

@@ -6,69 +6,34 @@ Datoteka namenjena tehničnim izboljšavam kode, refaktoringu in performančnim
Stvari, ki so bile uspešno implementirane in izboljšale delovanje.
- [x] **Distance Culling (Teren & Dekoracije)**
- Sistem skriva ploščice (tiles) in drevesa, ki so daleč od igralca, da varčuje s CPU/GPU.
- Sistem skriva ploščice (tiles) in drevesa, ki so daleč od igralca.
- [x] **Pooling Sistem**
- `TerrainSystem` uporablja bazen spritov (`decPool`, `tilePool`) za ponovno uporabo objektov namesto nenehnega uničevanja in ustvarjanja.
- `TerrainSystem` uporablja `decorationPool` in `cropPool` za ponovno uporabo spritov.
- [x] **Phaser Tilemap (Terrain Layer)**
- Tla se rišejo preko optimiziranega `TilemapLayer`-ja namesto 10.000 posameznih spritov.
- [x] **NPC Logic Throttling & Culling**
- NPC-ji daleč od igralca se ne posodabljajo in so skriti.
- AI se ne izvaja vsak frame (uporaba timerjev za premik).
- [x] **Code Refactoring & Bug Fixes**
- [x] `InteractionSystem.js`: Centralizirana logika za klike in tipkovnico (E tipka). Odstranjeni odvečni listenerji.
- [x] `Player.js`: Urejena logika gibanja in napada (Spacebar).
- [x] `NPC.js`: Dodan Health Bar, Taming logika in Loot Drop.
- [x] `TextureGenerator`: Urejen draw items (Bone, Axe, Pickaxe).
- NPC-ji daleč od igralca zamrznejo svojo logiko.
- [x] **Spatial Hashing (SpatialGrid)**
- Implementiran `SpatialGrid.js` za hitrejše iskanje entitet v bližini.
- [x] **Code Refactoring**
- `LootSystem.js`: Centraliziran loot.
- `InteractionSystem.js`: Poenostavljena logika.
- `TextureGenerator.js`: Volumetric sprite generation.
## 🟡 2. Odprte Tehnične Naloge (To-Do)
Stvari, ki bi jih bilo dobro urediti za boljšo stabilnost.
## 🟡 2. Odprte / Potencialne Tehnične Naloge (To-Do)
Stvari, ki še niso kritične, a bi lahko izboljšale igro.
- [x] **Global Error Handling**
- Dodan `ErrorHandler.js` (Red Screen of Death). Ujame napake, ki se zgodijo med igranjem, in prikaže uporabniku prijazen crash screen z možnostjo reload-a.
- [x] **Centraliziran Loot Manager**
- Implementiran `LootSystem.js`. Skrbi za `spawnLoot`, animacijo dropov, pobiranje (razdalja do igralca) in čiščenje InteractionSystem-a.
- [x] **Z-Sorting (Depth) Optimizacija**
- Implementiran "dirty check" v `Player.js` in `NPC.js`. Depth se posodobi samo, če se Y koordinata spremeni za več kot 0.1px, namesto vsak frame.
- [ ] **Web Workers za AI Pathfinding**
- Če bo število zombijev naraslo nad 100, premakni iskanje poti (A*) na ločen thread (Web Worker), da ne blokira glavne zanke.
- [x] **Save Data Compression**
- JSON save file se stisne z LZW algoritmom (`Compression.js`) in tako zaseda 80-90% manj prostora v `localStorage`. To omogoča shranjevanje večjih map.
- [ ] **Asset Loading Screen**
- Dodati pravi loading bar, če se poveča število tekstur (trenutno proceduralno generiranje traja nekaj milisekund).
## 🔴 3. Performančne Nadgradnje (High-End)
Če bo igra postala počasna pri velikem svetu (256x256).
# 🛠️ Plan Optimizacij in Čiščenja - NovaFarma
Datoteka namenjena tehničnim izboljšavam kode, refaktoringu in performančnim popravkom.
## 🟢 1. Opravljene Optimizacije (Completed)
Stvari, ki so bile uspešno implementirane in izboljšale delovanje.
- [x] **Distance Culling (Teren & Dekoracije)**
- Sistem skriva ploščice (tiles) in drevesa, ki so daleč od igralca, da varčuje s CPU/GPU.
- [x] **Pooling Sistem**
- `TerrainSystem` uporablja bazen spritov (`decPool`, `tilePool`) za ponovno uporabo objektov namesto nenehnega uničevanja in ustvarjanja.
- [x] **NPC Logic Throttling & Culling**
- NPC-ji daleč od igralca se ne posodabljajo in so skriti.
- AI se ne izvaja vsak frame (uporaba timerjev za premik).
- [x] **Code Refactoring & Bug Fixes**
- [x] `InteractionSystem.js`: Centralizirana logika za klike in tipkovnico (E tipka). Odstranjeni odvečni listenerji.
- [x] `Player.js`: Urejena logika gibanja in napada (Spacebar).
- [x] `NPC.js`: Dodan Health Bar, Taming logika in Loot Drop.
- [x] `TextureGenerator`: Urejen draw items (Bone, Axe, Pickaxe).
## 🟡 2. Odprte Tehnične Naloge (To-Do)
Stvari, ki bi jih bilo dobro urediti za boljšo stabilnost.
- [x] **Global Error Handling**
- Dodan `ErrorHandler.js` (Red Screen of Death). Ujame napake, ki se zgodijo med igranjem, in prikaže uporabniku prijazen crash screen z možnostjo reload-a.
- [x] **Centraliziran Loot Manager**
- Implementiran `LootSystem.js`. Skrbi za `spawnLoot`, animacijo dropov, pobiranje (razdalja do igralca) in čiščenje InteractionSystem-a.
- [x] **Z-Sorting (Depth) Optimizacija**
- Implementiran "dirty check" v `Player.js` in `NPC.js`. Depth se posodobi samo, če se Y koordinata spremeni za več kot 0.1px, namesto vsak frame.
## 🔴 3. Performančne Nadgradnje (High-End)
Če bo igra postala počasna pri velikem svetu (256x256).
- [x] Phaser Blitter / Tilemap (Zamenjava 1000 spritov za teren z enim objektom)
- [x] **Spatial Hashing za Kolizijo**
- Implementiran `SpatialGrid.js`. Igralna scena zdaj uporablja mrežo za hitro iskanje NPC-jev v bližini (`InteractionSystem`, `NPC AI`), namesto da bi iterirala čez celo tabelo.
- [x] Phaser Blitter / Tilemap (Zamenjava 1000 spritov za teren z enim objektom)
- [ ] Web Workers za AI (Težje, ker JS nima shared memory, samo message passing)ding (iskanje poti) na ločen thread (Worker), da ne blokira glavne igre.
## 🔴 3. Znane Omejitve
- **WebGL Context Loss:** Pri preklapljanju med tabi brskalnika se lahko zgodi izguba konteksta (Phaser to običajno obravnava, a je dobro vedeti).
- **Mobile Performance:** Igra še ni optimizirana za touch/mobile kontrole.
---
*Status: Koda je trenutno stabilna in očiščena (7.12.2025).*
*Zadnja posodobitev: 7.12.2025*
ddddddd