Porting dei giochi windows phone realizzati con xna sul windows store con mono game

25
Porting dei giochi Windows Phone realizzati con XNA sul Windows Store con MonoGame Dan Ardelean, Neologics @danardelean [email protected]

Transcript of Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Page 1: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Porting dei giochi Windows Phone realizzati con XNA sul Windows Store con MonoGameDan Ardelean, [email protected]@neologics.eu

Page 2: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

XNA• Framework per Video Game Development e

Management• 2D e 3D (nato nel 2004)

• Semplifica la gestione di tutti gli aspetti di DirectX (Grafica, Input, Sonoro,ecc...)

• Facile da usare• Il programmatore deve solo scrivere le istruzioni per muovere gli

oggetti, le eventuali telecamere, gli eventuali effetti grafici (gli "shader")

• Multipiattaforma• PC/Xbox/Windows Phone 7.x

Page 3: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

MonoGame

• Implementazione cross-platform Open Source delle API XNA 4.0• Riutilizzare il codice già scritto per Windows Phone

• E’ supportata la generazione di app per il Windows Store• Passano il WACK

• Vari giochi sullo Store oggi migrati a Windows 8 con MonoGame (es. Skiddy, Armed!, Rune Legends)

Page 5: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

XNA per app Windows Store• GitHub for Windows

• Framework MonoGame da GitHub (v2.5)• https://github.com/mono/MonoGame

• SharpDX da NuGET

• ProjectTemplates per MonoGame• Con o senza XAML

• MonoGame Samples• https://github.com/CartBlanche/MonoGame-Samples

Page 6: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Cosa può fare MonoGame• Grafica 2D

• Effetti Custom (GLSN)

• XNA Content Files

• Networking (lidgren)• Solo rete locale

• Sound/Music/XACT

• Grafica 3D (ancora in sviluppo)

Page 7: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Cosa può fare MonoGame• Video Playback

• Native asset loading • png/jpeg/gif/tiff/pdf• wav/mpeg

• Input• Touch• Gamepad• Mouse e Tastiera

Page 8: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

DEMOSIMPLE ANIMATIONhttp://xbox.create.msdn.com/en-US/education/catalog/sample/simple_animation

Page 9: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

MonoGame su Windows 8• Content Pipeline usando Visual Studio 2010• File compilati .XNB vengono copiati nel progetto VS 2012

nella cartella Content• ContentManager per caricare gli Asset

(immagini/suoni/ecc...)

• Aggiungere App Tiles e Splash Screen• Logo (150x150), Wide Logo (310x150), Small Logo (30x30)• Splash Screen(620x300)

• Potete usare MessageDialog

