Natočil jsem sérii webcastů (cca 10-15 minutových videí) o programování her v XNA frameworku. Zmiňuji tam základní principy XNA a na praktickém příkladě popisuji jednotlivé jeho zajímavé vlastnosti. V průběhu těchto 10 dílů si společně vytváříme 2D hru hada, který může sbírat objekty, projíždět stěnami a podobně. Po sebrání jídla se ukazuje animovaná záře, pro vykreslování textu máme naprogramovanou vlastní komponentu.
Tyto webcasty jsem natáčel především pro náš nový web o XNA, na kterém teď spolu s Tomášem Hercegem a Štěpánem Pazderkou pracujeme. Vzhledem k tomu, že se jeho spouštění nejspíš ještě chvíli opozdí, pro velké zájemce je dávám k dispozici už i sem. Jako hosting jsem zvolil Youtube, protože přehrávač z tohoto webu má v dnešní době už skoro každý mobil, existují prográmky pro stažení videa do počítače apod. Doporučuji prohlížet v rozlišení 720p. Odkaz na kompletní Youtube playlist je k dispozici zde.
Obrázky pozadí, článků hada, jídla apod. dávám k dispozici ke stažení zde.
1. díl – XNA obecně
V tomto díle si popíšeme hlavní vlastnosti XNA frameworku. Ukážeme si, jaké hry už v XNA byly vytvořeny, popíšeme si v jakých jazycích a vývojových nástrojích můžeme programovat. Zorientujeme se v prostředí a založíme si nový projekt. Povíme si, co je potřeba udělat, aby naše hotová hra běžela i na jiných počítačích.
2. díl – Herní smyčka, vykreslení obrázku
Tentokrát se pořádně zorientujeme v kódu, popíšeme si herní smyčku. Ukážeme si její využití na praktickém příkladě, vykreslíme si opakující se obrázek na pozadí. Povíme si, co je to Content, popíšeme si vykreslování pomocí SpriteBatch. Ukážeme si, jak změnit velikost okna nebo jak si spustit hru na celou obrazovku.
3. díl – Vykreslování více herních objektů
Začneme si programovat hru, jednoduchého hada, který bude umět projíždět stěnami. Budeme chtít vykreslovat v cyklu více objektů najednou – vytvoříme si novou třídu Sprite. Tu si naimplementujeme. Ve třídě Game1 si potom tyto objekty uložíme do dynamického pole a vykreslíme si je. Ukážeme si také, jak změnit barvu vykreslovaných obrázků.
4. díl – Zpracování vstupu, pohyb objektu
V tomto díle si rozpohybujeme našeho hada, bude se moci pohybovat určitou rychlostí po zadaném úhlu. Vysvětlíme si, jak můžeme podle tohoto úhlu určit jeho novou pozici. Popíšeme si, jak udělat rychlost pohybu nezávislou na snímkovací frekvenci. Naučíme se zjišťovat a posuzovat stav klávesnice. Nakonci si ještě doplníme možnost projíždění hada skrz stěny.
5. díl – Generování jídla, kolize s objekty, animace záře 1/2
Vygenerujeme si několik položek jídla, které bude had sbírat. Ukážeme si, jak pracovat s náhodou, položky budou rozmístěné na náhodném místě a jejich barva bude rovnoměrně od žluté po červenou. Podíváme se, jak si jednoduše můžeme v XNA ošetřit kolize hlavy hada a jídla. Začneme pracovat na objektu animované záře.
6. díl – Animace záře 2/2
Dokončíme si objekt animované záře. Naimplementujeme si metodu, ve které budeme měnit její pozici a velikost. Při kolizi hada a jídla budeme vytvářet nové objekty této záře, ty s již skončenou animací budeme odstraňovat. Nakonec si ukážeme, jak také můžeme měnit její průhlednost a jak se to vlastně dělá od XNA verze 4.0.
7. díl – Komponenty v XNA 1/2
Podrobně si popíšeme, co jsou to objekty GameComponent a DrawableGameComponent, jaký mají vztah s voláním metod třídy Game1 a jak je můžeme využít. Začneme si vytvářet třídu Score, ve které budeme chtít vykreslovat aktuální bodovou hodnotu počtu sebraných položek jídla. Ukážeme si použití dalšího Content Manageru v této komponentě.
8. díl – Komponenty v XNA 2/2, vykreslování textu
Dokončíme si naši komponentu Score. Ukážeme si, jak se v XNA pracuje s textem, jak změnit velikost písma, nebo styl. Povíme si, co je potřeba udělat, aby se nám správně vykreslovaly české znaky. Naši komponentu si ve třídě Game1 zaregistrujeme a otestujeme si její funkčnost.
9. díl – Přidávání dalších dílků k ocasu, následování cesty 1/2
V tomto díle si popíšeme, jak přidávat další dílky k ocasu, aby mířily na správnou stranu. Připravíme si strukturu pro ukládání cesty, kudy had jel. Tuto cestu potom budou následovat dílky ocasu.
10. díl – Ocas – následování cesty 2/2
Dokončíme si implementaci cesty, po které budou následovat dílky ocasu. Popíšeme si metodu, která vrací pozici v případě zadané vzdálenosti od hlavy. Budeme to dělat tak, aby cesta mohla projíždět i stěnami. Nakonec si ošetříme kolize hlavy s ocasem a ukážeme si, jak si můžeme jednoduše spustit novou hru.