Simplex RPG Engine

Ahoj lidičky!

Je škoda, že se na Krevetě poslední dobou nic moc neděje, osobně mám tenhle server moc rád a každý den sem nakouknu, jestli tu není něco nového. Každopádně to za pár dní bude rok, co jsem sem psal příspěvek o „Stylizaci enginu“ (vzpomene si ještě někdo?). Tak jsem si řekl, že vám vypovím pravdivý příběh o tom, co se s mým počinem stalo.

Doufám, že budete následující řádky číst v tak příjemné atmosféře, v jaké je píšu. Je noc, příjemný chlad, což je oproti nedýchatelnému parnu přes den příjemná změna a do uší mi hraje tichá hudba. Co jiného v takový čas dělat, než psát? 🙂

Předně musím říct, že po originálním příspěvku o tomto dílku jsem na něj na nějakou dobu takřka zapomněl a tvořil jsem všemožnosti i nemožnosti v Unity a XNA. Jednoho dne jsem v mírně nostalgické náladě projížděl svůj git a naklonoval si na local složku „Dragon Rise 3“. Na tomto místě nutno podotknout, že jsem si předtím několikrát řekl, že už mám zabugovaného GMS dost a vracet se k němu už nebudu. V ten okamžik jsem ale dostal chuť si jen tak pro radost napsat pár řádků v GML. Někdy v následujících hodinách mě napadlo stvořit Simplex.

Chybí mi domácí indie RPG scéna, hrál jsem Druidovu Forbidden Sagu, Královnu Jezer, Legie a pak takřka nic. Potkal jsem ale spoustu lidí s nápadem nějakou hrdinovku ukuchtit, mnohdy bylo od pohledu jasné, že nemají šanci, ale nemálo bylo i případů, u kterých reálná šance na něco zajímavého byla. Většinou se jednalo o GM / RM uživatele. Díval jsem se, s čím pracují a často jsem se setkal s rozšířením pro GM zvaném YoYoRPG. Nejlepší RPG engine, který je k dostání, za bratrskou cenu dvanácti dolarů a naprosto nepoužitelný. RPGMaker mi přijde navzdory poměrně horké novince MV jako zastaralá, zprofanovaná technologie. Netvrdím, že v tom nejde udělat parádní hru, ale ty hry jsou povětšinou zoufale stejné.

Co takhle přinést na trh alternativu? Takhle vznikla myšlenka Simplexu – enginu, který přinese jednoduchá řešení pro složité problémy a neotřelé pojetí (J)RPGček. To, čeho jsem chtěl dosáhnout a k čemu se stále upínám bych shrnul takto:

Freeware, open-source engine, který bude lepší než RPGMaker + YoYoRPG.  

