TOPlist

MonoGame: Úvod do platformy, vývoj pro Windows Phone 8 (1. díl)

V úvodním článku nového seriálu se seznámíme s herním frameworkem MonoGame a podíváme se na novinky ve Windows Phone 8 z hlediska vývoje.

Určitě pamatujete, jak zde na SmartManii vycházel přibližně před rokem seriál o vývoji her v XNA. V pravidelných článcích jsme si prošli kompletním návrhem jednoduché hry a ukázali jsme si, jak ji upravit pro běh na telefonu se systémem Windows Phone 7. Bylo zde k vidění mnoho tipů i zajímavých triků. Někoho mohlo mrzet, že pomocí XNA Frameworku bylo možné vytvářet hry pouze pro Windows Phone, počítače, případně herní konzole Xbox 360. V posledním díle tohoto seriálu se nacházelo i krátké zamyšlení nad budoucností XNA.

Od této doby se změnilo poměrně dost věcí. Microsoft uvedl nové verze desktopového i mobilního systému, spolu s novými nástroji a možnostmi pro vývojáře. Přišel nový Windows 8 s novou obrazovkou Start, spolu s čistě tabletovým systémem Windows RT. Také Windows Phone byl povýšen na verzi 8. Událo se obrovské množství inovací. I přesto se ale XNA Framework dostal poněkud do pozadí. Pro Windows 8 nebyla vyhlášena jeho přímá podpora, měli jsme si vystačit s čistým DirectX a jazykem C++. Stejně tak na Windows Phone 8 bylo XNA sice určitým způsobem ponecháno, ale jen přes zpětnou formu kompatibility s WP7 aplikacemi (více o tom v další části článku). Microsoft uvedl, že se bude soustředit především na kvalitní základ (DirectX 11), ale vytvoření dalších frameworků a enginů nechá na ostatních. Podporu pro Windows 8 a WP8 ohlásilo například Unity, GameMaker Studio, nebo Cocos2d-x engine.

 

S tím, že by mělo XNA odejít do ústraní, se ale nedokázala smířit komunita. Vždy bylo příjemnou technologií, ve které šlo tvořit jednoduché hry s poměrně malým úsilím. Používalo se i pro výuku vývoje her na mnoha vysokých školách. Programátor byl odstíněn od nízkoúrovňových věcí, ale pokud chtěl, mohl se do určité hloubky dostat (vzhledem k tomu, že XNA bylo jen slabou obálkou nad DirectX 9).

MonoGame

Začal se tedy významněji rozvíjet projekt MonoGame. Ten si kladl za cíl vytvořit API co nejvíce kompatibilní s XNA verze 4.0, které by ale bylo možné používat i na ostatních platformách. Postupně tak vznikl port na Linux, Android, dokonce i na Mac OS nebo iOS. MonoGame bylo postupně naportováno i na Windows 8 a Windows Phone 8, tomuto rozvoji hodně pomohli například autoři her Infinite Flight a ARMED!.

 

MonoGame je tedy opensource alternativou k XNA. Je to projekt s velmi aktivní komunitou, který otevřel herním C# vývojářům přístup k dalším platformám. Už když si poprvé založíte MonoGame projekt, uvidíte, že vypadá prakticky stejně, jako výchozí šablona XNA. Dokonce i “usingy” nahoře jsou nadepsány XNA.Framework (i když se už odkazují na MonoGame). Veškerý kód naší herní logiky může zůstat stejný, případně jen s drobnými změnami. Jediné, co je nutné řešit, jsou specifické vlastnosti jednotlivých platforem, jako například jak ukládat data, jak zobrazovat systémové dialogy, nebo jak přepínat rozlišení podle velikosti displeje a orientace telefonu.

 

Postupně si nyní projdeme jednotlivé platformy a shrneme si, na co bychom se u každé měli připravit. V tomto díle se podíváme na Windows Phone 8, příště si shrneme Windows 8 a další platformy. Následně si projdeme samotnou instalaci MonoGame (která nemusí být tak zřejmá, jak se na první pohled zdá) a podíváme se na hlavní rozdíly MonoGame a XNA. V MonoGame zatím například nemáme k dispozici například plnohodnotnou Content Pipeline. V dalších dílech se podrobněji vrátíme k Windows 8 a k dalším jednotlivým platformám.

Windows Phone

Pro Windows Phone verze 7 zůstává styl vývoje beze změny. Používáme SDK verze 7.1, aplikace píšeme v Silverlightu, hry v XNA Frameworku. Vývojové nástroje máme k dispozici zdarma, každoroční poplatek na Marketplace stojí 99 USD, studenti registrovaní na DreamSparku nemusí platit nic. Roční předplatné zdarma mají také účastníci BizSparku, přístup v ceně je i pro majitele MSDN a TechNet předplatného.

 

