GDS 2013: MonoGame pro Android a iOS, tipy a triky
-
Upload
tomas-slavicek -
Category
Technology
-
view
215 -
download
4
description
Transcript of GDS 2013: MonoGame pro Android a iOS, tipy a triky
Multiplatformní vývoj herpomocí MonoGame
Tomáš Slavíček @tomasslavicek
Agenda
frameworky a MonoGame
Xamarin
krátká ukázka
omezení a specifika platforem
tipy a triky
Herní framework / engine
jednoduchost použití
více platforem
cena
komunita
1.
Míra abstrakce
vlastní řešení framework engine
Mobilní platformy
Unity
XNA + MonoGame
něco dalšího?
Jak je na tom XNA?
vs.
desktop PC
Xbox 360
Windows Phone 7
přehrávače Zune
vs.
desktop PC
Xbox 360
Windows Phone 7
přehrávače Zune
*2004 –
†2012
vs.
desktop PC
Xbox 360
Windows Phone 7
přehrávače Zune
*2004 –
†2012
Windows 8 / RT
Windows Phone 8
iOS, Mac
Android, Ouya
PlayStation
Linux…
MonoGame
velmi aktivní projekt
open-source
kompatibilní většina kódu s XNA
je zdarma*
MonoGame
velmi aktivní projekt
open-source
kompatibilní většina kódu s XNA
je zdarma*Android a iOS nutné
mít licenci Xamarin
MonoGame (XNA)
herní smyčka, Content Pipeline,
operace s vektory…
Hry v MonoGame
Hry v MonoGame
Hry v MonoGame
Hry v MonoGame
Hry v MonoGame
Aplikace v MonoGame
MonoGame technicky
Xamarin
Mono pro Android, iOS, Machttp://xamarin.com
= MonoTouch, MonoDroid
nástroje:
pro Mac i Windows
2.
Xamarin
UI na Android / iOS:
přes Xamarin Studio, nebo MonoGame
Xamarin
placený produkt
pro MonoGame zatím nelze FREE :(
Xamarin
$299 za každou platformu
licence napořád, podpora 1 rok
slevy: studenti $99, univerzity $79
Xamarin.Android (MonoDroid)
Mono je runtime „vedle Dalvika“, psané v C
aplikace kompilovány just-in-time
Xamarin.Android (MonoDroid)
možno volat „.NET funkce“, Android API,
binding na Java knihovny…
př. volání Flurry, ScoreLoop…
Xamarin.iOS (MonoTouch)
aplikace kompiloványdo strojového kódu platformy
opět možný binding na externí knihovny
Xamarin.iOS
nutné mít Mac! :)
Xamarin.iOS
ale lze vyvíjet i z Visual Studia! (pouze v Pro)
Mac stačí mít ve skříni
Xamarin – integrace do VS
Xamarin – integrace do VS
Instalace MonoGame
pomocí instalátoruhttp://monogame.codeplex.com
ze zdrojákůhttps://github.com/mono/MonoGame
3.
branch developstáhnout i ThirdParty/Libs
MonoGame
Content Pipeline
přes XNA, nebo MonoGame
Xamarin Studio + Content Pipeline AddinneboVisual Studio +Windows Phone 7.1 SDK (= XNA 4.0)
MonoGameXamarin.iOS / Xamarin.Android
Ukázka
založení projektu
koexistence XNA a MonoGame
sdílení kódu mezi platformami
#if #endif
MonoGame omezení
Content Pipelinekompilace fontů a textur (přes XNA nebo
MG)
textury pro iOS: jiná komprese
není nutné používat
4.
MonoGame omezení
občas mezery
render do textury (RenderTarget)
ukládání do .png s průhledností
pokročilejší věci (3D grafika)
not implemented exception (u TouchCollection…)
Další omezení
Win Phone 8
změna rozlišení / orientace?
chyba back button
TouchCollection == null ?
Další omezení
Win 8nejde vyhlazování hran
jinak vstup myš / prsty
pozor na DPI
pohlídat si WACK
bit.ly/win8_monogame
Nutné řešit zvlášť
platformově specifické věci
message boxy, systémové dialogyin-app purchases, kontrakty, live-tiles…
ukládání dat
lokalizace do jazyků
Flurry, ScoreLoop
Android: logování chyb
Nevýhody MonoGame
hra nejde naklikat…můžeme se ale dostat hluboko
složitější portacenejde jen kliknout na „exportovat“
open-source :(občas nutné bojovat…
A výhody…
open-source :)můžeme si cokoliv upravit
množství návodů a komunitaXNA = MonoGame
Materiály o XNA / MG
rozcestník na SmartMania.czbit.ly/xna_smartmania
Tipy a triky
jen malá ochutnávka!
zájem o podrobnější seminář?
5.
Např. ukládání dat
IsolatedStorageFile – již v Xamarinu
IsolatedStorageSettings
WP: nativně
Win8, iOS: třída z projektu MoonLight
Android: jinak…
Tipy a triky
IsolatedStorageSettingspro Android (string položky):
pastebin.com/6SpigxFq
Textury bez Content Pipeline
přímo ze streamu (rychlejší, menší soubory)viz článek Jake Poznanski bit.ly/sm_tipy_triky
Textury bez Content Pipeline
textury cachovat!
Textury bez Content Pipeline
a pozor na obnovu po reaktivaci!
př. Android:
event Game1.GraphicsDevice.DeviceReset
všechny textury = nullznovu zavolat LoadContent
ale čekat až „lazy“ v Update!
Obnova po reaktivaci
Ne celý Content hned!
načíst jen to, co se aktuálně kreslí…
v LoadContent jen označit assetNamenapř. do texture.Taglazy načíst až v Draw
Další tipy
načítat textury ve správném DPIpř. 100%, 150%, 200% a 400% (Full HD)
…stejně tak SpriteFonty
není řešeno automaticky
Více rozlišení
pomocný objekt SpriteHelper
interně: pevná šířka displeje
výběr textury / scale na displej automaticky
Další tipy
pozastavovat vykreslováníSupressDraw
pozastavovat herní smyčku :)
Pozastavení herní smyčky
nic se neděje nic nekreslit
rozběhnout:kliknul / drží prst (příp. spustil animaci)
nastal asynchronní event
zastavit:
pustil prst / skončila animace
Pozastavení herní smyčky
úprava MonoGame
AndroidGameWindow Pause(), Resume()
Game.Tick vynulovat elapsed time
TouchPanel.AddEvent TouchChanged(), obnovit
smyčku
Další tipy
určení DPI, rozlišení, typ mobilu / tabletu
iOS: pastebin.com/1ZYZQgjD
Android: pastebin.com/Kc0szXSt
Shrnutí
MonoGame „nástupce XNA“
mobilní hry
Android / iOS: Xamarin
jazyk C#, velké možnosti…
A jak to bylo s XNA?6.
A jak to bylo s XNA?
A jak to bylo s XNA?
blogusa.tumblr.com
A jak to bylo s XNA?
George Clingerman, xnadevelopment.com
Díky za pozornost!prostor pro dotazy
Tomáš Slavíček mail @ tomasslavicek.cz
@tomasslavicek