29. října 2017 8:50

Sixteenia #1 - Přednáška o MonoGame

Někdy v druhé polovině března, když jsem měl plné ruce práce se školními projekty, bakalářkou a ještě bych při tom měl pracovat na NewCMS, tak jsem si vymyslel ještě něco navíc - prostě to jsem celej já - pokud je hodně práce, proč si nevymyslet další.

Po jedné přednášce do předmětu o jazyku C# následovala dobrovolná přednáška od externisty. Když už jsem tam dvě hodiny seděl a programoval jsem si NewCMS, tak jsem si řekl, proč tam ještě hodinku nezůstat - sedí se tam dobře a třeba se dozvím něco zajímavého. A dobře jsem udělal.

Přednáška byla o frameworku MonoGame - nástupci XNA frameworku od Microsoftu pro vývoj her v C#. V jazyce C# jsem už několik her naprogramoval, ale všechny jsem dělal ve WPF, které opravdu pro vývoj her není určené. O XNA jsem věděl, ale WPF pro mě bylo bližší - asi hlavně proto, že předtím jsem měl zkušenosti pouze s HTML+CSS, čemuž je WPF docela podobné. A vlastně na ty hry, které jsem v té době programoval, to bohatě stačilo, i když u Lojzika jsem už narážel na limity, kde jsem musel problém výkonu vyřešit trochu lišácky - kromě postav a diamantů byly všechny mapy levelů tvořeny pouze dvěma obrovskými obrázky - popředí a pozadí.

O XNA jsem sice zhlédnul pár tutoriálů na YouTube, ale nikdy jsem si opravdu nezkusil v něm něco naprogramovat. Navíc Microsoft vývoj XNA ukončil, a tak jsem o něj ztratil zájem úplně. O existenci MonoGame jsem netušil. A to tato přednáška změnila.

Měli jste někdy po tom, co jste se dozvěděli novou věc, pocit typu: "Jak je možný, že o tom už k***a nevím dávno?" Přesně takový pocit jsem měl, když jsem se na té přednášce dozvěděl o MonoGame. Microsoft sice vývoj XNA ukončil, ale MonoGame navázalo přesně tam, kde XNA skončil. Má stejné API jako XNA, ale na rozdíl od XNA je multiplatformní. A co je pro mě nejdůležitější, umožňuje v C# (podle mě velice programmer-friendly jazyk) a jednoduchém frameworku snadný vývoj her. A hlavně 3D her.

Asi první věc, kterou jsem naprogramoval a která opravdu stojí za řeč, byla Hra Hledání min. Několik týdnu před tím, než jsem ji udělal, jsem hodně Hledání min hrával. A tehdy jsem poprvé pocítil takovou programátorskou profesní deformaci - když používám nějaký program, nebo hraju nějakou hru, začnu přemýšlet nad tím, jak je asi udělaná. A někdy se to dostane až tak daleko, že dostanu chuť to sám naprogramovat. Navíc to pro mě byla obrovská výzva, protože jsem věděl, že s tehdejšími znalostmi na to nemám. A na konec jsem se do toho pustil a díky tomu jsem se naučil mnoho nových užitečných věcí. Podobně to bylo i s Elfánií, nad kterou jsem přemýšlel dokonce ještě před Hledáním min a s minimálními znalostmi o programování (a doslova nulovými o PHP, ve kterém je Elfánie naprogramována). Byla to pro mě prostě výzva, kterou jsem si sám vytvořil, sám jsem ji přijal a sám splnil. Podobnou výzvou pro mě byl i Lojzik, hlavně jeho JS verze, kterou jsem nikdy nedokončil - když jsem začínal dělat C# verzi, tak jsem už tak nějak věděl, do čeho jdu.

Programovat mě vždycky nejvíc bavilo takové výzvy, u kterých mám na začátku pocit, že na to nemám, ale snažím se překvapit sám sebe. Po dokončení Lojzika jsem dlouhou dobu nápad na další výzvu neměl - o všem, co jsem od té doby programoval, jsem věděl, že na to mám. A podle toho to také vypadalo - buď jsem mé projekty nedokončil (Elfánie v2, Hraboš Bohouš), nebo i když jsem je dokončil, pocit úspěchu se nedostavil (Kalendář).

Ale už asi plus mínus 3 roky mám chuť naprogramovat novou hru, která pro mě opět je výzvou. Je to totiž 3D hra. Časem jsem pro ni určil jméno Sixteenia. Baví mě programovat hry, ale mám jeden problém - jako grafik jsem neschopný. Navíc u 3D hry bych musel být i modelář. Takže programování vlastních 3D her bylo pro mě takové tabu. Vlastně až na jednu hru. Jednu hru, u které bych zvládl grafiku i modely. Minecraft. A přesně něco takového bych chtěl naprogramovat.

A přednáška o MonoGame mi k této vizi otevřela dveře. O programování 3D grafiky jsem toho doposud moc nevěděl a díky jednochosti API MonoGame jsem dostal příležitost začít tuto neznámou oblast prozkoumávat. Už dříve jsem se pokoušel o vykreslení grafiky s knihovnou OpenGL, ale u OpenGL je potřeba desítky řádků kódu i pro vykreslení jednoho jednoduchého trojúhelníku, přičemž pochopení toho množství funkcí, které jsou k tomu potřeba, pro mě bylo prostě příliš. U MonoGame je to o několik řádů jednodušší a díky tomu pro mě, jako pro začátečníka, mnohem lépe pochopitelné.

I přesto, že pro mě byla přednáška opravdu zajímavá, jsem se cca od půlky strašně těšil, až skončí, a budu moct jít na kolej, kde si sám MonoGame vyzkouším.

Hodnocení

Celkové hodnocení
4 hlasy
Vaše hodnocení
Vyberte počet hvězdiček

Komentáře

Jméno:
Předmět:
Komentář:
  :):-|:P:D;):(8)[evil][arrow][idea][?][!]
Kontrola:
Žádné komentáře.
© 2011 - 2018 SuperMartas a Tomáš Hypeš