GDS 2013: MonoGame pro Android a iOS, tipy a triky

Post on 27-Jun-2015

214 views 4 download

description

Slajdy z konference GDS 2013 (ČR, 10.11.2013), MonoGame pro Android a iOS, tipy a triky; Tomáš Slavíček

transcript

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