Zkušený programátor Adam Konrád pracoval 4 roky pro Bethesdu a Zenimax. V rozhovoru nám vyprávěl všechno, co potřebuješ vědět o herním vývoji.
Adam Konrád je zručný programátor, který pracoval v herních společnostech jako Bethesda či Escalation Studios. Pracoval i jako nezávislý programátor, kdy vyvinul vlastní hru FPSCORE, a zkusil si i moderování Game Page, přičemž rovněž psal recenze na hry.
Poslední roky strávil v Bethesdě, kde pracoval na Wolfenstein 2, Starfield či TES. V Praze vystudoval SSŠVT a PEF ČZU. Více se o něm dozvíš na jeho vlastní webové stránce.
- Jak vypadá práce programátora v Microsoftu a Bethesdě na titulech jako Wolfenstein, Fallout či Starfield.
- Jak rychle se dá naučit herní programování, pokud již člověk má zkušenosti s programováním.
- O jakých náročných věcech z hlediska programování her nemají hráči a fanoušci pojetí a proč se v hrách nachází tolik bugů a technických chyb.
- Proč se občas dějí frameraty, když padá počet snímků zobrazených na obrazovce za jednu sekundu (fps).
- Co je to herní engine.
Programování jsi také vystudoval. Věděl jsi už tehdy, že chceš programovat videohry?
Rozhodoval jsem se o tom už na střední. Byl jsem velký fanoušek Doom a Quake. S kámošem jsme udělali i fan stránku pro Doom, přičemž tehdy byla akorát ve vývoji trojka. Na základě toho s námi Česká televize udělala i rozhovor.
V té době jsem si přečetl knihu Masters of Doom a o začátcích id Software a vývoji Doom, díky čemuž jsem se chtěl dostat do videoherního prostředí. Pomalu jsem tedy začal pracovat na FPSCORE s Janem Modrákem. Do tohoto průmyslu se spíše dostaneš, když máš za sebou nějaké demo či hratelný projekt.
Kolik vás na FPSCORE dělalo?
Většinu z toho jsem vymyslel a udělal já. Měl jsem nastudován engine z Quake, tak jsme to s Honzou dali dohromady.
Pokud se programátor chce naučit hry, tak do roku by měl zvládnout pohovor v AAA studiu.
Sám jsi to programoval i animoval?
Ze začátku jsem to dělal sám, ale ukázalo se, že prostě nemáš čas či talent naučit se vše o herním vývoji. Díky Honzovi a jeho organizaci jsme však byli schopni dokončit to i s pomocí dalších lidí.
Na Linkedinu uvádíš, že jsi přes dva roky pracoval v České televizi jako moderátor. Co jsi tam dělal?
V ČT jsem však ještě psal recenze a moderoval Game Page.
FPSCORE jsi v té době programoval přes nějaký engine?
Quake 3 vyšel ve dvou vlnách. Nejprve id Software uvolnil na internet celý zdrojový kód hry, takže jsem FPSCORE začal stavět na tom. Šest let po vydání Quake 3 vydal id Software zdrojáky celého enginu, takže jsem se do něj jako programátor ponořil.
Dokázal bys nějakým jednoduchým způsobem vysvětlit, co je to ten herní engine?
Když člověk chce pracovat s počítačem, v úplném základě potřebuje na práci operační systém (například Windows). Herní engine je tomu velmi podobný. Umožňuje nám dělat věci v herním prostředí. Jednoduše dokáže zachytit ten programátorský vstup a měnit jej na výstup, tedy to, co se děje na obrazovce. Dokáže spočítat fyziku či posílat data přes síť.
Můžeme to parafrázovat tak, že když je jakýkoliv herní vývojář zedník, tak engine jsou vlastně jeho nástroje, díky kterým tu práci z technického hlediska může provést?
Ano. Pointa enginu je, že dokáže rychle vytvořit hru.
Když jsi jako programátor ten engine otevřel, bylo to pro tebe známé prostředí, nebo jsi se v něm všechno musel učit nanovo?
Já jsem v té době ani nebyl nějak velmi zručný a šikovný programátor. Všechno jsem se učil za pochodu. Nejvíce jsem se o programování naučil až během své profesionální kariéry. Ten samotný engine byl napsán v klasickém programátorském jazyce C, takže pokud v něm člověk chce něco vykouzlit, ať už to je C, C++ nebo něco jiného, musí ovládat základy toho jazyka.
V čem jsou jednotlivé herní enginy rozdílné? Umíš vysvětlit, jaký je rozdíl mezi Unreal Engine, Unity či Cry Engine?
Mám zkušenosti s Unity, Unreal Engine a různými soukromými enginy od různých firem. Velmi se liší ve stylu, jak jsou napsány, a v úrovni nástrojů. Z Unreal Engine se stal průmyslový standard, který se dá skriptovat v Blueprintu a kód můžeš napsat v C++. Unity je menší a věci se v něm dají dělat rychleji. V Unity píšeš v kódu C# a je třeba v něm dost věcí dopisovat a řešit.
Jak rychle se dá naučit pracovat v herním enginu na úrovni, že můžeš jít dělat do nějakého AAA studia? Řeč je o programátorovi, který předtím neměl s vývojem her zkušenosti.
Myslím, že velmi náročné by to nebylo, když už umí programovat. Bariéra pro vstup do her je pro zkušené programátory nízká. Pokud se programátor chce naučit hry, do roku by měl zvládnout pohovor v AAA studiu.
Čili naučit se dělat hry v případě, že už ovládám programování, je jednodušší než zvládnout samotné programování, ano? Dalo by se říci, že jde o nějakou nadstavbu?
Nadstavba je vhodné pojmenování. V herním vývoji je spousta triků a věcí, které jsou specifické pro herní vývoj, a při jiném softwaru tě to nezajímá.
Hráč může udělat ve hře něco, s čím jsme nepočítali, nebylo to odzkoušené a může mu proto spadnout i hra.
Řekněme, že máš herní engine, který je stavěn na tvorbu stříleček – FPS (First Person Shooter) a chceš vytvořit jiný typ hry, respektive vytvořit v rámci toho FPS něco, co ten engine neumožňuje, protože se specializuje na úplně jiný žánr. Co je náročnější a déle to trvá: upravit ten engine, aby tuto možnost poskytoval nebo je náročnější následně ten herní mechanismus v upraveném enginu vytvořit?
Myslím, že tvorba toho nového mechanismu v upraveném enginu bude náročnější než samotná úprava enginu. Ten mechanismus se musí dokončit a musí být funkční, aby člověk vlastně zjistil, jestli se to do hry vůbec hodí a zda to funguje tak, jak si představoval. Nejjednodušší by to bylo „nafejkovat“. Tedy, že to, co chceš, v tom enginu sice vytvoříš, ale vůbec na to nemáš ideální podmínky.
Co se dozvíš po odemknutí?
- Jak v hrách „fejkují“ jistou situaci a mechanismy.
- Proč vznikají bugy, přičemž často se tomu prostě při vydání hry nedá zabránit.
- Proč občas nečekaně spadne hra nebo framerate, i když máš nejsilnější možnou konzoli a počítač.
- Co přesně dělá programátor při vývoji hry a jak spolupracuje s animátorem.
- Jak řeší konflikty s ostatními programátory, kteří mu chtějí upravit kód podle vlastních představ.
- Jak funguje portování hry na jinou platformu, například z mobilů na Nintendo Switch.
- Zda se mu snadněji vyvíjely hry pro Playstation nebo Xbox a proč.