Absolvent informatiky na Matfyzu Jakub Koucký v rámci své bakalářské práce vytvořil platformu, která vývojářům usnadní tvorbu síťových her. „Stávající možnosti pro vývoj síťových počítačových her jsou omezené. Neexistuje příliš frameworků, které by síťování přímo obstaraly za vývojáře. Rozhodl jsem se proto jeden takový vytvořit,“ říká mladý vývojář. GameNewt, který využívá speciální techniku, je dostupný pod otevřenou licencí a Jakub ho chce v budoucnu využít při tvorbě vlastní počítačové hry.

Mohl byste stručně představit svou práci?
Ve své práci jsem se snažil usnadnit vývojářům tvorbu síťových her (hry, které se hrají zároveň na více počítačích). Za tímto účelem jsem vyvinul framework, který síťovou stránku hry obstará za vývojáře. V práci popisuji, jaká rozhodnutí vedla k jeho návrhu, a nabízím dokumentaci pro uživatele a pro případné další vývojáře.
Zásadní je, jak framework zajišťuje přenos hry napříč počítači. Představte si, že s někým hrajete korespondenčně šachy. Když budete soupeři psát o svém dalším tahu, napíšete mu například, že váš tah je „pěšec na C3“. Soupeř si sám dále domyslí, jak váš tah hru ovlivnil. Do dopisu není potřeba psát pozice všech figurek, protože je jasná ze vstupů hráčů. Můj framework používá podobný princip, kde síťové pakety obsahují pouze informace o hráčových vstupech. Jedná se o známou techniku zvanou deterministická replikace, která se však nevyužívá zcela běžně.
Co vás inspirovalo k tomu zaměřit se právě na toto téma?
Jednalo se o osobní zklamání nad možnostmi pro vývoj síťových počítačových her. Zdálo se mi, že neexistuje příliš frameworků, které by síťování přímo obstaraly za vývojáře. Herní vývojáři dnes spíše využívají nízkoúrovňové knihovny, které poskytují posílání zpráv. Takto mají větší kontrolu, avšak domnívám se, že v řadě případů je to zbytečné. Přál jsem si řešení, které bych mohl sám využít, když bych síťovou hru chtěl vytvořit.
Můžete vysvětlit, jaký konkrétní přínos nebo využití má vaše práce?
Výstupem je framework, který je možné využít k vývoji řadě typů síťových her. Je dostupný pod otevřenou licencí, která dovoluje jakémukoliv vývojáři framework využít nebo na něj navázat. Osobně to plánuji, až budu vlastní síťovou hru vyvíjet. Domnívám se, že se jedná o jediný open-source odladěný framework tohoto typu pro platformu .NET.
S jakými technologiemi jste pracoval a jaké metody jste využíval?
Projekt je postaven nad moderní platformou .NET 8 a naprogramován je v jazyce C#. Záměrně na dalších technologiích projekt nezávisí, aby byl použitelný ve všemožných herních projektech. Platformu .NET jsem zvolil, protože se jedná o jednu z vedoucích platforem pro vývoj her, která podobný framework do té doby neměla.
Co bylo během psaní práce nejtěžší? Je něco, co byste zpětně udělal jinak?
Nejnáročnější pro mě bylo napsat samotný úvod do tématu, téma síťování ve hrách je velice široké a je třeba tedy v práci představit řadu konceptů, které čtenář nezná. Důležité bylo rozpoznat, co bylo možné vynechat. Kdybych úvod psal znova, pokusil bych se ho ještě zkrátit.
Jakým způsobem jste ověřoval výsledky své práce?
Komponenty frameworku, u kterých to bylo možné, jsem zkontroloval unit testy. Dále jsem podrobně framework testoval integračními testy, u kterých jsem kontroloval správnost chování u falešných her za různých síťových podmínek. Výsledky integračních testů v práci na závěr rozebírám.
Co považujete za nejdůležitější výsledek nebo závěr své práce?
Řekl bych, že kromě samotné knihovny je důležitým závěrem práce to, že se jedná o validní přístup k vývoji síťových her, na kterém by se dalo dále stavět. Můj framework je momentálně velice izolovaný, stálo by za zvážení ho integrovat s dalšími herními technologiemi. Domnívám se, že je zde potenciál pro nový herní engine, který by prostředky frameworku měl v sobě zabudované.
Máte pocit, že vaše práce může být inspirací pro další studenty nebo odborníky v dané oblasti?
Ano, domnívám se, že v práci předkládám alternativní pohled na to, jak by se dalo přistupovat k vývoji síťových her, což by mohlo být pro síťové vývojáře inspirací přistoupit k síťování jinak. Dále se domnívám, že má myšlenka herního engine by mohla taktéž potenciálně někoho zaujmout.
Jaké máte plány do budoucna?
Momentálně zvažuji, zda by bylo možné vytvořit prototyp zmiňovaného herního engine v rámci své diplomové práce. Dále bych rád v rámci jiného projektu framework vyzkoušel v praxi.
Odkazy:
GameNewt –
framework pro replikaci stavu v multiplayer hrách s využitím
determinismu
GitHub