Vývoj her v C# pro Windows 8 (MonoGame, MS Fest)

Post on 29-Dec-2014

922 views 1 download

description

 

transcript

Vývoj her pro Windows 8pomocí MonoGame

Tomáš SlavíčekMVP XNA/DirectX, MS Student Partner

@tomasslavicek http://tomasslavicek.cz

Agenda

• Windows 8 a MonoGame• DPI a rozlišení• vstup dotykem a myší• …

Agenda

• Windows 8 a MonoGame• DPI a rozlišení• vstup dotykem a myší• ukládání dat, lokalizace• privacy policy, Windows Store

• sdílení kódu mezi WP7, Win8 a PC

Windows 8

• Windows RT• WinRT

• desktop PC• Xbox 360• Windows Phone 7• přehrávače Zune

• desktop PC• Xbox 360• Windows Phone 7• přehrávače Zune

• Windows 8 / RT• Windows Phone 8• PS Vita• Android• iOS, Mac…• Linux…

*2004 – †2012

MonoGame na Win8

• kompatibilní většina kódu

• nutné dále řešit:• orientace zařízení, snapped mód…• kontrakty (sdílení, hledání…), live tiles• ukládání dat, lokalizace• in-app nákupy…

• optimalizace pro tablety

MonoGame – problémy

• různé verze, různé chyby…moje verze: http://bit.ly/monogame_TS

• …

MonoGame – problémy

• různé verze, různé chyby…moje verze: http://bit.ly/monogame_TS

• nutné řešit myš i dotyk zvlášť (+try/catch)• pochybná podpora gest• „jiné“ chování objektu graphics

• …

MonoGame – problémy

• různé verze, různé chyby…moje verze: http://bit.ly/monogame_TS

• nutné řešit myš i dotyk zvlášť (+try/catch)• pochybná podpora gest• „jiné“ chování objektu graphics

• není Content Pipeline• nejsou pokročilé funkce (omezené 3D,

shadery)• občas NotImplementedException

Instalace MonoGame

• pomocí instalátoruhttp://monogame.codeplex.com/

• ze zdrojákůhttps://github.com/mono/MonoGame

Instalace MonoGame

• pomocí instalátoruhttp://monogame.codeplex.com/

• ze zdrojákůhttps://github.com/mono/MonoGame

• branch develop3D• stáhnout i ThirdParty/Libs• pozor na verzi SharpDX (pro Win8

RTM!)• přidání šablony do VS• odzkoušet WACK

Windows 8

• minimálně 1366x768 (příp. 1024x…)• tři různá DPI – 100%, 140%, 180%• portrait, full, snapped mód

Windows 8

Možné způsoby řešení

1. hra vždy v nativním rozlišení2. rozlišení napevno např. 1366x7683. kombinace…

K zamyšlení

• obrázky připravit pro 3 DPI,nebo je roztahovat?

• jak řešit písmo (SpriteFont)?• pozice objektů relativně, nebo

absolutně?• jak s pozicemi dotyků?

• jak přeskládat layout (na výšku, snapped…)?

Ukázka: nativní rozlišení

• událost Window.ClientSizeChanged

• vykreslení obrázku na správné pozici• vykreslení FPS• správná velikost písma! 3x SpriteFont

• nastavení back bufferu• načtení DPI• zapamatování rozlišení

Ukázka: dotyky

• TouchCollection vs. Mouse• v TC jsou jen dotyky prstem, ne myší!

• nutné přepočítávat podle DPI

• gesta raději nepoužívat

Roaming Storage

• soubory, nebo kolekce klíč/hodnota• automaticky synchronizováno mezi PC

Ukázka: RoamingSettings

• vhodné ukládat:nastavení, postup ve hře, nejvyšší skóre…

• limit cca 100 kB• událost DataChanged

var rs = Windows.Storage.ApplicationData.Current.RoamingSettings;rs.Values["tutorialLaunched"] = "true";

Settings Charms

• mělo by zde být:nastavení, info o autorech

• pokud přístup na internet:privacy settings

Ukázka – přidání položky

• objekt SettingsPane• přidávám SettingsCommand

• na každou položku navázat metodu

Privacy policy

• nutné, pokud hra přistupuje k internetu

• odkaz v Settings charms, i na Store

Ukázka: Lokalizace hry

• resources soubory .resw(jako na WP7, ale jiná koncovka)

• načítání přes ResourceLoader

• přepínání jazyka není úplně automatické,není objekt Thread

in-app nákupy

• nákup přímo ze hry• od $1.49 USD

Sdílení kódu

• mezi Win8, desktop PC, WP7, WP8…

• odlišení direktivami#if WINDOWS | WP7#elif WIN8#endif

• ukázka: hra HexaLines

Integrace s XAML

• šablona XamlGame• výhody:

• vykreslování GUI podobně jako v Silverlightu

• načítání vstupu z virtuální klávesnice• možnost odchycení události

„aplikace byla skryta na pozadí“

Další akce

• Tipy a triky pro vývoj her v XNAzítra 15:15, T. Slavíček

• Seminář: vývoj her pro Win8 a WP7,multiplayer pomocí Windows Azure

10. prosince 2012, T. Slavíček, T. Herceghttp://gds2012.ceske-hry.cz/

Děkuji za pozornost!

Tomáš SlavíčekMVP XNA/DirectX, MS Student Partner

@tomasslavicek http://tomasslavicek.cz