Informatii generale
- Categorie: Utilitar
- Judetul: Maramureș
- Surse: https://github.com/TudorBuciuman/MyDarkFantasy
Descriere
My dark fantasy este un joc narativ în care fiecare bloc, sunet și alegere te împinge mai adânc într-o lume aflată între vis și amintire. Tu nu ești doar o piesă, nici pion. Ești cel care decide. Cel care schimbă. Cel care creează sau distruge. Tu ești povestitorul, gânditorul și visătorul.
Inspirat (evident) de Minecraft, Terraria, Undertale, și de estetica pierdută a viselor din copilărie, jocul combină generare procedurală, salvări multiple, mesh-uri live și un sistem narativ ramificat în 5 acte distincte. Fiecare acțiune lasă urme în lume – florile înfloresc sau dispar, muzica se destramă sau renaște, iar blocurile își schimbă culoarea în funcție de alegerile tale.
Este de menționat că grafica este inspirată de Minecraft, pentru că Minecraft este foarte bun (și am vrut neapărat să creez de la 0 un algoritm pentru generarea procedurală, plus faptul că are cel mai bun teren din orice joc din istorie).
Într-o lume cufundată în întuneric, rămâne doar o întrebare: de ce încă mai lupți?
My dark fantasy spune povestea unei lumi care a căzut într-o singură noapte. Lumina a străpuns odată această lume, dar bărbații și femeile au fugit spre întuneric. O lume în care tăcerea unui rege a înlocuit speranța, iar fiecare suflet pierdut pare să aducă promisiunea unei eliberări care nu mai vine.
Jucătorul nu controlează un pion. Este pionul. Tu ești cel care joacă.
Toate acțiunile, toate consecințele îți aparțin. Pe parcursul celor 5 acte, jucătorul va afla treptat adevărul, altfel, dacă calci pe urmele lor, întunericul va fi sfărșitul.
Ai putea fi ultima speranță a unei lumi care încă refuză să uite.
Tehnologii
Proiectul este realizat integral în Unity 3D (2023.1.20f1), folosind C# pentru toate sistemele interne. Include un motor propriu de generare procedurală cu mesh-uri actualizate modular, aka lazy evaluation, și chunk-uri dinamice, fără modele 3D externe. Acest “detaliu” poate părea nesemnificativ, dar este baza întregului joc.
Sistemele de salvare modulară (lume + jucător) sunt integrate profund în partea de gameplay, susținând tranziții între 5 scene tematice cu modificări vizuale, mecanice și sonore.
Am utilizat interpolare biliniară pentru teren, algoritmi din teoria grafurilor pentru logică și structură, și o fizică proprie (care chiar merge!), diferită total de sistemul intern Unity, plus pentru că mă folosesc de vectorul 3d al chunk-ului nu o să existe niciodată probleme, plus nu depind de Ray cast.
Grafica 2D este realizată de la zero în GIMP, iar întreaga coloană sonoră e compusă în FL Studio, cu muzică reactivă la acțiunile jucătorului.
Datele sunt gestionate în format JSON, pentru flexibilitate, transparență și compatibilitate multiplă (PC + Android). Pe lângă asta, toate datele sensibile trec printr-o etapă de încriptare, iar salvarea modulară a terenului, care apropo este de dimensiunea impresionantă (2^64 x 2^64 de blocuri), este creată 100% de mine prin intermediul funcției de Perlin Noise, la rândul ei trecând printr-o etapă de compresie, dimensiunea ei fiind redusă cu până la 93%!
Ca și în Minecraft, am dezvoltat un sistem pentru gestionarea iteme-lor, momentan am introdus peste 100 de blocuri, obiecte, unelte, armuri, totul salvat modular prin intermediul fișierelor de tip JSON.
Pe lângă acstea, mai am un sistem pentru viață, pentru muzica ambientală, pentru progresia jucătorului în cele 5 acte, sistem pentru salvarea tuturor itemelor, pentru cufere, pentru generarea de teren 3d prin intermediul unui seed, anotimpuri (prin asta mă refer la biome-uri, dar nu există în română denumirea), sistem de luptă (încerc să nu dau aici spoilere), am reușit să integrez funcția de generare a chunkurilor să funcționeze în paralel (am încercat multithreading și în Open GL, dar nu a fost un rezultat satisfăcător, așa că am trecut la Unity), plus shadere, mai precis 5 shadere, GPU instancing, am implementat algoritmul Marching Squares, Greedy Meshing pentru partea de optimizare în etapa generării blocurilor, doar partea vizibilă fiind generată, plus fețele alăturate se compun pentru a salva memoria, o parte de Delaunay Triangulation (care recunosc că a ieșit exact cum mi-am dorit), generarea minereurilor bazată pe Perlin Noise, dar îmbunătățit pentru partea de 3d, o implementare a algoritmului lui Dijkstra în căutarea în grafuri, iar pentru a sparge și plasa blocuri, evident, am implementat o variantă de Ray Casting (mult mai eficientă față de calculul prin funcții trigonometrice), asta pentru început.
Modelele 3D au fost complet abandonate (Blender 2.93 LES a fost testat inițial), în favoarea generării directe prin mesh update runtime în Unity. Funcție dedicată de generare: CreateMesh(), pentru actualizarea live a geometriilor, fără utilizarea modelelor 3D externe.
Dacă sunteți interesați, am pe profilul de Github 7 documente cu TOATĂ munca mea din ultimele luni.
Cerinte sistem
Cerințe minime
CPU: Intel Core i3-3240 (2 * 3400); AMD FX-4300 (4 * 3800), de preferat minim 4-core
RAM: consumă între 1->2 GB, dar poate fi și de 100mb pentru PC merge și 8GB, iar android merge și pentru 4GB
VIDEO CARD: GeForce GTX 560 Ti (1024 VRAM); Radeon HD 7750 (1024 VRAM)
DEDICATED VIDEO RAM: 1024 MB.
OS: Windows 8+ Linux Android 5.1 Lollipop
Recomandate:
Windows 10/11
16GB ram
RTX 2060/RX 6600
Intel i5 12 gen
200 mb
Android 12+
6/8 GB ram
1.8/2 GHZ, octacore
150 mb
Realizatori
Buciuman Tudor
- Scoala: Colegiul Național “Vasile Lucaciu”
- Clasa: 11
- Judet: Maramureș
- Oras: Baia Mare