Skúsený programátor Adam Konrád pracoval 4 roky pre Bethesdu a Zenimax. V rozhovore nám porozprával všetko, čo potrebuješ vedieť o hernom vývoji.
Adam Konrád je zručný programátor, ktorý pracoval v herných spoločnostiach ako Bethesda či Escalation Studios. Pracoval aj ako nezávislý programátor, keď vyvinul vlastnú hru FPSCORE, a skúsil si aj moderovanie Game Page, pričom takisto písal recenzie na hry.
Posledné roky strávil v Bethesde, kde pracoval na Wolfenstein 2, Starfield či TES. V Prahe vyštudoval SSŠVT a PEF ČZU. Viac sa o ňom dozvieš na jeho vlastnej webovej stránke.
- Ako vyzerá práca programátora v Microsofte a Bethesde na tituloch ako Wolfenstein, Fallout či Starfield.
- Ako rýchlo sa dá naučiť herné programovanie, ak už človek má skúsenosti s programovaním.
- O akých náročných veciach z hľadiska programovania hier nemajú hráči a fanúšikovia poňatia a prečo sa v hrách nachádza toľko bugov a technických chýb.
- Prečo sa občas dejú frameraty, keď padá počet snímok zobrazených na obrazovke za jednu sekundu (fps).
- Čo je to herný engine.
Programovanie si aj vyštudoval. Vedel si už vtedy, že chceš programovať videohry?
Rozhodoval som sa o tom už na strednej. Bol som veľký fanúšik Doom a Quake. S kamošom sme urobili aj fan stránku pre Doom, pričom vtedy bola akurát vo vývoji trojka. Na základe toho s nami Česká televízia urobila aj rozhovor.
V tom období som si prečítal knihu Masters of Doom a o začiatkoch id Software a vývoji Doom, vďaka čomu som sa chcel dostať do videoherného prostredia. Pomaly som teda začal pracovať na FPSCORE s Janom Modrákom. Do tohto priemyslu sa skôr dostaneš, ak máš za sebou nejaké demo či hrateľný projekt.
Koľkí ste na FPSCORE robili?
Väčšinu z toho som vymyslel a urobil ja. Mal som naštudovaný engine z Quake, tak sme to s Honzou dali dokopy.
Pokiaľ sa programátor chce naučiť hry, tak do roka by mal zvládnuť pohovor v AAA štúdiu.
Sám si to programoval aj animoval?
Zo začiatku som to robil sám, no ukázalo sa, že jednoducho nemáš čas či talent naučiť sa všetko o hernom vývoji. Vďaka Honzovi a jeho organizácii sme však boli schopní dokončiť to aj s pomocou ďalších ľudí.
Na Linkedine uvádzaš, že si vyše dvoch rokov pracoval v Českej televízii ako moderátor. Čo si tam robil?
V ČT som však ešte písal recenzie a moderoval Game Page.
FPSCORE si v tom čase programoval cez nejaký engine?
Quake 3 vyšiel v dvoch vlnách. Najprv id Software uvoľnil na internet celý zdrojový kód hry, takže som FPSCORE začal stavať na tom. Šesť rokov po vydaní Quake 3 vydal id Software zdroják celého enginu, takže som sa doň ako programátor ponoril.
Vedel by si nejakým jednoduchým spôsobom vysvetliť, čo je to ten herný engine?
Keď človek chce pracovať s počítačom, v úplnom základe potrebuje na prácu operačný systém (napríklad Windows). Herný engine je tomu veľmi podobný. Umožňuje nám robiť veci v hernom prostredí. Jednoducho dokáže zachytiť ten programátorský vstup a meniť ho na výstup, teda to, čo sa deje na obrazovke. Dokáže spočítať fyziku či posielať dáta cez sieť.
Môžeme to parafrázovať tak, že keď je akýkoľvek herný vývojár murár, tak engine sú vlastne jeho nástroje, vďaka ktorým tú prácu z technického hľadiska môže vykonať?
Áno. Pointa enginu je, že dokáže rýchlo vytvoriť hru.
Keď si ako programátor ten engine otvoril, bolo to pre teba známe prostredie, alebo si sa v ňom všetko musel učiť nanovo?
Ja som v tom čase ani nebol nejaký veľmi zručný a šikovný programátor. Všetko som sa učil za pochodu. Najviac som sa o programovaní naučil až počas svojej profesionálnej kariéry. Ten samotný engine bol napísaný v klasickom programátorskom jazyku C, takže ak v ňom človek chce niečo vykúzliť, či už to je C, C++ alebo niečo iné, musí ovládať základy toho jazyka.
V čom sú jednotlivé herné enginy rozdielne? Vieš vysvetliť, aký je rozdiel medzi Unreal Engine, Unity či Cry Engine?
Mám skúsenosti s Unity, Unreal Engine a rôznymi súkromnými enginmi od rôznych firiem. Veľmi sa líšia v štýle, ako sú napísané, a v úrovni nástrojov. Z Unreal Engine sa stal priemyselný štandard, keď sa dá skriptovať v Blueprinte a kód vieš napísať v C++. Unity je menší a veci sa v ňom dajú robiť rýchlejšie. V Unity píšeš v kóde C# a je potrebné v ňom dosť vecí dopisovať a riešiť.
Ako rýchlo sa dá naučiť pracovať v hernom engine na úrovni, že môžeš ísť robiť do nejakého AAA štúdia? Reč je o programátorovi, ktorý predtým nemal s vývojom hier skúsenosti.
Myslím, že veľmi náročné by to nebolo, ak už vie programovať. Bariéra na vstup do hier je pre skúsených programátorov nízka. Pokiaľ sa programátor chce naučiť hry, do roka by mal zvládnuť pohovor v AAA štúdiu.
Čiže naučiť sa robiť hry v prípade, že už ovládam programovanie, je jednoduchšie ako zvládnuť samotné programovanie, áno? Dalo by sa povedať, že ide o nejakú nadstavbu?
Nadstavba je vhodné pomenovanie. V hernom vývoji je množstvo trikov a vecí, ktoré sú špecifické pre herný vývoj, a pri inom softvéri ťa to nezaujíma.
Hráč môže urobiť v hre niečo, s čím sme nepočítali, nebolo to odskúšané a môže mu preto spadnúť aj hra.
Povedzme, že máš herný engine, ktorý je stavaný na tvorbu strieľačiek – FPS (First Person Shooter) a chceš vytvoriť iný typ hry, respektíve vytvoriť v rámci toho FPS niečo, čo ten engine neumožňuje, keďže sa špecializuje na úplne iný žáner. Čo je náročnejšie a dlhšie to trvá: upraviť ten engine, aby túto možnosť poskytoval, alebo je náročnejšie následne ten herný mechanizmus v upravenom engine vytvoriť?
Myslím, že tvorba toho nového mechanizmu v upravenom engine bude náročnejšia ako samotná úprava enginu. Ten mechanizmus sa musí dokončiť a musí byť funkčný, aby človek vlastne zistil, či sa to do hry vôbec hodí a či to funguje tak, ako si predstavoval. Najjednoduchšie by to bolo „nafejkovať“. Teda, že to, čo chceš, v tom engine síce vytvoríš, ale vôbec na to nemáš ideálne podmienky.
Čo sa dozvieš po odomknutí?
- Ako v hrách „fejkujú“ istú situáciu a mechanizmy.
- Prečo vznikajú bugy, pričom často sa tomu jednoducho pri vydaní hry nedá zabrániť.
- Prečo občas nečakane spadne hra alebo framerate, aj keď máš najsilnejšiu možnú konzolu a počítač.
- Čo presne robí programátor pri vývoji hry a ako spolupracuje s animátorom.
- Ako rieši konflikty s ostatnými programátormi, ktorí mu chcú upraviť kód podľa vlastných predstáv.
- Ako funguje portovanie hry na inú platformu, napríklad z mobilov na Nintendo Switch.
- Či sa mu ľahšie vyvíjali hry pre Playstation alebo Xbox a prečo.