Date post: | 29-Dec-2014 |
Category: |
Technology |
Upload: | tomas-slavicek |
View: | 922 times |
Download: | 1 times |
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