1. Vývoj her pro Windows 8
pomocí MonoGame
Tomáš Slavíček
MVP XNA/DirectX, MS Student Partner
@tomasslavicek http://tomasslavicek.cz
2. Agenda
• Windows 8 a MonoGame
• DPI a rozlišení
• vstup dotykem a myší
• …
3. 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
5. • desktop PC
• Xbox 360
• Windows Phone 7
• přehrávače Zune
6. *2004 – †2012
• desktop PC • Windows 8 / RT
• Xbox 360 • Windows Phone 8
• Windows Phone 7 • PS Vita
• přehrávače Zune • Android
• iOS, Mac…
• Linux…
7. 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
8. MonoGame – problémy
• různé verze, různé chyby…
moje verze: http://bit.ly/monogame_TS
• …
9. 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
• …
10. 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
11. Instalace MonoGame
• pomocí instalátoru
http://monogame.codeplex.com/
• ze zdrojáků
https://github.com/mono/MonoGame
12. Instalace MonoGame
• pomocí instalátoru
http://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
13. Windows 8
• minimálně 1366x768 (příp. 1024x…)
• tři různá DPI – 100%, 140%, 180%
• portrait, full, snapped mód
15. Možné způsoby řešení
1. hra vždy v nativním rozlišení
2. rozlišení napevno např. 1366x768
3. kombinace…
16. 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…)?
17. Ukázka: nativní rozlišení
• událost Window.ClientSizeChanged
• nastavení back bufferu
• načtení DPI
• zapamatování rozlišení
• vykreslení obrázku na správné pozici
• vykreslení FPS
• správná velikost písma! 3x SpriteFont
18. 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
20. 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";
21. Settings Charms
• mělo by zde být:
nastavení, info o autorech
• pokud přístup na internet:
privacy settings
22. Ukázka – přidání položky
• objekt SettingsPane
• přidávám SettingsCommand
• na každou položku navázat metodu
23. Privacy policy
• nutné, pokud hra přistupuje k internetu
• odkaz v Settings charms, i na Store
24. 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
26. Sdílení kódu
• mezi Win8, desktop PC, WP7, WP8…
• odlišení direktivami
#if WINDOWS | WP7
#elif WIN8
#endif
• ukázka: hra HexaLines
27. 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í“
28. Další akce
• Tipy a triky pro vývoj her v XNA
zí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. Herceg
http://gds2012.ceske-hry.cz/
29. Děkuji za pozornost!
Tomáš Slavíček
MVP XNA/DirectX, MS Student Partner
@tomasslavicek http://tomasslavicek.cz