diff --git a/DNEVNIK.md b/DNEVNIK.md index f19cad1..6623d91 100644 --- a/DNEVNIK.md +++ b/DNEVNIK.md @@ -1,75 +1,166 @@ -# 📔 DNEVNIK RAZVOJA: KRVAVA ŽETEV (NOVA FARMA) +# 📔 DNEVNIK RAZVOJA: KRVAVA ŽETEV (ZOMBIE ROOTS) -## 📅 Začetek Projekta -**Datum začetka:** 5. December 2025 -**Lokacija:** Nova Farma (c:\novafarma) -**Engine:** Phaser 3 + Custom Antigravity Engine -**Stil:** 2.5D Izometrični Pixel Art / Voxel +## 📖 Zgodba in Lore +**Protagonist:** Najstnik z značilnimi dredloksi, ki je preživel napad mutanta "Zmaj-Volka" (najvišji plenilec) in v procesu postal **Hibrid**. Okužen je z virusom, a imun, kar mu daje status **Alfe** med zombiji. + +**Glavni Quest:** +1. **Iskanje Sestre:** Izgubljena sestra je morda ključ do zdravila ali pa ujeta v laboratoriju. +2. **Maščevanje:** Iskanje pravice za smrt staršev. +3. **Odkrivanje Preteklosti:** Zbiranje starih zapiskov med rudarjenjem, ki razkrivajo, kako je virus ušel in ustvaril mutante (troli, vilinci). --- -## 🧟‍♂️ Koncept Igre & Zgodba +## 🎮 Jedrne Mehanike (Game Concept) -### Naslov: Krvava Žetev (Zombie Roots) +### 1. 🧟 Zombi Delavci (Avtomatizacija) +To je srce igre. Igralec sam ne more postoriti vsega. +* **Krotenje:** Igralec izkorišča svoj "Alfa" vonj, da ukroti divje zombije. +* **Leveling:** Zombiji pridobivajo XP glede na nalogo (Kmetovanje, Rudarjenje, Straža). +* **Regeneracija & Grobovi:** Zombiji so stroji, ki se obrabijo. Za počitek ne potrebujejo postelj, ampak **Grobove** (zgrajene iz kamna in zemlje). Grob upočasni razpadanje. +* **Smrt & Dediščina:** Ko zombi dokončno razpade: + * Postane **Visokokakovostno Gnojilo** za pridelke. + * Spusti XP za igralca, kar pomaga pri levelanju samega sebe. -**Zgodba:** -Svet, kakršnega smo poznali, je propadel. Nisi vojak, nisi heroj – si kmet. Tvoja naloga ni zgolj preživeti, ampak ponovno pognati korenine civilizacije. Prebudiš se na zapuščeni kmetiji sredi opustošene dežele. Čez dan je svet varljiv: sonce sije na ruševine, trava raste in narava si jemlje nazaj, kar je njeno. +### 2. 🧠 Hibridna Veščina (Hybrid Skill) +Razumevanje "okuženih". +* **Level 1:** Zombiji samo godrnjajo ("Hnggg..."). +* **Level 5:** Razumevanje ključnih besed ("Ruda... Trdno..."). +* **Level 10 (Max):** Zombiji govorijo celotne stavke in razkrivajo skrivnosti ali opozarjajo na nevarnosti ("Alfa, Zmaj-Volk prihaja!"). -A ko pade noč, pridejo oni. **Prekleti.** +### 3. 🌱 Kmetovanje in Širitev +* **Micro Farm:** Začetek na parceli 8x8 kock. +* **Širitev:** Nova zemljišča so zaklenjena/poraščena. Tja moraš poslati zombije, da "očistijo" cono, preden jo lahko uporabiš. +* **Mesojedke (Mario Plants):** Endgame obramba. Hranijo se z mesom (ali deli zombijev) in ne vodo. -Tvoj cilj je obnoviti kmetijo, pridelati hrano (ki je zdaj najvrednejša valuta) in zgraditi obrambo. Trgovali boste z redkimi preživelimi trgovci, ki si upajo potovati med naselbinami. +### 4. 💰 Ekonomija in Obnova +* **Kovanje Denarja (Minting):** Zlatniki ne padajo iz pošasti. Izkopati moraš zlato rudo, jo pretopiti in skovati denar. +* **Obnova Mesta:** Popravilo hiš NPC-jev (tu so "Projekti" -> rabiš les, kamen, denar). +* **Posojanje Zombijev:** Ko imaš dovolj "Srčkov" z NPC-jem (npr. Kovačem), mu lahko posodiš svoje zombije za delo v zameno za denar in boljša orodja. -**Ključne Mehanike:** -* **Farming (Kmetovanje):** Realistična rast pridelkov (koruza, pšenica, itd.). Vsaka rastlina ima svoj cikel. -* **Survival (Preživetje):** Lakota, žeja in spanje. -* **Combat (Boj):** Brani svojo letino pred nočnimi napadi zombijev. -* **Economy (Ekonomija):** Prodajaj pridelke za zlato, kupuj boljša orodja in semena. +### 5. 📚 Raziskovanje in Zbirateljstvo (The Album) +Igralec ima **Album**, ki beleži vse odkrite stvari. To spodbuja raziskovanje. +* **Kategorije:** + * **Artefakti:** Stari predmeti, najdeni med kopanjem zemlje (Arheologija). + * **Hrana & Pridelki:** Ko prvič vzgojiš ali skuhaš nekaj novega. + * **Zombiji:** Beleženje različnih tipov (Defektni, Legendarni, Navadni). + * **Rude & Smeti:** Tudi smeti imajo svojo zgodbo! + +### 6. 🌍 Živi Svet in Bitja +* **Nočna Sova (NPC Poštar):** Ponoči tiho prileti in prinese **osebna pisma** od NPC-jev (zahvale, darila, quest iteme). Je znak prijateljstva. +* **Netopirji (Event Oznanjevalci):** Ko se nebo napolni z netopirji in slišiš njihovo cviljenje, to oznanja **Event** (npr. Invazijo, Krvavo Luno ali Prihod Trgovca). +* **Funa:** + * **Mutirane Živali:** Dvoglave krave, kure z oklepi. Vir mesa in čudnih surovin. + * **Normalne Živali:** Izjemno redke. Če jih najdeš, so vredne bogastvo. +### 7. 🐄 Živinoreja: Normalna vs. Mutirana +Vsaka žival ima svojo "toksično" različico s posebnimi produkti. +* **Krava:** Normalna daje Mleko. **Mutirana** daje **Svetleče Mleko** (za napoje/luči). +* **Ovca:** Normalna daje Volno. **Mutirana** daje **Jekleno Volno** (za oklepe/obrambo). +* **Pujs:** Normalni daje Meso. **Mutirani** spušča **Magične predmete** (rune, svitke - vir magije). +* **Kura:** Normalna daje Jajca. **Mutirana** daje **Kovinsko Perje** (material za izdelavo orožja/puščic). + +### 8. 🌊 Ocean in Otoki +Svet se razširi na vodo. +* **Potapljanje:** Nabiranje školjk in zakladov ob obali. +* **Čolnarjenje:** Potovanje na "Čudne Otoke". Vsak otok ima unikatne biome in naloge. +* **Boss Map:** Na otokih iščeš delčke zemljevida, ki vodijo do Glavnega Bossa. + +### 9. ⏳ Generacije in Dediščina (Legacy System) +Igra poteka skozi leta. +* **Staranje:** Protagonist se stara (Najstnik -> Odrasel -> Starostnik). +* **Družina:** Poroka (z NPC ali drugim igralcem) -> Partner se preseli na farmo. +* **Otroci:** Možnost imeti do 2 otroka. +* **Nadaljevanje:** Ko glavni lik umre, prevzameš vlogo **Otroka ali Partnerja**. Vse lastništvo se prenese. Igra je neskončna. + +### 10. 🤝 Frakcije Mutantov (Lore) +Ni vse, kar je mutirano, zlobno. +* **Dobri Mutanti:** Obstajajo vasi Vilincev, Gnomov in Trolov, s katerimi lahko trguješ. +### 11. 📜 Sistem Znanja (Blueprints) +Ne moreš zgraditi vsega takoj. +* **Odkrivanje:** Načrte (Blueprints) za nove zgradbe in orodja najdeš redko med **kopanjem zemlje/rude** ali v skrinjah v mestu. +* **Workbench:** Osnovna postaja za izdelavo predmetov. +* **Pečica (Furnace):** Nujna za predelavo rude v palice (Iron/Gold Ingots) in peko hrane. + +### 12. 🏗️ Gradnja in Strukture +Igra ponuja bogat sistem gradnje. +* **Bivališča:** + * **Starter House:** Začetna koča, nadgradljiva. + * **Barn (Hlev):** Za mutirane in normalne živali. + * **Grobovi:** Nujni za počitek Zombi delavcev. +* **Skladiščenje:** + * **Silos/Granary:** Za shranjevanje hrane (da ne zgnije). + * **Chest:** Za predmete. +* **Mesto:** Obnova porušenih zgradb (Trgovina, Kovačija, Mestna Hiša). + +### 13. ⛈️ Ekstremno Vreme in Letni Časi +Preživetje je odvisno od priprave. +* **Zima:** Ekstremni mraz. Če nisi **pravilno oblečen** (zimska oblačila), izgubljaš HP. Rastline zunaj pomrznejo -> nujna gradnja **Rastlinjakov** (Steklo iz mivke). +* **Poletje:** Nevarnost suše in vročinskega udara. Rastline potrebujejo več vode -> nujni **Avtomatski Zalivalniki**. +* **Jesen:** Posebni "Survival" questi za pripravo ozimnice. + +### 14. 🌍 Lokalizacija in Platforme +* **Jeziki:** Slovenščina (Primarni) 🇸🇮, EN, DE, IT, CN. +* **Platforme:** + * **Faza 1:** PC (Steam) + Mac (Apple). + * **Faza 2:** Mobilne naprave (Android/iOS). + * **Faza 3:** Konsole (Switch/PS5/Xbox). +* **Dosežki (Achievements):** Integracija s Steam Achievements (npr. "Master Farmer", "Zombie Tamer"). + +### 15. ⏳ Statistika in Dediščina +* **Total Playtime:** Igra beleži skupni čas igranja v realnih urah. Ta števec se nikoli ne resetira, tudi če umreš. +* **Generacije:** Ko umreš, prevzameš vlogo potomca, a statistika *časa* teče dalje. + +### 16. 🌳 Sadjarstvo in Sezonskost +Rastline so vezane na letne čase. +* **Sezonske Rastline:** Večina raste le v določeni sezoni (npr. Lubenice poleti, Buče jeseni). +* **Trpežne Rastline:** Nekatere (npr. korenje) zdržijo do prve zime. +* **Jablana (Apple Tree):** Prvo sadno drevo v igri. Je trajnica (ne rabiš je saditi vsako leto) in daje jabolka vsako jesen. +* **Transport:** Osel za prenašanje tovora. + +### 17. ⚒️ Orodja in Rudarjenje +* **Bone Tools:** Začetno orodje iz kosti. +* **Starter Chest:** Ob vsakem začetku igre dobiš skrinjo z **naključnimi stvarmi** (lahko vrhunsko orodje ali pa samo nekaj hrane). +* **Dragi Kamni:** Diamanti, Smaragdi, Kristali. Sprva le za prodajo (visoka cena), kasneje za *Endgame* magijo/nadgradnje. --- -## 🛠️ Dosedanji Napredek (Feature Log) +## 🛠️ Tehnični Log (Development History) -### Faza 1: Temelji (5. - 6. Dec 2025) -- [x] Vzpostavitev projekta (Node.js, Electron). -- [x] Implementacija **Antigravity Engine** (modularni sistem). -- [x] **Proceduralno Generiranje Sveta:** Uporaba Perlin Noise za ustvarjanje neskončnega, razgibanega terena (trava, voda, pesek). -- [x] Izometrična kamera in gibanje igralca. +### Faza 4: Konceptualna Eksplozija (8. Dec 2025 - Trenutno) +* **Expansion:** Definiran celoten "Zombie Roots" koncept. + * Hibridni heroj, Sestra, Maščevanje. + * Zombi Delavci (Grobovi, Utrujenost). + * Generacije (Poroka, Otroci, Dediščina). +* **Survival:** Določeni pogoji za Zimo/Poletje, Oblačila. +* **Content:** + * Mutirane živali (Jeklena Volna, Svetleče Mleko). + * Ocean in Otoki. + * Sistem Načrtov (Blueprints). +* **Tech:** Pripravljeni Skeleton sistemi (`ZombieWorkerSystem`, `LegacySystem`, `BlueprintSystem`, `ExpansionSystem`). +* **Stats:** Implementiran `Global Score` in `Total Playtime`. -### Faza 2: Sistemi Igre (6. - 7. Dec 2025) -- [x] **Farming System:** - - Oranje zemlje z motiko. - - Sajenje semen. - - Faze rasti (seme -> kalček -> rastlina -> zrelo). - - Žetev pridelkov. -- [x] **Inventory System:** - - Delujoč inventar z zlaganjem (stacking). - - Drag & Drop (še v delu) / Slot selection. -- [x] **Time & Weather System:** - - Cikel dan/noč z vizualno zatemnitvijo. - - Dež (zvočni in vizualni efekti), ki namaka zemljo. +### 19. 🔮 Dolgoročna Vizija (Master Plan) +Strategija razvoja serije. +* **Krvava Žetev 1 (Trenutno):** Ostaja v **2.5D Izometričnem Pixel/Voxel stilu**. + * **Cilj:** Dokončati masivno vsebino (zombiji, otoki, geneacije) na stabilnem enginu. + * **Učenje:** Razvoj služi kot "učna pot" za programiranje kompleksnih sistemov. +* **Krvava Žetev 2 (Prihodnost):** Načrtovana kot **Polna 3D Igra** (First/Third Person). + * Ko bo avtor pridobil dovolj izkušenj, bo drugi del igre "Next-Gen" nadgradnja v 3D svetu. -### Faza 3: Poliranje in Realizem (8. Dec 2025 - Danes) -- [x] **Statistika in XP:** - - Dodan sistem izkušenj (XP). Igralec dobiva XP za sekanje dreves, rudarjenje in pobiranje pridelkov. - - Prikaz Levela in XP vrstice v HUD-u. -- [x] **Novi Pridelki:** - - **Pšenica:** Standardni pridelek, raste srednje hitro. - - **Koruza:** Visoka rast, počasnejša, a večji donos. - - Unikatne teksture za vsako fazo rasti. -- [x] **3D Voxel Orodja:** - - Proceduralno generirana orodja v 3D "Minecraft" stilu. - - Sekira, Kramp, Motika, Meč, Zalivalka - vsa imajo volumen in senčenje. -- [x] **Zvok:** - - Proceduralno generirani zvočni effekti (kopanje, sekanje, koraki). - - Popravek manjkajočih zvokov (`playDig`). +### 18. 🖥️ Tehnične Specifikacije in Časovnica (Ocena) +Načrt za razvoj in zahteve. + +**Časovnica Razvoja:** +* **Kickstarter Demo:** 2-3 mesece. +* **Early Access (Beta):** 8-12 mesecev. +* **Full Release v1.0:** 1.5 - 2 leti. + +**Velikost Igre:** +* **Disk:** cca. **500 MB - 1 GB** (optimizirano, večino zavzame zvok/glasba). + +**Sistemske Zahteve (PC):** +* **Minimum:** CPU i3, 4GB RAM, Intel HD Graphics (30 FPS @ 720p). +* **Priporočeno:** CPU i5, 8GB RAM, GTX 1050 ali boljše (60 FPS @ 1080p, High Shadows). +* **Opomba:** Igra je procesorsko zahtevna zaradi simulacije AI (Zombiji) in proceduralnega sveta. --- - -## 🔮 Vizija za Naprej (TODO) -1. **Napredni NPC-ji:** Trgovci, ki pridejo le ob določenih dnevih. -2. **Gradnja Baze:** Postavljanje ograj in stolpov za obrambo. -3. **Razširitev Sveta:** Dodajanje novih biomov (gozd, puščava). -4. **Save System:** Shranjevanje napredka v datoteko. - ---- -*Zadnja posodobitev: 8. December 2025 ob 01:55* +*Zadnja posodobitev koncepta: 8. December 2025 (Mega Update + Tech Specs)* diff --git a/KICKSTARTER_PLAN.md b/KICKSTARTER_PLAN.md new file mode 100644 index 0000000..2cf2e21 --- /dev/null +++ b/KICKSTARTER_PLAN.md @@ -0,0 +1,49 @@ +# 🚀 KICKSTARTER KAMPANJA NAČRT: KRVAVA ŽETEV + +## 🎯 Cilj +Pripraviti prepričljiv "Vertical Slice" demo in promocijski material, ki bo prodal unikatno idejo "Zombi Kmetovanja". + +## 📦 1. Potrebni Materiali (Assets) + +### A. Gameplay Trailer (Skripta) +1. **Intro (Cinematic):** Kamera drsi čez megleno polje. Vidimo ruševine mesta v daljavi. +2. **Hero Reveal:** Protagonist stopi iz hiše. Vidimo dredlokse in unikatna oblačila. +3. **Farming:** Hitri rezi (montaža) oranja, sajenja, žetve. Prikaz letnih časov (Zima -> Rastlinjak). +4. **THE TWIST (Zombie Workers):** + * *Tekst na ekranu:* "Ne moreš preživeti sam..." + * *Posnetek:* Igralec vrže "Meso" na tla. Zombi pride, ga poje, se prikloni. + * *Posnetek:* Igralec pokaže na njivo. Zombi začne okopavati. + * *Posnetek:* 10 zombijev dela v sinhronizaciji. +5. **Combat & Exploration:** Prikaz čolna, otokov in bega pred Mutiranimi Kravami. +6. **Call to Action:** "Pridruži se revoluciji. Kickstarter Live Now." + +### B. Screenshot Paket +1. **"Cozy" Farm:** Sončni zahod, jablana, lepo urejene njive. +2. **"Spooky" Night:** Megla, svetleče oči zombijev, igralec z baklo. +3. **Inventory/Crafting:** Prikaz UI sistema (mora biti lep!). +4. **Boss Tease:** Senca Zmaj-Volka ali Mutiranega Trola. + +## 🛠️ 2. Demo Zahteve (Must-Haves) +V demu NE SME biti hroščev. +- [ ] **Tutorial:** Kratek in jasen (WASD, "E" za interakcijo). +- [ ] **Prolog Zgodbe:** Najdeno pismo sestre ali dnevnik staršev. +- [ ] **Day 1 Loop:** Posadiš prvo repo. +- [ ] **Night 1 Loop:** Preživiš noč, prvič srečaš zombija. +- [ ] **Worker Unlock:** Dobiš prvega delavca pred koncem dema. +- [ ] **Konec:** "Hvala za igranje - podprite nas na KS!" + +## 🎨 3. Vizualni Popravki (Polish) +Pred snemanjem je treba urediti: +- [ ] **UI Skin:** Inventar mora imeti teksturo (star papir, preperel les), ne samo barv. +- [ ] **Particle Effects:** Prah pri hoji, listje v vetru, kri pri udarcih. +- [ ] **Lighting:** Dinamične sence za igralca in zombije. + +## 💰 4. Stretch Goals (Ideje) +* **€10k:** Osnovna igra (PC). +* **€25k:** Večja mapa + Otoki. +* **€50k:** Multiplayer (Co-op). +* **€100k:** Port za Switch in Mobile. +* **€200k:** *Dubbing* (Glasovna igra) v 5 jezikih. + +--- +*Ta dokument služi kot vodič za pripravo marketinških materialov.* diff --git a/TASKS.md b/TASKS.md index 828e56e..e038f96 100644 --- a/TASKS.md +++ b/TASKS.md @@ -157,11 +157,103 @@ Implementacija arhitekturnih stebrov po zgledu Stardew Valley. - [x] NEAREST Filter enforce - [x] Tile Padding/Extrude (No bleeding) - [x] Pixel-Perfect Math.round positioning + - [x] **UI/Drawing Integration**: Združitev UI/Drawing modulov za enoten API. - [x] **Depth Sorting v2.0** - [x] Y-Sorting za vse entitete - [ ] **Concept Integration** - [ ] Poenotenje vseh sistemov pod `Antigravity` namespace (Future Refactor) +## 🌈 Phase 10: Visual Overhaul & Realism (Current) +Ekskluzivni vizualni popravki za potopitveno izkušnjo. + +- [x] **Realistic Tools (3D Voxel)**: Sekira, Kramp, Motika, Meč, Zalivalka (v celoti proceduralno generirano). +- [x] **Realistic Crops**: + - [x] Pšenica (4 faze, zlati snopi). + - [x] Koruza (Visoka rast, 4 faze, regeneracija). +- [x] **Inventory Icons Update**: Unikatne ikone za semena in pridelke namesto generičnih krogov. +- [x] **Sound Fixes**: Implementacija manjkajočih zvokov (npr. `playDig`). +- [ ] **Advanced World Details**: + - [ ] Boljša voda (animacija). + - [ ] Več dekoracij (ograje, poti). + +## 🧟 Phase 11: Zombie Roots Integration (New Mechanics) +Implementacija jedrnih mehanik iz novega koncepta "Krvava Žetev". + +- [ ] **Zombie Worker AI** + - [ ] `WORK_FARM`: Zombi avtomatsko zaliva/žanje v določenem radiusu. + - [ ] `WORK_MINE`: Zombi koplje kamenje/rudo. + - [ ] **Decay System**: Zombi s časom izgublja energijo/HP. + - [ ] **Death Drop**: Gnojilo (Fertilizer) + XP ob smrti. +- [ ] **Grave System** + - [ ] Izdelava Groba (Crafting). + - [ ] Počitek: Zombi v grobu se regenerira (počasneje razpada). +- [ ] **Expansion System (Micro Farm start)** + - [ ] Zaklepanje con (megla/neprehodno). + - [ ] Naloga: "Pošlji zombije očistit cono". +- [ ] **Hybrid Skill & Language** + - [ ] Skill Tree UI za Hibrida. + - [ ] Prevajalnik dialogov (Level 1: "...hggh", Level 10: "Nevarnost!"). +- [ ] **Economy: Minting & Crafting** + - [ ] **Blueprint System**: Drop chance pri kopanju (`unlockRecipe(id)`). + - [ ] **Workstation Logic**: + - [ ] Workbench (Crafting UI v2.0). + - [ ] Furnace (Input slot -> Fuel -> Output slot timer). + - [ ] Talilnica (Furnace) za rudo -> palice. + - [ ] Kovnica (Mint) za palice -> zlatniki. +- [ ] **Building Expansion** + - [ ] **Barn**: Objekt za shranjevanje živali. + - [ ] **Silos**: Objekt za shranjevanje hrane (poveča kapaciteto). + - [ ] **Starter House**: Nadgradnje (Level 1 -> Level 2 dodata prostor). +- [ ] **Collection Album (Zbirateljstvo)** + - [ ] UI Knjiga (z nalepkami/slikami). + - [ ] Tracking System: Odklepanje vnosov ob pobiranju itemov. + - [ ] **Arheologija**: Naključna možnost za najdbo Artefakta pri kopanju zemlje. +- [ ] **World Events & Entities** + - [ ] **Nočna Sova**: Dostava Quest Itemov/Daril (vezano na Friendship system). + - [ ] **Netopirji**: Vizualni efekt (roji) za napoved eventov. + - [ ] **Mutanti**: Troli in Vilinci (AI + Spawn Logic). + - [ ] **Živali**: Mutirane (npr. krave) in Normalne živali. + +## 🧬 Phase 12: Exploration & Legacy (Endgame) +- [ ] **Livestock System** + - [ ] Hlev za živali. + - [ ] Loot Tables: Normalno vs. Mutirano (Mleko vs. Svetleče Mleko). +- [ ] **Ocean System** + - [ ] Potapljanje (animacija, kisik bar). + - [ ] Čoln (Vehicle controller). + - [ ] Generacija Otokov (Island Nodes). +- [ ] **Legacy System (Generacije)** + - [ ] Age Counter (Leta/Letni časi). + - [ ] Marriage Logic + Child Spawn. + - [ ] **Inheritance**: Prenos inventarja/farme na novega lika ob smrti. +- [ ] **Fractions** + - [ ] Reputation System za Mutante (Dobri/Zlobni). + +## 🌡️ Phase 13: Elements & Survival (Hardcore) +- [ ] **Weather System v2.0** + - [ ] **Letni Časi:** Zima (Sneg, Mraz), Poletje (Vročina, Suša). + - [ ] **Temperature Logic:** Če `Temp < 0` in nimaš `WinterCoat` -> HP pada. + - [ ] **Rastlinjak (Greenhouse):** Crafting Stekla (Mivka + Peč). Omogoča rast pozimi. +- [ ] **Localization & Platforms** + - [ ] JSON prevodi (SLO, EN, DE, IT, CN). + - [ ] Language Selector v meniju. + - [ ] **Steam Integration**: Achievements & Cloud Save. +- [ ] **Entities & Items** + - [ ] **Playtime Tracker**: Beleženje ur igranja (Persistent Stats). + - [ ] **Osel (Donkey):** Jahanje in Inventory. + - [ ] **Jablana (Apple Tree):** Trajnica, daje pridelek jeseni. + - [ ] **Seasonal Crops**: Logika rasti (Spring/Summer/Autumn only). + - [ ] **Starter Chest**: Naključen loot ob New Game (Seed based). + - [ ] **Bone Tools**: Crafting z receptom `Bone + Wood`. + - [ ] **Gems:** Diamond/Emerald kot rare drop (za prodajo). + +## 🎬 Phase 14: Kickstarter Prep (Vertical Slice) +Priprava poliranega dema za javnost. +- [ ] **Demo Mode**: Omejitev igranja na 3 in-game dneve. +- [ ] **UI Polish**: Zamenjava placeholder UI z "Rustikalnim/Post-apo" stilom. +- [ ] **Trailer Tools**: Skripta za gladko premikanje kamere (za snemanje). +- [ ] **Visual Polish**: Dodajanje "Juice" efektov (Particles, Screenshake, Lighting). + --- -**PROJECT STATUS: TRANSFORMING...** 🦋 -*Last Updated: 2025-12-08 (Antigravity Engine Integration)* +**PROJECT STATUS: PLANNING COMPLETE SAGA** 🌍 +*Last Updated: 8.12.2025* diff --git a/index.html b/index.html index 4196636..7f20ff9 100644 --- a/index.html +++ b/index.html @@ -89,6 +89,11 @@ + + + + + diff --git a/optimizations.md b/optimizations.md index 308f6eb..792c9bc 100644 --- a/optimizations.md +++ b/optimizations.md @@ -15,25 +15,28 @@ Stvari, ki so bile uspešno implementirane in izboljšale delovanje. - 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** +- [x] **Code Refactoring & Systems** - `LootSystem.js`: Centraliziran loot. - `InteractionSystem.js`: Poenostavljena logika. - - `TextureGenerator.js`: Volumetric sprite generation. + - `StatsSystem.js`: Refaktoriran z `Score` in `Playtime` logiko. +- [x] **Save Data Compression** + - LZW kompresija za JSON save file (80-90% prihranek). +- [x] **Texture Force Refresh & Voxel Gen** + - `TextureGenerator` podpira hot-reload tekstur in pred-generira kompleksna 3D orodja v Canvas. ## 🟡 2. Odprte / Potencialne Tehnične Naloge (To-Do) Stvari, ki še niso kritične, a bi lahko izboljšale igro. +- [ ] **Zone Streaming (Expansion)** + - Dinamično nalaganje otokov in novih con (Chunk Loading) ob širitvi sveta. - [ ] **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. + - Če bo število zombijev naraslo nad 100, premakni iskanje poti (A*) na ločen thread. - [ ] **Asset Loading Screen** - - Dodati pravi loading bar, če se poveča število tekstur (trenutno proceduralno generiranje traja nekaj milisekund). + - Pravi loading bar za nalaganje tekstur in zvokov. ## 🔴 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. +- **WebGL Context Loss:** Pri preklapljanju med tabi brskalnika se lahko zgodi izguba konteksta. +- **Mobile Performance:** Igra ima osnovne touch kontrole, a UI še ni prilagojen manjšim ekranom. --- -*Zadnja posodobitev: 7.12.2025* -ddddddd \ No newline at end of file +*Zadnja posodobitev: 8.12.2025* \ No newline at end of file diff --git a/src/scenes/GameScene.js b/src/scenes/GameScene.js index a50e305..cf26981 100644 --- a/src/scenes/GameScene.js +++ b/src/scenes/GameScene.js @@ -34,6 +34,12 @@ class GameScene extends Phaser.Scene { // Initialize Spatial Grid this.spatialGrid = new SpatialGrid(10); + // Initialize Concept Systems (Zombie Roots) + this.zombieSystem = new ZombieWorkerSystem(this); + this.legacySystem = new LegacySystem(this); + this.expansionSystem = new ExpansionSystem(this); + this.blueprintSystem = new BlueprintSystem(this); + // Inicializiraj terrain sistem - 100x100 mapa console.log('🌍 Initializing terrain...'); try { @@ -301,6 +307,9 @@ class GameScene extends Phaser.Scene { if (this.weatherSystem) { this.weatherSystem.update(delta); + // Concept Systems Updates + if (this.zombieSystem) this.zombieSystem.update(this.time.now, delta); + // Night Logic if (this.weatherSystem.isNight()) { const isHorde = this.weatherSystem.isHordeNight(); diff --git a/src/systems/BlueprintSystem.js b/src/systems/BlueprintSystem.js new file mode 100644 index 0000000..0887a90 --- /dev/null +++ b/src/systems/BlueprintSystem.js @@ -0,0 +1,32 @@ +class BlueprintSystem { + constructor(scene) { + this.scene = scene; + this.knownRecipes = ['axe', 'pickaxe', 'hoe']; // Default known + this.blueprintsFound = []; // Items found but not learned? Or just list + console.log('📜 BlueprintSystem: Initialized'); + } + + // Called when digging/mining + tryDropBlueprint() { + if (Math.random() < 0.05) { // 5% chance + const newBp = 'blueprint_barn'; // Randomize this + console.log('✨ BLUEPRINT FOUND:', newBp); + return newBp; + } + return null; + } + + learnBlueprint(id) { + if (!this.knownRecipes.includes(id)) { + this.knownRecipes.push(id); + console.log('🧠 Learned Recipe:', id); + // TODO: Add to Crafting Menu + return true; + } + return false; + } + + hasRecipe(id) { + return this.knownRecipes.includes(id); + } +} diff --git a/src/systems/ExpansionSystem.js b/src/systems/ExpansionSystem.js new file mode 100644 index 0000000..28c05c2 --- /dev/null +++ b/src/systems/ExpansionSystem.js @@ -0,0 +1,27 @@ +class ExpansionSystem { + constructor(scene) { + this.scene = scene; + this.unlockedZones = ['FARM_START']; // List of IDs + this.islandsDiscovered = []; + console.log('🌍 ExpansionSystem: Initialized'); + } + + // Preveri, če je igralec v dovoljeni coni + checkAccess(x, y) { + // TODO: Map coordinates to Zone ID + return true; + } + + unlockZone(zoneId) { + if (!this.unlockedZones.includes(zoneId)) { + this.unlockedZones.push(zoneId); + console.log('🔓 Zone Unlocked:', zoneId); + // TODO: Remove fog/barrier + } + } + + travelToIsland(islandId) { + console.log('🚤 Traveling to:', islandId); + // TODO: Load island map / scene + } +} diff --git a/src/systems/LegacySystem.js b/src/systems/LegacySystem.js new file mode 100644 index 0000000..2c0692a --- /dev/null +++ b/src/systems/LegacySystem.js @@ -0,0 +1,44 @@ +class LegacySystem { + constructor(scene) { + this.scene = scene; + this.worldAge = 0; // Days passed + this.generation = 1; + this.currentAge = 18; // Protagonist age + + this.family = { + partner: null, + children: [] + }; + + console.log('⏳ LegacySystem: Initialized (Gen ' + this.generation + ')'); + } + + // Call daily + advanceDay() { + this.worldAge++; + // Age Logic + if (this.worldAge % 365 === 0) { + this.currentAge++; + console.log('🎂 Birthday! Now age:', this.currentAge); + } + } + + marry(npcId) { + this.family.partner = npcId; + console.log('💍 Married to:', npcId); + } + + haveChild(name) { + if (this.family.children.length < 2) { + this.family.children.push({ name: name, age: 0 }); + console.log('👶 New Child:', name); + } + } + + dieAndInherit(heirIndex) { + console.log('⚰️ Character Died. Passing legacy...'); + this.generation++; + this.currentAge = 18; // Reset age for heir + // TODO: Transfer inventory and stats + } +} diff --git a/src/systems/StatsSystem.js b/src/systems/StatsSystem.js index 8c794b3..e843ed3 100644 --- a/src/systems/StatsSystem.js +++ b/src/systems/StatsSystem.js @@ -12,6 +12,8 @@ class StatsSystem { this.currentLevel = 1; this.currentXP = 0; this.xpToNextLevel = XP_REQUIRED_BASE; + this.score = 0; // GLOBAL SCORE (Za Legacy) + this.totalPlaytime = 0; // Skupni čas igranja (sekunde) // Stats this.health = 100; @@ -39,6 +41,7 @@ class StatsSystem { update(delta) { const seconds = delta / 1000; + this.totalPlaytime += seconds; // Track playtime // Decay if (this.hunger > 0) { @@ -94,9 +97,21 @@ class StatsSystem { this.thirst = Math.min(this.thirst, this.maxThirst); } + // SCORE & DEATH LOGIC + addScore(points) { + this.score += points; + // console.log(`⭐ Score +${points} (Total: ${this.score})`); + } + die() { console.log('💀 Player died!'); + // SCORE PENALTY (Legacy Cost) + // Igralec NE izgubi farme, ampak izgubi del Dediščine (Točk). + const penalty = Math.floor(this.score * 0.25); // Izguba 25% točk + this.score = Math.max(0, this.score - penalty); + console.log(`📉 Dediščina Oškodovana: -${penalty} Točk (Novo stanje: ${this.score})`); + // Trigger Player Animation if (this.scene.player) { this.scene.player.dieAnimation(); @@ -111,16 +126,26 @@ class StatsSystem { const bg = uiScene.add.rectangle(width / 2, height / 2, width, height, 0x000000, 0.8); - const txt = uiScene.add.text(width / 2, height / 2, 'YOU DIED', { + const txt = uiScene.add.text(width / 2, height / 2 - 50, 'YOU DIED', { fontSize: '64px', color: '#ff0000', fontStyle: 'bold' }).setOrigin(0.5); + const sub = uiScene.add.text(width / 2, height / 2 + 20, `Legacy Lost: -${penalty} Score pts`, { + fontSize: '24px', color: '#ffffff' + }).setOrigin(0.5); + + const sub2 = uiScene.add.text(width / 2, height / 2 + 60, '(Farm Preserved)', { + fontSize: '18px', color: '#aaaaaa', fontStyle: 'italic' + }).setOrigin(0.5); + // Wait and Respawn uiScene.time.delayedCall(3000, () => { if (bg) bg.destroy(); if (txt) txt.destroy(); + if (sub) sub.destroy(); + if (sub2) sub2.destroy(); - // Reset Stats + // Reset Stats (but keep Score penalty) this.health = 100; this.hunger = 100; this.thirst = 100; diff --git a/src/systems/ZombieWorkerSystem.js b/src/systems/ZombieWorkerSystem.js new file mode 100644 index 0000000..329cf74 --- /dev/null +++ b/src/systems/ZombieWorkerSystem.js @@ -0,0 +1,39 @@ +class ZombieWorkerSystem { + constructor(scene) { + this.scene = scene; + this.workers = []; // Array of tames zombies + this.graves = []; // Array of grave locations + console.log('🧟 ZombieWorkerSystem: Initialized'); + } + + // Dodaj zombija med delavce + addWorker(zombieEntity) { + this.workers.push({ + entity: zombieEntity, + task: 'IDLE', // FARM, MINE, GUARD, REST + energy: 100, // Decay meter + xp: 0 + }); + console.log('🧟 New Worker Assigned!'); + } + + // Dodelitev naloge + assignTask(workerIndex, taskType, location) { + if (this.workers[workerIndex]) { + this.workers[workerIndex].task = taskType; + this.workers[workerIndex].targetLocation = location; + } + } + + update(time, delta) { + // Logic for worker AI, decay, and farming automation + this.workers.forEach(worker => { + if (worker.energy > 0) { + worker.energy -= 0.01; // Decay over time + // TODO: Execute Task Logic + } else { + // TODO: Rot / Die logic + } + }); + } +}