Files
novafarma/optimizations.md
2025-12-07 14:28:39 +01:00

4.3 KiB

🛠️ 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.

  • Distance Culling (Teren & Dekoracije)
    • Sistem skriva ploščice (tiles) in drevesa, ki so daleč od igralca, da varčuje s CPU/GPU.
  • Pooling Sistem
    • TerrainSystem uporablja bazen spritov (decPool, tilePool) za ponovno uporabo objektov namesto nenehnega uničevanja in ustvarjanja.
  • 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).
  • Code Refactoring & Bug Fixes
    • InteractionSystem.js: Centralizirana logika za klike in tipkovnico (E tipka). Odstranjeni odvečni listenerji.
    • Player.js: Urejena logika gibanja in napada (Spacebar).
    • NPC.js: Dodan Health Bar, Taming logika in Loot Drop.
    • 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.

  • 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.
  • Centraliziran Loot Manager
    • Implementiran LootSystem.js. Skrbi za spawnLoot, animacijo dropov, pobiranje (razdalja do igralca) in čiščenje InteractionSystem-a.
  • 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).

🛠️ 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.

  • Distance Culling (Teren & Dekoracije)
    • Sistem skriva ploščice (tiles) in drevesa, ki so daleč od igralca, da varčuje s CPU/GPU.
  • Pooling Sistem
    • TerrainSystem uporablja bazen spritov (decPool, tilePool) za ponovno uporabo objektov namesto nenehnega uničevanja in ustvarjanja.
  • 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).
  • Code Refactoring & Bug Fixes
    • InteractionSystem.js: Centralizirana logika za klike in tipkovnico (E tipka). Odstranjeni odvečni listenerji.
    • Player.js: Urejena logika gibanja in napada (Spacebar).
    • NPC.js: Dodan Health Bar, Taming logika in Loot Drop.
    • 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.

  • 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.
  • Centraliziran Loot Manager
    • Implementiran LootSystem.js. Skrbi za spawnLoot, animacijo dropov, pobiranje (razdalja do igralca) in čiščenje InteractionSystem-a.
  • 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).

  • Phaser Blitter / Tilemap (Zamenjava 1000 spritov za teren z enim objektom)

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


Status: Koda je trenutno stabilna in očiščena (7.12.2025).