Simplex – rok a půl (sporadického) vývoje

Zdravím osazenstvo Krevety!

V tomto příspěvku se chci věnovat největšímu projektu, na kterém jsem pracoval – svému hernímu enginu, silně orientovaném na tvorbu RPG her, nazvaném prostě Simplex (složenina slov simple a complex – cíl enginu je přinést jednoduchá řešení pro složité problémy).

Projekt Simplex postupně vznikl z prostého programu, jehož cílem bylo vytvořit herní inventář pro některou z mých nedokončených her, která v toku času ztratila jméno, nebo si na něj nepamatuji. Na gitu se první commit Simplexu datuje k pátému červnu 2015, ale na disku jsem ho mohl mít o dobrého půl roku déle. Repositář nesl jméno „Dragon rise 3“, což měla být poměrně nespecifická hra, kterou jsem chtěl vytvořit. Engine okolo prvního commitu vypadal takto:Commit 1Není tam toho sice moc, ale pamatuji si, že jsem z funkcionality měl hroznou radost. Po obrazovce se pohybovala animovaná postava, inventář uměl stackovat předměty, byla možnost je přesouvat, ukládat a vybírat z truhel, používat je.

Asi o třicet commitů později vypadalo celé demo o něco lépe, přidal jsem první, naivní implementaci stromů, změkčených dlaždic, raritu předmětů, zbraně, resp. zbraň, která šla nasadit a velmi vtipně se vykreslovala a v neposlední řadě pokus o formulář equipmentu:

Commit 30

O dva měsíce později se začala formovat první verze UI programu. Do světa přibili slimáci, kteří se už od své první implementace chovali poměrně chytře, takže hráč nebyl osamělý. NPC postavy získaly schopnost zobrazovat dialogy, byť prozatím bez možnosti odpovědí.

11143713_920884761281615_3231588854741797262_n

Kolem commitu 80 vznikl ukazatel zkušeností, první forma minimapy a také první kouzlo – ohnivá koule. Hráč mohl sprintovat a celkově se zlepšily kolize.

op3

Asi po čtyřiceti commitech se výrazně zlepšil inventář, byť vypadal stále hrozně. Také vznikl bestiář, který se visuálně moc nelišil od dnešní podoby.

12189854_951621748207916_5274305786733029067_n

Následovaly úkoly a hráč konečně mohl reagovat na povídání ostatních postav.

op4

Potom šel vývoj ráz na ráz a v poměrně krátké době jsem implementoval spoustu věcí – statusMenu, atributy, perky, výrobu, obchody a mnoho dalšího. Kromě toho vzniklo více kouzel, minimapa dostala nový vzhled a hlavní hrdina se schoval pod kapuci.

op5

Někdy v téhle době, okolo commitu 200 začala vznikat v Simplexu hra Fate of hero, která nedlouho nato úspěšně vybrala potřebné prostředky na její vývoj na Startovači. Kromě toho jiné studio na Simplexu vytvořilo hru Shuups – adventuru na android, která je k dostání na Google play.

Potom přišla neskutečně úmorná doba, ve kterém jsem zjistil, že engine je plný chyb, často se chová poměrně záludně. Následujících 150 commitů jsem strávil převážně opravami těchto chyb, optimalizací, rozšiřováním komponent a API. Vznikla také spousta méně výrazných komponent jako ovlivnění, páčení zámků, portály, třes obrazovky, databáze overall shaderů, ocenění, házení předměty, cyklus dne a noci a mnoho dalšího. Engine se taky naučil rendrovat jeskyně. Databáze předmětů měla přes 50 předmětů a nově se daly opravovat. Výroba a přidružené možnosti předmětů prošly velkou aktualizací.op6

op7

V commitu 400 jsem uvolnil zcela nové UI enginu, vzdušnější a lépe vypadající, všechny menu a formuláře prošly změnami. Hrdina nově zobrazuje předměty, které má na sobě a inventář dostal další velkou aktualizaci. Mimo jiné umí automaticky porovnávat předměty. Databáze předmětů měla 80 položek.

noname

nonamenoname

noname

A tím jsem došel až k současnému stavu, engine momentálně vypadá přibližně takto. Vývoj samozřejmě pokračuje dál, skoro na denních commitech. Jelikož jsem vcelku spokojen s jeho možnostmi, plánuji v brzké době vložit na Startovač kampaň, ukazující hru, kterou v Simplexu tvořím. Co se marketingu týče, Simplex je duálně licencovaný, dostupný pod GPL3 licencí pro nekomerční projekty a pro studia s komerčními plány je možnost koupit si licenci. Někde okolo commitu 300 se oddělila legacy větev, který je dostupná jak pro komerční tak i nekomerční projekty pod LGPL, ale není aktualizovaná.

Simplex v jádru podporuje GMS1, LGM a naše vlastní SimplexIDE. Momentálně ale probíhá přechod na GMS2, takže LGM nebude v budoucnu bohužel podporováno. Kombinace GML a C# umožňuje velmi rapidní vývoj her. Engine je silně optimalizovaný a použité demo běhá na nejvyšší detaily na středně výkonném počítači na 350 fps, při snížení detailů až 600.

Na závěr přikládám krátké video, které ukazuje něco z nového UI v pohybu: https://www.facebook.com/simplexengine/videos/931553133614095/

Git projektu: https://github.com/lofcz/SimplexRpgEngine

Budu rád za případné komentáře, postřehy či kritiku.