Psal jsem a psal a nakonec dostal něco, o čem dnes píšu. Vzal jsem ty nejlepší OOP principy, které znám a udělal model komponent, který sedí pro GM. Využil jsem znalosti C# a napsal externí nástroje (autotile, správa textu, generátor animací, generátor cutscén) a přinesl unikátní model tvorby hry přímo za jejího hraní (engine pak uloží soubory, ty se v jiné aplikaci zpracují, konvertují na gmx soubory, GMS problikne a je naprogramováno). Jelikož jsem celý engine napsal sám, všechny komponenty spolu perfektně ladí. Jsou uvedeny co nejvíce do kontextu plné hry, zaobíral jsem se detaily, které podobné enginy vypustily. Jelikož jsem psal od naprostého základu, mohl jsem implementovat featury, které jsem chtěl v RPG hrách vždycky vidět, ale dostupné enginy je neumí. Namátkově naprostou interakci s mapou, kde jde rozsekat každou trávu (generuje příslušné eventy) a navíc reaguje na stav dění, například když hráč sešle ohnivé kouzlo, shoří, takto se může zapálit celý les. Na to pak reaguje nedaleká vesnice, najednou je nedostatek dřeva (další les je daleko), poptávka jde nahoru. Hráč prodá své zásoby dřeva. Chtěl jsem minimalizovat statičnost hry, svět podle mé koncepce co nejvíce „dýchá a žije“. To rozšiřuje obzory úkolů, taky máte po krk questů typu: „Zabij pět slimáků a dones mi sliz, který z nich vypadne?“. Co takhle: „Postav mi plot, který shodila bouřka a posekej mi zahradu, jako odměnu tě naučím klepat kosu.“ – Odemkne crafting upgrade. Celý quest je dynamicky generovaná událost, kdy svět reaguje na změnu počasí. Questy typu: „Jdi a zabij tuhle osobu“ můžeme proměnit v „Jdu, rozhodnu se co udělám (zabít | promluvit si), v druhém případě si ji vyslechnu, požádá mě abych zabil originálního zadavatele, toho pak můžu vydírat, rozhodnout se komu budu v případě sporu věřit.“ Systém je dělaný přesně na tohle. Kromě toho města žijí. Postavy používají GOAP algoritmy a databáze, aby se město proměnilo v živoucí bytost. Nástroj flow chart umožňuje visualisovat vztahy mezi jednotlivými obyvateli města a realtime je upravovat. Crafting systém na bázi receptu skládajícího se z typu materiálu, jeho počtu a slotů umožňuje hráči vytvořit si předměty na míru – specializovaný build, tyto materiály generují bonusy a to vytváří v kombinaci se stack systémem možnost v pěti řádcích kódu vyjádřit toto: „Hráč po úspěšném zásahu soupeře umístí stack „plíživé smrti“, při dalším útoku do zad soupeře se všechny stacky spotřebují a způsobí n^2 bodů poškození (stack má životnost 4s, při dalším stacku se timer resetuje). Hráč tedy nahituje soupeře, poté se přemístí za něj a uštědří finální úder. Nejobyčejnější předdefinovaný slimák umí skákat, řetězit skoky, léčit se, vrhat sliz. Vše v lákavém visuálním kabátku. Hráč blokuje / páruje nepřátelské útoky, metá kouzla, celý bojový systém působí strašně živě a je naprosto skill based. Hráč posbírá loot, vylepší si materiály, padne soumrak a bludičky v lese se ho světlem snaží nalákat do temného lesa, kde v noci vylézají z vody topivci. Pamatujete si klasické animované tily pro vodu? Perlin noise generovaná voda se převaluje po obrazovce v reálném čase s GLSL počítanými stíny přímo dýchá. Overlay efekty jsou obecně vyjádřeny shadery, takže po obrazovce se opravdu může převalit kus slizu, naprosto plynulé přechody do vzpomínkových sekvencí a zpět. Hráč si vylepšuje své talenty, kouzla, háčkuje truhly a zámky, rozšiřuje svůj bestiář, plní questy s krásným UI, které umožňuje přidávat záznamy k danému úkolu. Hledá zajímavé lokace na minimapě, kam mu tu a tam může někdo vyznačit pozici zajímavého pokladu, zkoumá jeskyně, používá portály… to byl hrubý náhled do toho, s čím engine přichází. To všechno mi na středně výkonném počítači běhá na 300-400 fps. Dokonce i stromy se lehce kývají v větru. Pro vývojáře je toto všechno velmi lehce spravovatelné pomocí skriptů, které se k dané komponentně vážou. Co chce, může vypnout, pozměnit, upravit.

Tohle jsem udělal a pořád přidávám nové možnosti. Píšu kompletní dokumentaci + tutoriály, kód je silně komentovaný a nedávno jsem spustil i YT kanál.

Dnes jsem se dozvěděl, že na Simplexu vyvíjí hru jedno malinké studio, už mají velký kus práce za sebou a rozjetou kampaň na Startovači (cíl pouze 10 000), která vypadá slibně, to mě opravdu velmi potěšilo. https://www.startovac.cz/projekty/fate-of-hero/

Repositář projektu: https://github.com/lofcz/SimplexRpgEngine

YT Kanál:

https://www.youtube.com/channel/UCCDT5l4gglPpFB_tEZd5c7Q

FB Stránka:

https://www.facebook.com/simplexengine/

Pro visuální představu Insights video z posledního commitu:

Momentálně mi jeden člověk chystá profi promotional video, sice v angličtině, protože na zahraničních fórech je o Simplex velký zájem, ale to snad nikdo z našinců neodradí.

Jsem opravdu rád, že pracuji na neziskovém softwaru, na kterém vznikne snad co nejvíce rpgček. Díky za pozornost a doufám, že se ti čtení líbilo. Rád si přečtu komentáře a pokusím se odpovědět na případné dotazy.

Pokud se ti milý čtenáři to, co dělám líbí, můžeš podporu vyjádřit palcem / sdílením / odběrem libovolného z nabídky, která je bezesporu široká (snad mi to odpustíte).