Vyvinout vlastní videohru od prvotního nápadu až po odladěnou demo verzi vyžaduje kombinaci programování, grafiky, hudby i herního designu. Michaela Štolová se v rámci své diplomové práce rozhodla zastat všechny tyto role sama a vytvořila 3D závodní hru na košťatech s názvem Brooom. Její projekt propojuje procedurálně generované tratě, adaptivní umělou inteligenci soupeřů i dynamickou obtížnost s magickým světem kouzel. V rozhovoru popisuje, jak vypadá systematický vývoj hry na Matfyzu, co obnášelo testování na hráčích i proč si za svou práci odnesla první cenu v fakultní soutěži o nejlepší softwarovou diplomku.
Mohla byste stručně představit svou hru?
V rámci diplomové práce jsem navrhla a implementovala demo verzi své vlastní hry. Jmenuje se Brooom a jedná se o 3D závodní hru na košťatech, ve které hráč prolétává obručemi, vyhýbá se překážkám a sbírá různé bonusy (obrázek 1). Navíc může také sesílat kouzla pro ovlivnění průběhu závodu. V sérii procedurálně generovaných tratí se pak setkává se soupeři řízenými umělou inteligencí. Postupně si pořizuje nová kouzla či vylepšení koštěte a zlepšuje své dovednosti s cílem stát se nejlepším závodníkem na světě.
Obrázky
ze hry
Co vás inspirovalo k tomu, abyste se zaměřila právě na toto téma?
Vzhledem ke studiu oboru zaměřeného na vývoj her byla práce zaměřená na vývoj vlastní hry přímočarou volbou. Obzvlášť mě však lákala možnost vyvinout hru systematicky od počátečního návrhu až po publikovatelnou demo verzi, a to se vším, co k tomu patří. Chtěla jsem si vyzkoušet všechny role účastnící se vývoje her a co největší část vytvořit sama. Ve výsledku jsem tak třeba nakreslila uživatelské rozhraní, vytvořila 3D modely a složila hudbu. Konkrétní návrh hry pak vznikl spojením mých dalších zájmů, jelikož mám ráda různé sportovní či závodní hry a také ráda unikám do všelijakých magických světů v knihách a filmech.
Co vše vývoj hry obnášel?
Snažila jsem se postupovat metodicky. Nejprve jsem sepsala tzv. Game Design Document (GDD), který popisuje plánovanou podobu hry ve všech možných aspektech. Zachycuje např. o čem hra je, co se v ní dá dělat, jak vypadá (obrázek 2) a jak zní. Také jsem analyzovala současný trh, abych se ujistila, že je hra dostatečně originální, a abych načerpala další inspiraci.
Srovnání
počátečního návrhu UI z GDD a finální podoby ze hry
Dále jsem vytvořila velmi jednoduchý prototyp pro otestování a odladění mechaniky létání:
Prototyp mechaniky
létání se zjednodušenými objekty
Následovala implementace všech herních systémů s důrazem na modularitu, rozšiřitelnost a opakované využití komponent. Kromě toho vznikla i řada assetů (3D modely a animace, prvky UI, zvukové efekty) a nástrojů (hra je lokalizována do češtiny a angličtiny, je možné změnit mapování kláves a používat cheaty atd.). Poté jsem hru experimentálně otestovala v uzavřené skupině účastníků a nakonec zapracovala konkrétní zpětnou vazbu.
Co tedy dělá hru jedinečnou?
Hra je jedinečnou kombinací několika různých prvků: Umožňuje volný pohyb ve 3D prostoru. Závody na sebe navazují, přičemž hráč si postupně buduje kariéru a zlepšuje se. Hráč má větší volnost v sesílání kouzel za letu a musí dělat i složitější rozhodnutí. Obtížnost hry je dynamická a přizpůsobuje se hráči a jeho schopnostem. Po každém závodu se ohodnocují hráčovy dovednosti v 5 různých kategoriích a výsledné hodnoty pak ovlivňují obtížnost tratí a úroveň schopností soupeřů.
Jaké jsou zásadní prvky hry?
Levely, neboli tratě umístěné v prostředí (obrázek 4), jsou procedurálně generovány, takže se mohou různé jejich parametry (např. délka, ostrost zatáček) snadno měnit dle schopností hráče. Generátor funguje jako řetězec modulů, z nichž každý je zodpovědný za jednu menší část (např. trajektorii trati, rozmístění prvků prostředí) a všechny společně postupně vytváří celý level. Díky tomu je možné lehce upravit způsob generování konkrétní části.
Ukázka vygenerované
trati (tvořené obručemi) v prostředí rozděleném do několika
oblastí
Soupeři jsou řízení adaptivní umělou inteligencí, která umožňuje přizpůsobit chování schopnostem hráče i aktuální situaci v závodu. Využívá se tzv. rubber-banding, kdy mohou soupeři různě měnit svou rychlost a upravovat míru chyb, které dělají, tak, aby se příliš nevzdálili od hráče a závod tak byl zajímavější. Navíc má každý soupeř pomocí tzv. race script předepsané trochu jiné chování. Hráč navíc může sesílat kouzla, pro která byl navržen flexibilní systém složený z několika komponent. Snadno se tak kouzlům nastavují ikonky, vizuální efekty a potenciální cíle.
Jak náročná je hra pro nového hráče?
V průběhu závodu je potřeba provádět hned několik akcí současně - hráč určuje směr letu, rozhlíží se kolem sebe, vybírá a sesílá kouzla. Součástí hry jsou však také tutoriály, které hráčům začátky velmi usnadní. Jsou rozdělené do několika částí, z nichž každá se spustí až v okamžiku, kdy je skutečně potřeba (např. když hráč vstoupí do prvního závodu, když si pořídí první kouzlo). Navíc jsou převážně interaktivní, a tak hráč musí provést požadovanou akci, aby mohl pokračovat dál.
Jeden krok
tutoriálu zvýrazňující relevantní části obrazovky spolu s popisem.
Můžete vysvětlit, jaký konkrétní přínos nebo využití má vaše práce?
Výsledná práce má své využití v několika rovinách. Samotná hra poskytuje možnost odreagování se a naplnění volného času. Komponenty, které ji pohání, jsou pak navrženy obecně, aby bylo možné je nejen snadno rozšířit a nahradit, ale také využít pro další herní projekty. Díky tomu vznikla kolekce nástrojů (např. lokalizace, audio systém či tooltipy), které mohou budoucí vývoj usnadnit. A nakonec práce poskytuje ucelený pohled na vývoj hry, od designu přes implementaci až po experimentální zhodnocení. Může tak sloužit jako inspirace pro ostatní.
Získala práce nějaká ocenění?
Práce vyhrála první cenu soutěže o nejlepší softwarově orientovanou diplomovou práci na MFF UK a také byla nominována do soutěže IT SPY 2025.
Co bylo během psaní vaší práce nejtěžší?
Vcelku náročný byl vůbec samotný návrh hry, kdy jsem se snažila vše důkladně promyslet a brát v úvahu také to, co jak působí na hráče a jakou variantu vždy zvolit. Během implementace jsem pak narážela především na to, že hra je rozsáhlá, ale čas byl jen omezený. Musela jsem jasně určit priority a v některých případech třeba volit spíše jednodušší, ale pořád dostatečně dobré řešení, abych pak mohla naopak jiné oblasti věnovat větší péči. Bylo třeba smířit se s tím, že nemůže být vše perfektní a jsou potřeba určité kompromisy. Současně ale bylo důležité dělat vše tak, aby se v budoucnu právě tyto kompromisy snadno nahradily promyšlenějšími řešeními. A nakonec bylo náročné finální odladění všech možných parametrů, jelikož je jich spoustu, ale mnohdy mohou i malé změny výrazně ovlivnit hru.
Jakým způsobem jste ověřovala výsledky své práce?
Jakmile jsem měla hotovou větší část hry, oslovila jsem uzavřenou skupinu lidí (složenou z dalších studentů, známých a jejich známých) a provedla s nimi řadu experimentů, kdy si obvykle zahráli hru, prošli interaktivní aplikací nebo vyplnili dotazník. V jedné části jsem třeba vyhodnocovala srozumitelnost ikonek kouzel (obrázek 6) v souladu s principem tzv. Form Follows Function. Zjednodušeně řečeno by mělo být co nejvíce patrné, co jednotlivé ikonky znázorňují a jaký efekt pak mají odpovídající kouzla.
Ikonky kouzel použité ve hře
Dále jsem vyhodnocovala herní prožitek ze hry v 7 různých kategoriích pomocí standardizovaného dotazníku GUESS. Provedla jsem i obecný playtesting, kdy si účastníci volně zahráli hru a poskytli zpětnou vazbu v rámci otevřených otázek. A navíc jsem do hry implementovala také sběr herních analytik, tedy informací o důležitých událostech ve hře. Jejich zpracováním jsem pak mohla ověřit herní návrh. Zjistila jsem třeba, jak se účastníkům ve hře dařilo, jestli byli schopni se přibližovat k cíli hry, zda fungovala dobře dynamická obtížnost hry, která kouzla byla nejvyužívanější apod. Takto posbíraná data jsem navíc zakreslila do několika grafů (obrázek 7).
Graf zachycující
průměrné hodnoty statistik (tj. číselného ohodnocení schopností hráče v několika kategoriích) všech účastníků experimentu po jednotlivých
závodech. Kromě průměru je zakreslen také druhý a třetí kvartil
Co považujete za nejdůležitější výsledek nebo závěr své práce?
V první řadě v tom vidím přínos pro sebe, kdy jsem se mohla ujistit, že dokáži vytvořit vcelku velké dílo, a to i pod tlakem. Samozřejmě je spoustu prostoru pro zlepšení, ale z experimentů vyšlo najevo, že je hra hodnocena vcelku pozitivně a má smysl na ní pokračovat dál. Hodnotná zpětná vazba pak poskytla náměty na další vylepšení i rozšíření hry.
S jakými technologiemi jste pracovala, jaké metody jste využívala, a proč zrovna tyto?
Zcela klíčovým nástrojem je herní engine Unity, pomocí kterého byla celá hra vyvinuta (v jazyce C#). Poskytuje celou řadu užitečných nástrojů, díky čemuž výrazně usnadňuje práci a umožňuje soustředit se více na to, co je specifické pro danou hru. Kromě toho jsem využila např. audio middleware FMOD pro možnost adaptivního audia, které je řízené různými parametry ve hře. Např. zvuky prostředí jsou tak tvořené různými vrstvami, jejichž intenzity jsou určené třeba tematickou oblastí prostředí či výškou nad zemí. K dalšímu zpracování audia jsem využila nástroje jako Audacity či Reaper a pro notaci a export hudby mi posloužil Musescore. Grafická stránka hry vznikla především díky programům Blender (3D modely a animace) a Krita (concept art, prvky UI). Pro analýzu dat a vykreslení grafů jsem použila Jupyter Notebook a jazyk Python s knihovnami Matplotlib a NumPy.
Máte pocit, že vaše práce může být inspirací pro další studenty nebo odborníky v dané oblasti?
Myslím si, že práce může sloužit ostatním studentům jako povzbuzení, že i na škole, jako je MFF UK, lze úspěšně dělat čistě herní diplomové práce. Navíc věřím, že jim může poskytnout vcelku solidní příklad toho, jak se dá k vývoji hry přistupovat a jakým způsobem se dají jednotlivé kroky procesu prakticky provést.
Jaké jsou vaše plány do budoucna?
Rozhodla jsem se, že se vývoji her nebudu věnovat jako profesní kariéře, ale nechám si jej pouze jako koníček. V rámci volného času bych však ráda hru rozvíjela dál. Chtěla bych ještě vylepšit stávající herní mechaniky, ale současně hru rozšířit o další obsah. Asi největší změnou by bylo zavedení režimu hry více hráčů. Dále bych chtěla ještě rozvinout procedurální generování tak, aby byly výsledné levely zajímavější pro tento konkrétní žánr hry a aby mělo okolní prostředí větší vliv na závodníky. Po takových úpravách by bylo navíc žádoucí provést další kolo experimentů, tentokrát již se širší veřejností.
Odkazy:
Diplomová práce: Brooom – závodní hra na košťatech v Unity
Herní stránka: Brooom: Race your way up! by Michelle2
Zdrojový kód: Michelle123211/Brooom
Stránka v soutěži IT SPY: Brooom – závodní hra na košťatech v Unity