Windows Phone 8 vypadá navenek podobně, všimneme si jen rozdílu, že nám k základnímu rozlišení obrazovky 800×480 přibyly ještě 1280×720 a 1280×768. Uvnitř systému se ale událo hodně změn. Máme dvě možnosti, jak vytvářet aplikace. Buď použijeme staré SDK 7.1 (a technologie Silverlight nebo XNA) a aplikace nám poběží v režimu zpětné kompatibility, nebo projekt převedeme na nové SDK 8.0.

SDK 7.1

Pokud zůstaneme u starého SDK 7.1, měli bychom se připravit na několik omezení. Hra vytvořená v XNA bude přesně taková, jako bychom ji spouštěli na WP7. Bude mít napevno nastavené rozlišení na 800×480 (roztažený obraz do krajů), nepůjde změnit podle HD rozlišení nových mobilů. Na telefonech s jiným poměrem stran (například HTC 8X) budou navíc nahoře a dole černé pruhy. Některé aplikace z SDK 7.1 se také můžou na WP8 zobrazovat chybně (především Silverlight/XNA hybridní projekty), je potřeba je raději předem otestovat na reálném telefonu.

Můžeme zde ale doplnit určitou funkcionalitu navíc. Používá se přístup pomocí reflexe, pokud naše hra poběží na WP8, můžeme využívat například in-app nákupy, viz video návod. Z tohoto starého SDK 7.1 ale nepůjdou volat taková API, která vyžadují nové WP8 capabilities (například přístup k NFC nebo k SD kartě). Musíme si uvědomit, že pořád kompilujeme vůči WP7, nemáme je tam jak přidat. Tyto in-app nákupy a další doplněné funkce budou také fungovat opravdu jen na WP8, na Windows Phone verze 7.8 a starších nemáme k dispozici potřebné knihovny. Jedinou výjimkou je podpora širokých živých dlaždic, ty můžeme využívat na WP8 i WP7.8.

SDK 8.0

Jako druhou možnost vývoje pro WP8 můžeme použít nové SDK 8.0. To je doporučený směr do budoucna. Microsoft zde poskytl sice jen technologie C#/XAML nebo C++/DirectX, psát hry v XNA už nejdou; právě tady ale využijeme MonoGame. Převedeme si sem náš projekt z XNA, upravíme v něm několik drobností a sestavíme druhý instalační balíček. Hlavně si naši hru zoptimalizujeme, aby dobře běžela na nových vysokých rozlišeních displejů. Naštěstí je možné vytvořit jednu hru v XNA pro WP7 a druhou v MonoGame pro WP8, vygenerovat si dva .xap instalátory a při nahrávání na Marketplace je přiřadit oba k jedné aplikaci. Uživateli se nabídne ta správná instalace, podle jeho konkrétní verze systému v telefonu.

Kdybychom chtěli mít jednu hru dostupnou na WP8 pod free2play modelem (tj. zdarma + s možností nákupů ze hry), ale na WP7 jako standardní placenou hru s trial verzí (protože in-app nemůžeme využít), nepůjde ji vložit na market pod jedním názvem. Cena se určuje pro oba balíčky dohromady a verze pro WP7 by musela být také zdarma. řešením je vložit tam hru dvakrát, jednou například s koncovkou “HD”. Na WP8 jsou v marketplace vidět i všechny WP7 hry (tudíž uživatel by tam viděl obě verze), skrytí jde ale případně vyřešit přes podporu.

Stojí za to ještě dodat, že pro vývoj v novém SDK 8.0 budete potřebovat nainstalované Windows 8 a Visual Studio 2012 (stačí verze Express, nainstaluje se spolu s SDK). Pokud budete chtít používat WP8 emulátor, budete potřebovat přímo 64bitové Windows 8 verze Pro, nebo Enterprise. Je nutné mít aktivovanou hardwarovou virtualizaci (Hyper-V) a zároveň v počítači procesor s podporou technologie SLAT. Tyto podmínky splňují až nové Intely i3 až i7. Procesory Core2Duo nebo levná notebooková Pentium mají bohužel smůlu. Jestli vám emulátor poběží na vašem počítači, si můžete ověřit zde.

V příštím díle se podíváme na systémy Windows 8, Windows RT, Android a iOS, k vývoji pro Windows Phone 8 se ale časem podrobněji ještě vrátíme.

Autor článku Tomáš Slavíček
Tomáš Slavíček

Kapitoly článku