160 likes | 254 Views
Microsoft Tech Days 2012 Cheezia : Developing a Windows Phone XNA Game. Rodrigo Barretto Software Engineer - MCPD on Windows Phone rodrigo.barretto@attido.com http://www.attido.com. Agenda . Cheezia XNA Overview Game State Management Input Handling Update Method Draw Method
E N D
Microsoft Tech Days 2012Cheezia: Developing a Windows Phone XNA Game Rodrigo Barretto Software Engineer - MCPD on Windows Phone rodrigo.barretto@attido.com http://www.attido.com
Agenda • Cheezia • XNA Overview • Game State Management • Input Handling • Update Method • Draw Method • Sound Effects • Configuration Files as Resources • Tombstoning • Configuring Metadata Files • References 2
Cheezia • Puzzle / Reaction game • Originally developed in Flash for iOS and Android devices using Adobe AIR • Windows Phone version: • Over 54k downloads • Featured in Channel 9’s Hot Apps • Full source code is available at http://www.attido.com/techdays 3
XNA Overview • High performance game framework • Enables creation of 2D and 3D games for Windows Phones, Xbox 360 and PC • Provides a content pipeline that compiles game assets into XNBs • Polling loop model instead of event driven • Provides GraphicsDeviceManager and ContentManager • Initialize • Load Content • Update • Draw • Unload Content 4
Game State Management • ScreenManager • Inherits from DrawableGameComponent • Manages one or more GameScreen instances • Calls Update and Draw of each GameScreen instance • Routes input to the topmost active screen • Activates / deactivates each GameScreen instance • GameScreen • GameScreen • Activate • Deactivate • Unload • HandleInput • Update • Draw 5
Game State Management • InputState • Reads input from keyboard, gamepad and touchpanel • InputAction • Evaluates which buttons and keys have been pressed • IScreenFactory • Instance is added to Game.Services • CreateScreen -> Activator.CreateInstance(screenType) 6
Input Handling • ScreenManager refreshes input states in each Update • XNA supports up to 4 input points • Special button: Back • Accelerometer is event driven • Bind to ReadingChanged event and call Start • Guide.IsScreenSaverEnabled • Guide exposes virtual keyboard: BeginShowKeyboardInput / EndShowKeyboardInput • HandleInput • InputState • Gestures • TouchState • HandleInput • InputAction.Evaluate 7
Update Method • Update game variables • Speed, acceleration, position, score, timer, animations, ... • Check for game over / level accomplished / achievement unlocked, ... • GameTime exposes important properties • ElapsedGameTime • TotalGameTime • IsRunningSlowly 8
Draw Method • Draws into the back buffer • Rendered in the next frame • Order matters!! • Transparency from .png or Color Key property (default is Magenta) • XNA supports .png, .bmp, .jpg, .tga, .dds, .spritefont, .x, .fx, .fbx • Use fonts from: • The system: default is Segoe UI Mono • Own .ttf installed on development machine • .bmp file • GraphicsDevice.Clear • SpriteBatch.Begin • SpriteBatch.End • SpriteBatch.Draw • SpriteBatch.DrawString 9
Sound Effects • Loaded as content items • SoundEffect • Plays the sound until the end • SoundEffectInstance provides more control: • Volume, pitch, pan • Playback capabilities • XNA supports .wav, .mp3, .wma • XACT sound fields are not supported on the phone • Content Manager • Sound Effect • Play • Play • Pause • Resume • Stop • Sound Effect Instance • Volume • Pitch • Pan 10
Configuration Files as Resources • Additional .xml files to configure: • Level design • Achievement related data • ... • Corresponding classes must be implemented in a separate Game Library project • Automatically parsed when loading via Content Manager 11
Tombstoning • The player might be interrupted while playing • Needs to maintain the illusion that the game was never interrupted • Bind to PhoneApplicationService’s events in main game class • Launching, Activated, Deactivated, Closing • ScreenManager takes care of activating/deactivating each screen and knows if instances were preserved (fast app switching) • Save and load states and values of properties of each screen • Temporary data -> PhoneApplicationService’s state dictionary • Persistent data -> Isolated Storage • Call • SMS • Start Button • Search Button • Camera Button • Screen Lock 12
Configuring Metadata Files • Make sure you fill them with information regarding your game • Title • Description • Author • Publisher • Version • Genre: ”Apps.Games” 13
References • App Hub • http://create.msdn.com/ • http://create.msdn.com/en-US/education/ • MSDN Library – XNA Game Studio 4.0 • http://msdn.microsoft.com/en-us/library/bb200104.aspx 15
Microsoft Tech Days 2012Cheezia: Developing a Windows Phone XNA Game Rodrigo Barretto Software Engineer - MCPD on Windows Phone rodrigo.barretto@attido.com http://www.attido.com