Date post: | 02-Jul-2015 |
Category: |
Technology |
Upload: | tomas-slavicek |
View: | 523 times |
Download: | 2 times |
Multiplatformní vývoj herpomocí MonoGame
Tomáš Slavíček
@tomasslavicek
Agenda
frameworky a MonoGame
Xamarin
praktická ukázka
omezení a specifika platforem
tipy a triky
a jak to bylo s XNA…
Herní framework / engine
jednoduchost, rychlost použití
více platforem
cena
komunita
1.
Míra abstrakce
vlastní řešení framework engine
Mobilní platformy
WP, Android, iOS,
PS Vita…
Unity?
XNA + MonoGame?
něco dalšího?
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
vs.
desktop PC
Xbox 360
Windows Phone 7
přehrávače Zune
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)
nadstavba DirectX / OpenGL, jazyk C#
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
Schéma MonoGame2.
Xamarin
Mono pro Android, iOS, Mac
placený produkt
nástroje:
Xamarin Studio, návrh UI…
pro Mac i Windows
Xamarin
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ány
do strojového kódu platformy
opět možný binding na externí knihovny
Xamarin.iOS (MonoTouch)
nutné mít Mac!
Xamarin.iOS (MonoTouch)
ale lze vyvíjet i z Visual Studia!
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.
Instalace MonoGame
pomocí instalátoruhttp://monogame.codeplex.com/
ze zdrojákůhttps://github.com/mono/MonoGame
3.
branch develop
stáhnout i ThirdParty/Libs
pozor na verzi SharpDX
přidat referenci do Visual Studia
Instalace MonoGame
aby fungovala Content Pipeline:
nainstalovat:
Xamarin Studio + Content Pipeline Addin
nebo
Visual Studio Professional / Ultimate +
Windows Phone 7.1 SDK (= XNA 4.0) +
Games for Windows Marketplace Client
MonoGame, Xamarin.iOS / Xamarin.Android
Ukázka
založení projektu
koexistence XNA a MonoGame
sdílení kódu mezi platformami
#if #endif
MonoGame omezení
Content Pipelinetextury pro iOS: jiná komprese
občas mezery
render do textury (RenderTarget)
ukládání do .png s průhledností
pokročilejší věci
not implemented exception (u TouchCollection…)
4.
Další omezení
Win Phone 8změna rozlišení / orientace
chyba back button
Win 8nejde vyhlazování hran
jinak vstup myš / prsty
pozor na DPI
bit.ly/win8_monogame
Nutné řešit zvlášť
platformově specifické věci
message boxy, systémové dialogy
in-app purchases, kontrakty, live-tiles…
ukládání dat
lokalizace do jazyků
logování chyb
Flurry, ScoreLoop…
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
rozcestník na SmartMania.czbit.ly/xna_smartmania
Tipy a triky
jen malá ochutnávka!
zájem o podrobnější seminář?
5.
Tipy a triky
IsolatedStorageSettings
pro Android (string položky):
pastebin.com/6SpigxFq
IsolatedStorageSettings
pro ostatní platformy:
třída z projektu MoonLight
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 = null
znovu 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 assetName
např. do texture.Tag
lazy 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
pozastavovat vykreslování
SupressDraw
pozastavovat herní 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