Porting dei giochi Windows Phone realizzati con XNA sul Windows Store con MonoGameDan Ardelean, [email protected]@neologics.eu
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
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)
Ambiente di sviluppo• Windows 8
• Games for Windows
• Visual Studio 2010 Express for Windows Phone
• Visual Studio 2012 for Windows Store Apps
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
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)
Cosa può fare MonoGame• Video Playback
• Native asset loading • png/jpeg/gif/tiff/pdf• wav/mpeg
• Input• Touch• Gamepad• Mouse e Tastiera
DEMOSIMPLE ANIMATIONhttp://xbox.create.msdn.com/en-US/education/catalog/sample/simple_animation
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
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; } }
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 }
DEMOSIMPLE ANIMATION WINDOWS 8
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
ReferenzeTwitter @MonoGameTeam
Irc #monogame gnome.irc.org
Youtube Channelhttp://www.youtube.com/MonoGameTeam
MonoGame on Codeplexhttp://monogame.codeplex.com
Skiddy scivola da Windows Phone a Windows 8
Christian "Ch" Costanza – Big Bang Pixel@[email protected]
Chi sonogli Skiddy?Demo su Windows Phone e Windows 8
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
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)
Porting – Nuova UI «adattabile»• Supporto a Full Screen, Filled e Snapped oltre ai vari
orientamenti
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
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
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
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
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»
Scaricatelo e votatelo!!!