Page 10: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Screen Management, Snap View, Landscape, Portrait Support using Windows.UI.Core; public enum WindowState { Full = 0, Snap1Quarter = 1, Snap3Quarter = 2 }; public static class GameState { public static WindowState _windowState; public static CoreWindow _window; public static Rect _windowsBounds; public static void Initialize() { _window = CoreWindow.GetForCurrentThread(); _windowState = WindowState.Full; _window.SizeChanged += _window_SizeChanged; } //called when the window is resized static void _window_SizeChanged(CoreWindow sender, WindowSizeChangedEventArgs args) { if (args.Size.Width == _windowsBounds.Width) _windowState = WindowState.Full; else if (args.Size.Width <= 320.00) _windowState = WindowState.Snap1Quarter; else _windowState = WindowState.Snap3Quarter; _windowsBounds.Height = args.Size.Height; _windowsBounds.Width = args.Size.Width; } }

Page 11: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

PLM – Process Lifetime ManagementRunning, Suspended, Terminated using Windows.UI.Core;

public static void Initialize() { CoreApplication.Resuming += CoreApplication_Resuming; CoreApplication.Suspending += CoreApplication_Suspending; _window = CoreWindow.GetForCurrentThread(); _window.VisibilityChanged += _window_VisibilityChanged; } static void CoreApplication_Suspending(object sender, Windows.ApplicationModel.SuspendingEventArgs e) { // suspending, save appropriate game and user state (delayed) } static void CoreApplication_Resuming(object sender, object e) { // coming back from suspend, probably don't need to do anything as current state is in memory } void _window_VisibilityChanged(CoreWindow sender, VisibilityChangedEventArgs args) { // better save the state here }

Page 12: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

DEMOSIMPLE ANIMATION WINDOWS 8

Page 13: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Migliorare l’integrazione con Windows 8• Live Tiles• Current Level, Score, Ecc.

• Servizi Cloud• Windows Azure Mobile Services per Clasifiche e

Multiplayer• http://www.windowsazure.com/en-us/develop/mobile/

• Usare Settings per le impostazioni del gioco

• Implementare Search e Share dove ha senso

Page 14: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

ReferenzeTwitter @MonoGameTeam

Irc #monogame gnome.irc.org

Youtube Channelhttp://www.youtube.com/MonoGameTeam

MonoGame on Codeplexhttp://monogame.codeplex.com

Page 15: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Skiddy scivola da Windows Phone a Windows 8

Christian "Ch" Costanza – Big Bang Pixel@[email protected]

Page 16: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Chi sonogli Skiddy?Demo su Windows Phone e Windows 8

Page 17: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Struttura del progetto

• Progetto principale contenente il gioco

• Libreria per gestione di dati custom compilati in XNB

• Libreria con classi ed helper di uso generale

Il grosso delle modifiche hanno riguardato il progetto principale, gli altri erano già «abbastanza» astratti

Page 18: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Porting – Cambiamenti principali• Input:• Touch, Tilt, Controller XBOX, Mouse e Tastiera su Windows

8• Touch e Tilt su WP

• I/O• Nuovi metodi async su Windows 8• Caricamento in multithreading su WP

• Settings locali e in roaming su Windows 8• IsolatedStorage su WP

• Cambio di formato per i dati non supportati da MonoGame (ora salvati in XML)

Page 19: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Porting – Nuova UI «adattabile»• Supporto a Full Screen, Filled e Snapped oltre ai vari

orientamenti

Page 20: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Porting – Nuova UI «adattabile»• Definizione di una «safe area»

proporzionale alla risoluzione della Viewport• Gli elementi della UI vengono posizionati in

modo relativo agli angoli o al centro, con allineamento orizzontale o verticale selezionabile

• Per elementi 3D viene ricreata la camera e posizionata in base all’aspect ratio della Viewport

Page 21: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Integrazione con il sistema• Integrazione con i Charm di sistema:• Share degli award, etc…• Settings• Utilizzata libreria Callisto (

https://github.com/timheuer/callisto) per semplificare il lavoro

• Live Tile che mostra le medaglie prese

Page 22: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Limiti di MonoGame• Impossibilità di creare i Modelli a Runtime e

minimizzare chiamate a Model.Draw -> disegniamo i singoli elementi, gioco comunque va a 60FPS anche su ARM

• Non supporta Environment Map -> BasicEffect• Problemi su Multisample Anti-aliasing -> disabilitato

x ora• Reimplementati i Game Components (già su WP)

seguendo sample http://aka.ms/gamecomp

• Usiamo branch «develop3d» aspettiamo prossime versioni che magari risolveranno alcuni problemi

Page 23: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Supporto!• Abbiamo avuto moltissimo supporto:

• Gli sviluppatori di MonoGame hanno risposto a tutte le nostre richieste e risolto un sacco di problemi

• Microsoft Italia ci ha supportato prima con i Lab, poi facendoci provare il gioco su vari dispositivi e aiutandoci sulla parte di WinRT

Page 24: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Prima di chiudere… il Windows Store• Molto più sicuro… forse troppo • Simile a quello di Phone ma più dettagliato• Chiede le didascalie per le immagini • Permette di fare alcune scelte con più granularità

• Reportistica più dettagliata• Tempo di utilizzo dell’app• Riferimenti relativi rispetto alle prime 5 app della

sottocategoria• Quanti hanno visualizzato la scheda dell’app

• Tempi di pubblicazione nella media• Non abbiamo ancora sperimentato «in-app

purchase»

Page 25: Porting dei giochi windows phone realizzati con xna sul windows store con mono game

Scaricatelo e votatelo!!!