S Martinom Vodák nielen o 3D engine
Dnešný rozhovor bude s Martinom vodákov, programátorom, ktorý sa venuje najmä 3D grafike, herným enginům a problematike s tým spojené.
Ahoj Martine, mohol by si sa nám predstaviť a povedať odkiaľ si a čím sa teraz zaoberáš?
aha, to sme už v éteri
safra safra
* Nasadil umelý úsmev *
Dobrý deň pán redaktor. A vy všetci čo to budete čítať, už teraz vás i
ľutujem.
Áno, volám sa Martin, som moravský jihočech bývajúci na východe v
Pardubiciach. Momentálne študujem ako inak než informatiku na FEI UPa (ale
nikto tomu nepovie inak nie UPCE).
Koľko mi je? No už sem počul: "pane, na to ste starý", ale predpokladám,
že to bude ešte horšie. Zabejvám s množstvom vecí, ale na ne asi dôjde
neskôr.
Ako školu hodnotíš, prípadne čo si tam pochytil zaujímavého?
No mám to trochu zložitejšie. Je to vlastne moja druhá vysoká škola. Nemá cenu zastierať, že ma v prahe vyhodili. Je to predsa normálne a bežné že sa človek pomýli a zle si vyberie. Teraz som tam už druhým rokom a zdá sa, že sa ma len tak nezbavěj. Moc nového som sa ani neodzvěděl, lebo som hrdým absolventom slaboprúdové elektrotechniky. Konkrétne výpočtovej a automatizačnej techniky, takže mám už zo školy tak trochu povedomie o tom, že v počítači sú aj nejaké tie tranzistory. A že tam nie je len grafická karta a procesor a že čím väčšie číslo pred GHz, tým je lepší.
Nijako nechcem znevažovať iné školy kde sa učia takzvaná informatika. Trebárs na obchodnú akadémiu to znie veľmi čudne. Ostatne na VŠE tiež. Ovšem môj náskok oproti zvyšku miznú rýchlejšie a rýchlejšie. Docela by som povedal, že to zaujímavé ma čaká už v tomto semestri. Nu uvidíme.
Zaměřuješ sa v programovaní najmä na oblasť 3D grafiky, to nie je úplne obvyklé. Ako si sa k tomu vlastne dostal?
To že to všade cpu neznamená že robím len to Ako snáď každý sem chcel mať tú svoju dokonalú a úžasnú hru. Ktorá bude ako inak než najlepší na svete s tými úplne najlepšími možnostma, ktorú budú všetci pariť. Tento cieľ mám niekde medzi obstaraním osla a postavením svojho počítača z treba TTL logiky. Všetky moje ciele, čo je celkom divné, sú pre moje okolie strašne podivné. Čoskoro zakaždým zisťujem, že na nich sám nemám.
Si povestný tvorbou vlastného 3D enginu, o ktorom si dokonca napísal rozsiahly miestnej seriál. Môžeš nám povedať hlavné prínosy a oblasti, ktoré tento engine rieši za programátora?Engin ma prekvapuje svojou použiteľnosťou. Je síce fajn mať engin, ale ak nebude aplikovateľný na nejaký problém, tak je k ničomu. Teraz momentálne píšem ony 3 hry do súťaže Devbookátor? Ukazuje sa, že celkom dobre slúži. Komponenty sú veľmi výhodné a sú kľúčom k úspechu, aj keď nie sú samospasiteľné. Najväčší problém je, že komponenta nemôže mať svoje ďalšie komponenty. Ale i toto tabu som už prekonal. Veľmi si taky cením kolízií. Nie sú dokonalé, ale systém všetko rieši za nás. Stačí len pridať komponent (opäť komponent) a okolo modelu sa všetko vypočíta, umiestni a koliduje ako má.
Zatiaľ ale nevie veľa potrebných vecí. Chýba svetla. Optimalizácie. Naozaj nie je nutné vykresľovať všetky komponenty teda aj tie, čo nie sú práve vidieť v danom pohľadu kamery. A tiež nejaké efekty by sa hodili. Hmla, rozmazaniu, depth of field a podobne. Rozhodne nie som sa písaním u konca. Dokonca by som aj povedal, že teraz všetka sranda začína.
Aké technológie k tvorbe enginu používaš?
Jedným slovom svoje.
Mám na mysli programovací jazyk, knižnice, algoritmy ...
Bez XNA by to nešlo. Dosť sa inšpirujte různejma vecami na internete. Snažím sa je vždy k článkom odkazovať, aby byo zrejmé, že to nie je len z mojej hlavy.
Jazyk je jasný C# a vodáčkovština. Väčšinu vecí vymyslím tesne predtým, než du spať. Podľa mňa je to najlepšia doba pre premýšľanie vôbec. Keď už sa bavíme o takýchto veciach, tak by som rád pridal to, že vôbec nehodlám robiť niečo podľa návrhových vzorov. Jednak je nepoznám, a áno, možno to je chyba. A stále viac zisťujem, že je používam veľmi intuitívne. Všetky riešenia sú moje a áno, nie sú určite ideálne. Zato môžem povedať, že im rozumiem a viem presne čo sa vo vnútri deje. Môžete toto povedať aj u návrhových vzorov? Trebárs aj u toho MVC? Koľko debát bolo pod článkom o tom čo kam do akej časti patrí. No povedal by som že dosť.
Aký máš názor na budúcnosť platformy XNA po príchode Windows 8? Často sa hovorí o tom, že je XNA mŕtve.
S XNA je to zlé. Ale nie nič čo by sa nedalo prežiť. Na Windows 8 si zjavne už neškrtneme, čo je dosť škoda. Ale flintu do žita by som nehádzal. Je tu MonoGame. Nie je to nič iné, než že sa partia ľudí zišla a píšu XNA znova. Tentokrát ale is podporou OpenGL a tým sa otvárajú nové možnosti aj na mobilných platformách. Už čoskoro bude stačiť jeden kód aplikácie pre Windows Phone, Android aj pre načali jablká. Budúcnosť leží zdá sa tu a prechod je z XNA 4 dosť jednoduchý. Skúšal som bludisko zo článkov na Androide, prakticky stačilo len urobiť nový projekt a nakopírovať do neho súbory. A výsledok je vidieť na obrázku.
MonoGame ale rozhodne nie je v súčasnosti úplne hotové. Chýba vytváranie xnb súborov s predpripravenými modelmi, textúrami a zvuky.
Ale tomu môže pomôcť každý, stačí navštíviť GitHub a poslať svoje zmeny. https://github.com/mono/MonoGame
Říkáváš "tvorte hru, nie engine" a pritom tvoríš engine : D Ako to teda je?
To je ale podpásové otázka toto. Avšak som myslel pri písaní článkov aj na toto.
Dovolím si citovať, napodobňovanie s novozvoleným prezidentom tu hľadáte úplne dobre:
Nepíšte engine, ale hru.
Chytil som sa tiež Avšak
aby sme hru napísať mohli, nejaký základ potrebujeme a ten sa pokúsim v
nasledujúcich dvoch dieloch vykonať.
* Koniec citácie *
Preto, aby bolo možné tvoriť hru, musíme nejaký ten engin urobiť. Mať niečo, od čoho sa môžeme odpichnúť.
Viem, že tvoj dlhodobý projekt je Život v Rokforte (ŽvB), mohol by si nám o ňom povedať niečo viac?
Je celkom zaujímavé, ako z počiatku malé náhody dokážu ovplyvniť celý život. K projektu sem sa dostal pred piatimi rokmi. To sa písal rok 2007. Už samotný môj príchod bol podivný. Snáď najpodivnejšie, čo tam kedy zažili. Pôvodne som chcel hrať ako hráč, ale nechcelo sa mi čakať. Tak sem si povedal, že by som sa mohol nejako zapojiť. Programovať som nevedel, alebo som si to skôr myslel, že nevedel. Tak som sa prihlásil na miesto stavbárov. To je miesto, kde sa stavia budovy, lokácie a ďalšie veci z jednotlivých častí. Bolo mi však povedané, že je stavbárov moc, skôr si ale myslím, že sa mu (a ja teraz moc dobre viem, kto ma odmietal!) Nechcelo so mnou baviť.
Nevzdal sem sa. Pretože hľadali sKriptaře, teda človeka, čo by písal skript pre emulátor, ktorý hra potrebuje. Lenže to bolo v nejakom podivnom jazyku C# a ja som mal v škole dva mesiace Javu. Našťastie mi o niečo skúsenejší kamarát nakecal, že je to rovnaké ako Java. Tak som sa prihlásil. No aj na todle mňa nezobrali.
Nevzdal som sa ale druhýkrát. Vtedy ešte zháňal učiteľa. Pretože v našej hre prebieha akási výučba kúzelníckych predmetov. Bol potreba učiteľ Astronómia a ja mám dodnes astronómiu veľmi rád a zaujímam sa o nej. Tu som už konkurzom preplával a do tímu sa dostal. A tak sa všetko rozbehlo. Skriptov som napísal za tých päť rokov bezpočetné. Teraz som druhýkrát zvolený zástupcom koordinátora, áno, svoje čelné predstaviteľa si volíme každý rok. Môžem sa teda označiť za druhého najvyššie postaveného člena projektu. Aj keď fakticky som najviac ja, pretože mám prístup úplne všade
O čom teda ŽvB je, koľko hráčov ho hrá a ako to v komunite hry vyzerá?
ŽvB je vlastne shard. Aj keď Shard sa nenazývame. Shard sa rozumie herný server MMORPG multiplayerové hry Ultima Online. Nie je to hra zrovna najmladší, ale za to možnosti jej modifikácie sú úžasné. Nikdy ma neprestane prekvapovať čo všetko ide ešte urobiť. Má to ale aj nevýhody. S klientom nie je prakticky možné nič robiť, len mu strkať novú grafiku a mapu. Zato na servri si môžeme dovoliť všetko.
Počty hráčov sa mení s priebehom roka. Na začiatku školského roka, keď posielame listy (možno sa do hry zapojiť iba 3x za rok), je v hre pokojne aj 80 hráčov, započítame ak i obsluhu. Počet sa postupne znížime ako ľudia zisťujú, že hra nie je pre nich, alebo že majú málo času. Rekord máme 104, bežne možno v hre stretnúť 40 ľudí. Včera bolo 61.
Komunitu máme snáď dobrú. Hráči majú svojho zástanca, čo je inde nevídané. Tento splnomocnenec nám dáva připomnky, podnety a sťažnosti a my sme povinní ich vyriešiť a niečo s tým jednoducho urobiť. Už len toto podľa mňa dosť pomáha k dobrému rozvoju hry.
Čiže trend užívateľov je rastúci? Ako to bude s ŽvB ďalej?
Ani nie užívateľov, ale hráčov. Ale inak nezáleží na počte, ale ich kvalite. Lepšie sa pracuje s cítiacimi dvadsiatimi než s päťdesiatimi ignorantov. Ako som už ale hovoril, počty sú premenlivé, ale konštatovať možno, že vždy príde približne rovnako prihlášok a detí sa v hre objavia taky rovnako. Čo ďalej s ŽvB? Asi tvorba vlastného klienta s čiastočnou podporou tretieho rozmeru pri vybraných miest
U 3D grafiky je treba veľa pokročilé matematiky. V tejto oblasti zrovna nevynikajú, ale tuším, že veľmi často pracuješ s maticami, vektory, prípadne s analytikou. Koľko toho taký programátor 3D hier potrebuje poznať?
Ideálne všetko. XNA našťastie obsahuje veľa metód a tried ktoré majú všetko vstavané Takže stačí len papier a ceruzka situácii si namaľovať. Matematik som veľmi slabý a napriek tomu to ide.
Aké máš plány do budúcnosti? Plánuješ sa živiť vývojom hier alebo je to koníček?To nie je vôbec isté. Čo chcem robiť vôbec neviem. Ale nejako zúročiť všetky tie skúsenosti by bolo asi dobré. Uvažoval sem taky, že by som zostal v škole, ale ešte neviem, nič nie je isté a všetko je relatívne.
Na záver nám ešte povedz aké máš ďalšie záujmy
Ako som naznačil vyššie, mám celkom rád Astronómiu, ale taky čítanie a sci-fi. Pozerám taky na seriály napríklad M * A * S * H, SG-1, SGA, SGU. Riadim sa taky heslom športom ku trvalej invalidite, čo potvrdzuje moje ľavé koleno, s ktorým si jednoducho nie som schopnej kľaknúť.
Ďakujem všetkým čo dočítali až sem a dúfam, že som nenudil a ani príliš nepoburoval. Všetkého tam je snáď tak akurát. Dovidenia nabudúce u ďalšieho článku!