Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Living the Dream: Make the Video Game You’ve Always Wanted and Get Paid For It!


Published on

Have you ever dreamed of writing your own video game but didn’t know where to start? During the past five years Microsoft’s XNA framework has become a favorite of Windows and Xbox game developers everywhere. XNA uses the same great Visual Studio development environment you are used to but brings a slew of features specifically for games development. With the release of Windows Phone last year XNA can now be used to create Windows Phone games exposing your ideas to a whole new marketplace! We’ll charge full speed into XNA to learn about the basic Windows Phone model, explore its core device characteristics, and review highlights of the XNA phone framework. Finally, we’ll explore some of the cool games that have been developed specifically for Windows Phone and even learn how to build one ourselves.

You will learn:

Get up to speed on utilizing Microsoft XNA Tools for Windows Phone
Get exposed to freely available third party tools and frameworks that will help jumpstart your game
Learn how to make money through in game Advertising as well as the new Trial mode on Windows PhoneWalk away with the foundation for a game we will build first hand during the session

Source code can be found on Github here:

  • Be the first to comment

  • Be the first to like this

Living the Dream: Make the Video Game You’ve Always Wanted and Get Paid For It!

  1. 1. Living the dream: make the video gameyou’ve always wanted and get paid for it! Dave Isbitski Sr. Developer Evangelist, Microsoft @TheDaveDev Level: Intermediate
  2. 2. Agenda• Windows Phone – A new world of opportunity• XNA Game Studio 4.0 – Xbox and Windows Phone• XNA Framework for Phone – Game Loop, Touch, Accelerometer, Sound, Graphics• Making $ Money $ in the Marketplace
  3. 3. Large and  40,000+ certified applications and games Growing  Growing at over 100 new apps per day Selection of  61% Paid, 39% Free  70+ exclusive Xbox LIVE gamesApps & Games  38,000+ developers registered From Many  7,300+ developers have submitted one or more Developers apps  1,200 new developers every week Loved  12 Downloads per User per Month  10% Conversion rate from Trial to Paid Purchase by Users  Daily Merchandising drives 500% download uplift  MO Billing now available to over 50% of Windows Generating Phone users  % Paid Downloads: 3.2%5 High ARPU  Paid Apps Average Selling Price: $2.93; High ad monetization rate
  4. 4. Promoting Your App Merchandizing Placements Merchandizing PlacementsPlacementTypePlacement Type Panorama Panorama Featured Icon Featured Icon Featured List Featured ListDownload UpliftDownloadUplift 2000% 2000% 800% 800% 150%6
  5. 5. Gamer?
  6. 6.
  7. 7.
  8. 8. Xbox Live on Windows Phone
  9. 9. GamertagFriendsAchievements Windows Phone will extend the Xbox LIVE brand beyond theMerchandising console for the first timePremium Placement Windows Phone is the first step towards our vision of a ubiquitous gaming service Differentiates your title from the rest
  10. 10. Portable Gaming Perfection
  11. 11. PowerfulProductivePortable
  12. 12. Makes game development easierXNA Framework provides robust APIs for gamesC#, .NET and Visual Studio toolingSolutions for game content processingNot an engine solution Creating Games
  13. 13. Develop Enhanced exciting audio games support Simplified Visual Studio graphics 2010 API’s integration New configurable effects16
  14. 14. Content PipelineSimplify Your Content Usage
  15. 15. XNA Pollingnot Events
  16. 16. Typical Game Loop Load content when they start Initialize Initialize() Load LoadContent() Get User Engine Resources Input Update the game world Update() Draw the game world Calculate Test Criteria Draw() UnloadContent() Give Free Resources FeedBack20
  17. 17. Start simple and customize! XNA Framework Game Loop Example protected override void Update(GameTime gameTime) { // Allows the game to exitTraditional update/draw/ ifpresent frame loop (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)Core programming model this.Exit();consistent with previous releases // TODO: Add your update logic hereChanges implemented yieldbetter base.Update(gameTime);power performance on devices }System integration with protected override void Draw(GameTime gameTime) {Windows Phone 7 best practices GraphicsDevice.Clear(Color.CornflowerBlue);Translated to existing // TODO: Add your drawing code hereXNA Framework concepts base.Draw(gameTime); }
  18. 18. ScalerWrite your game without worrying about native resolution or orientation Automatic rotation between portrait and landscape Touch automatically supports both scale and orientation changesScaler can drastically improve performance Trade off performance for “crispness” and shade fewer pixels 800x480 = 384,000 pixels, 480x320 = 153,600 pixelsUpsample an arbitrary back buffer to native device resolution Far higher quality than bilinear filtering Allows for easier porting from other platformsScaling/Rotation comes for “free” from Hardware
  19. 19. Input Overview Cross Platform Input APIXbox 360 Controllers(Xbox/Windows) Touch Input HandlingKeyboard(Xbox/Windows/Windows Phone 7) var touchCollection = TouchPanel.GetState(); Touch API //...Available across platforms for foreach (var touchLocation in touchCollection)portability {(fewer #ifdefs) if (touchLocation.State == TouchLocationState.Released)Multipoint on Windows Phone 7 {and Windows //... }Orientation and resolution aware }Developer can override
  20. 20. Touch gestures• The touch panel can detect a number of different gestures including – Tap – DoubleTap – Hold – HorizontalDrag, VerticalDrag and FreeDrag – Pinch – FlickTouchPanel.EnabledGestures = GestureType.Flick;
  21. 21. Audio Capture Example Audio public void EventDrivenCapture() { mic = Microphone.Default; buffer = new byte[mic.GetSampleSizeInBytes(mic.BufferDuration)]; Audio Capture and mic.BufferReady += new EventHandler(OnBufferReady); DynamicPlayback = new DynamicSoundEffectInstance(mic.SampleRate, Playback } AudioChannels.Mono); public void OnBufferReady(object sender, EventArgs args)Simple API to play back WAV data { // Get the latest captured audio. int duration = mic.GetData(buffer);Modify pitch, volume, pan audio // Do some post-capture processing and playback.Ability to play synthesized/buffered audio MakeMeSoundLikeARobot(buffer, duration); DynamicPlayback.SubmitBuffer(buffer);Serialize captured data }Provides more control overSystem.Mediatypes on Windows Phone 7 Audio Playback Example // Load a sound effect from a raw stream SoundEffect effect1 = Microphone/Bluetooth Support SoundEffect.FromStream(GetStreamFromTheWeb("http://url.wav")); effect1.Play(); Playback through headset // Create dynamic audio on the fly Capture through mic or headset byte[] fluteSound = GetFluteNote(); effect2 = new SoundEffect(fluteSound, SampleRate, AudioChannels.Stereo); SoundEffectInstance instance = effect2.CreateInstance(); instance.Pan = -1; instance.Pitch = 1.5f; instance.Play();
  22. 22. Media – Music/Photos/VideoMusic Enumeration and URI Song Playback Example // Constructs a song from a URIPlayback Uri mediaStreamUri = newControl and enumerate users’ Uri("http://song.asx"); Song streamedSong =media within a game Song.FromUri("Song",Ability to play songs from URI/URL mediaStreamUri);(i.e. music app) // Play the song MediaPlayer.Play(streamedSong);Picture Enumeration andPlaybackSupports photo Retrieve Image Datapicking/editing/publishingVideo Playback MediaLibrary media = new MediaLibrary(); // Get the JPEG image dataUses standard video player API Stream myJpegImage = ReadAndModifyPicture(somePicture);Show/Hide controls // Save texture to Media Library media.SavePicture("Awesome", myJpegImage);
  23. 23. Adding a Menu System
  24. 24. XNA Framework Shared Graphics•• –Application class –• –SetSharingMode(bool enableXna) –
  25. 25. XNA Framework Shared Graphics• XNA SharedGraphicsDeviceManager –Manages Direct3D device sharing with Silverlight• GPU resource management –Silverlight evicts resources when using XNA Graphics –XNA APIs allow manual resource management –Maximize free memory, minimize repeat loading of content
  26. 26. What About “Game”?• Microsoft.Xna.Framework.Game –XNA cross-platform application abstraction –Game “Heartbeat” methods –Application lifetime events –ContentManager• – –•
  27. 27. Render Silverlight over XNA Graphics• Silverlight Page is still active when using XNA Shared Rendering•• – UI, controls, and input – Texture models – Imposters/Billboards• Text input, Storyboards, and Animations all available
  28. 28. Ads and Trial Mode
  29. 29. Trial Mode Simple check Simulate for testing Send user to your Marketplace offer Trial ModeGuide.SimulateTrialMode = true;// if we are in trial mode, show a marketplace offeringif (Guide.IsTrialMode){ PlayerIndex playerIndex = Gamer.SignedInGamers[0].PlayerIndex; Guide.ShowMarketplace(playerIndex);}
  30. 30. PubCenter Advertising SDK• Very easy to incorporate ads into XNA games• Download the Ad-Control SDK • AdManager added as a game component – easy to retro-fit to an existing game• Players can click through an advertisement to a web site or call the advertiser from within your game • Advertisements are specifically targeted at each player demographic• You get 70% of the revenue
  31. 31. • Sign up here so that you can incorporate ads in your games:• Find out more about Windows Phone Advertising
  32. 32. • The Advertising SDK is now part of the Windows Phone SDK• You can include a n XNA Drawable Ad into a game• This is very easy to do – full code example on my Blog •
  33. 33. Demo - PubCenter
  34. 34. Think Global
  35. 35. Today (16)Publish Apps to More Places + 19 New (35) Hong Kong Singapore 1.8 Billion more potential users49
  36. 36. Call to ActionDownload the Windows Phone Developer Toolshttp://create.msdn.comhttp://creators.xna.comwpgames@microsoft.comFun First. Test on a device if possible!
  37. 37. Living the dream: make the video gameyou’ve always wanted and get paid for it! Dave Isbitski Sr. Developer Evangelist, Microsoft @TheDaveDev Level: Intermediate