Sve je počelo jednim jednostavnim pitanjem na početku: “Šta je sve potrebno da bi se napravio game engine pomoću Java Swing-a?” Ono što je započelo kao mali projekat za testiranje mogućnosti Swing-a, sa samo jednim nivoom i animiranim likom, od tada se razvilo u najambiciozniji i najedukativniji projekat mog programerskog života. Ovo je priča o “Merciless Warrior”, mom putovanju od puke znatiželje do izgradnje solidne gaming platforme.

Custom 2D Engine
Namerno sam izabrao Java Swing za klijent igre. Želeo sam da razumem osnove, da izgradim engine od nule, bez oslanjanja na framework-e kao što su Unity ili Godot. To je značilo da sam morao da kreiram apsolutno sve: game loop, upravljanje stanjima, rendering pipeline, fiziku i upravljanje resursima.
Projekat je brzo prerastao iz jednostavnog lika koji hoda po platformi u 2D platformer bogat funkcijama:
- Kompleksan fight sistem sa melee napadima, specijalnim sposobnostima i magijama.
- Pametni neprijatelji i boss fight-ovi.
- Sistem inventara sa kraftovanjem, kupovinom i sakupljanjem.
- Napredovanje lika kroz perk-ove i quest-ove.
Ovaj put je bio ispunjen greškama. Imao sam mnogo nervnih slomova zbog bagova i teškog refaktorisanja. Moj početni kod je bio prljav. Mnoge komponente su bile toliko čvrsto povezane (tightly coupled) da nisam mogao normalno da kodiram. Kako su dodavane nove funkcionalnosti, složenost je rasla, a neki refaktori su trajali i po tri meseca. Prekretnica je nastala kada sam ponovo dizajnirao glavne komponente koristeći Event Bus i neku vrstu Dependency Injection-a da bih pojednostavio stvari. Bilo je teško prebaciti postojeću kodnu bazu na te obrasce, ali sam nekako uspeo, a poboljšanje u kvalitetu i održivosti koda bilo je ogromno. Kroz ovaj proces pokušaja i grešaka, zaista sam naučio vrednost dobre softverske arhitekture.
Muke Solo Developera
Raditi sam značilo je da izazovi nisu bili samo tehnički. Pošto nisam pixel artist, pronalaženje odgovarajućih resursa bila je velika prepreka. Pravi izazov nije bio samo pronaći grafiku, već pronaći je sa konzistentnim stilom koji bi svet igre učinio koherentnim. Isto je važilo i za muziku i zvučne efekte, pronalaženje visokokvalitetnog zvuka koji odgovara atmosferi igre bilo je putovanje za sebe.
A tu je i dizajn nivoa… ah. Kreiranje nivoa koji su zabavni, fer i interesantni je potpuno druga veština. Ovi ne-programerski zadaci bili su značajan deo truda, ali suštinski za stvaranje kompletnog iskustva.
Prekretnica - Od Igre do Platforme
Kako je klijent igre sazrevao, tako su rasle i moje ambicije. Želeo sam funkcije kao što su cloud save-ovi, korisnički nalozi i leaderboards. Jednostavan monolitni backend ne bi bio dovoljan za složenost koju sam zamislio. To je bila prekretnica gde je “Merciless Warrior” započeo svoju transformaciju u full gaming platformu, izgrađenu na distribuiranom backend-u.
Backend je moćan, event-driven sistem dizajniran za skalabilnost i otpornost, koji u potpunosti radi u Docker kontejnerima.
To je kompletan ekosistem mikroservisa:
- API Gateway - ulazna tačka za sve zahteve od klijenta igre.
- Service Registry - omogućava servisima da se dinamički pronalaze.
- Auth Service - upravlja sigurnom autentifikacijom, sa rate limiting-om pomoću Redis-a.
- Game Service - upravlja svim podacima igre.
- Multiplayer Service - najnoviji dodatak, trenutno u razvoju.
Data Pipeline - Od Gameplay-a do Analitike
Jedan od najuzbudljivijih delova ovog projekta bila je izgradnja kompletnog data pipeline-a za analizu događaja iz igre u realnom vremenu.
Arhitektura je event-driven:
- Game Service proizvodi događaje u Avro formatu na Apache Kafka topic.
- Analytics Service napisan u Scali, konzumira ove događaje.
- Spark Structured Streaming job obrađuje podatke u skoro realnom vremenu, upisujući ih u particionisan Data Lake zasnovan na Parquet formatu.
- Spark Batch Job koji se pokreće po potrebi može da izvršava složene analitičke upite nad ovim data lake-om.
Ovaj pipeline razdvaja operativnu logiku igre od njenih analitičkih potreba, stvarajući skalabilan sistem sposoban da obradi ogromne količine podataka.
Putovanje do Sada
Sada, kao student završne godine, vidim više od samog koda. Vidim put učenja i istrajnosti. Ono što je počelo kao jednostavan eksperiment postalo je projekat koji obuhvata razvoj igara, backend inženjering i data pipeline-ove.
Svaki izazov, od bagova u fizici Swing-a do osiguravanja transakcione konzistentnosti u distribuiranom sistemu, bio je neprocenjiva lekcija. Ovo je ključna poenta: naučio sam ovde mnoge stvari koje fakultet nikada ne bi mogao da me nauči. Čistu teoriju možete naučiti na kursevima, na fakultetu ili sa YouTube-a, ali praksa je potpuno drugačija stvar. Projekat je dokaz ideje da početak sa malim stvarima, vođen znatiželjom, može dovesti do nečeg mnogo većeg nego što ste ikada zamislili. A sa multiplayer-om na horizontu, putovanje je daleko od završenog.