doEngine

Jedná se o engine umožňující jednoduchou tvorbu dvourozměrných her na platformě Android, nicméně lze využít i v aplikacích. Je napsán jako knihovna v jazyce Java a pro vykreslování grafiky využívá OpenGL ES rozhraní. Při jeho návrhu a vývoji byl kladen důraz na extrémní jednoduchost používání a zejména rychlou integraci do jakéhokoliv Android projektu. Engine je výsledkem mé bakalářské práce v roce 2016 při studiu aplikované informatiky / informačních systémů na Univerzitě J. E. Purkyně v Ústí nad Labem.

Možná si říkáš: „Co člověka dovede k tomu vytvořit si vlastní herní engine?“ Odpověď  je sice trochu delší, ale takhle nějak to bylo…

Jako malému klukovi mi Ježíšek přinesl k Vánocům PlayStation (jedna). Hodně času jsem na něm strávil pařením kultovek typu Crash Bandicoot, Spyro the Dragon, Abe’s Oddysee/Exodus, Pac-Man World, Syphon Filter, Medal of Honor, Vigilante 8, Warcraft 2, Tony Hawk’s Pro Skater a mnoha dalších. Samozřejmě jsem už měl i počítač, který byl využíván hlavně pro hraní strategií a adventur jako Stronghold, Earth 2150, Age of Empires, Age of Mythology, Pharaoh, Gruntz (🧡), RollerCoaster Tycoon, Zoo Tycoon, Commandos (💚), Ve stínu havrana, Jazz and Faust, Posel smrti (🖤)… A takhle bych mohl pokračovat do aleluja. Hlavní bylo, že jsem strašně moc toužil po tom vytvořit si nějakou vlastní hru. S vlastními pravidly. S vlastním příběhem.

Jak roky plynuly, čím dál víc jsem si uvědomoval, že vytvořit nějakou lepší hru (kór v té době) není úplně triviální záležitost. Vzpomínám si, že začít s klasickým programováním byl pro mě celkem strašák, a tak jsem zkoušel aplikace typu Game Maker či The Games Factory 2, díky nimž lze vytvářet hry s minimálním umem programování. Přesto ale pro tvorbu nějaké lepší hry byly základy programování nutné, bez jakýchkoliv kompromisů.

Po mnoha pokusech z toho stejně nic kloudného nevzešlo a na programování her jsem na dlouhou dobu zanevřel. Ovšem po tom, co jsem si na střední škole prošel nízkoúrovňovým programováním v assembleru (viz projekt diodových hodin), ocitl jsem se na vysoké škole, kde mě konečně začalo bavit objektově orientované programování – díky assembleru jsem totiž pochopil, jak funguje. No a v tu chvíli jsem si vzpomněl na toho malého kluka, co měl sen tvořit vlastní hry.

Nejvhodnější platformou pro začínajícího vývojáře her se jevil operační systém Android, určitě netřeba sáhodlouze představovat. Obstaral jsem si výukové materiály a mé pokusy započaly! Hodně mi pomohly knihy Android 4, Programujeme pro AndroidProgramujeme hry pro Android 4. Vymýšlel a testoval jsem několik konceptů her, avšak žádnou nedotáhl do zdárného konce. Stále to pro mě bylo velké sousto, celé jsem to zvážil a rozhodl se vydat cestou vytvořit nejdříve jednoduchou androidí aplikaci a teprve potom zkusit nějakou složitější hru.

Z tohoto rozhodnutí se de facto zrodil můj zásadní projekt Převodník jednotek, díky kterému, nebojím se tvrdit, jsem se stal Programátorem. Dokonce jsem Převodníku na to konto věnoval celý vlastní příběh. Po vydání jeho druhé verze mě to ale začalo táhnout zpět k mým milovaným hrám, byl jsem ve druháku na vejšce a shodou okolností mi do života vstoupil Ondřej „Oksi“ Douda.

Oksi byl (a stále je) hardcore programátor, od kterého jsem se spoustu naučil, a který si byl vědom mé touhy tvořit hry. Jednoho dne, díky Bohu, vyjevil zájem o ukázku mých herních prototypů. Samozřejmě mi bylo zkritizováno úplně všechno, ale právě to nastartovalo zrod projektu doEngine.

V každém herním projektu jsem využíval neustále stejných komponent, které umožňovaly právě na základě rozhraní OpenGL ES vykreslovat grafiku hry. Oksi mě, jakožto extra líný člověk (a tím pádem výborný optimalizátor), tlačil do toho, abych tyto komponenty vyňal a udělal z nich knihovnu, kterou následně budu moct využívat ve všech projektech. Dnes bych to takto řešil automaticky, v té době mě to ale prostě nenapadlo, chyběly zkušenosti.

Na projektu jsem následně pracoval asi půl roku, samozřejmě za odborného dohledu rejpala Oksiho. V průběhu vývoje bylo potřeba engine řádně testovat, a tak spatřil světlo světa můj další projekt, moje první publikovaná hra využívající doEngine, Tap to Jump! To se psal prosinec léta Páně 2015, kdy byl mimo jiné nejvyšší čas začít přemýšlet nad zadáním bakalářské práce. A je určitě nadevše jasnější, že doEngine byl tím hlavním a zároveň jediným kandidátem!

Závěrem trocha chlouby – dle slov vedoucího mé práce pana Mgr. Jiřího Fišera, Ph.D. se v té době jednalo o nejčtivější bakalářskou práci, která mu prošla rukama. Takovou poctu, zvlášť  od takové kapacity, jsem upřímně nečekal, s ohledem na to, že jsem práci sepsal za necelé 2 týdny bez jediné konzultace, a to včetně vývoje ukázkové aplikace Spirit Level využívající doEngine.

ukázková aplikace Spirit Level
využívající doEngine