• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Windows phone 7 xna
 

Windows phone 7 xna

on

  • 3,865 views

 

Statistics

Views

Total Views
3,865
Views on SlideShare
3,833
Embed Views
32

Actions

Likes
0
Downloads
56
Comments
0

3 Embeds 32

http://blogs.msdn.com 29
http://paper.li 2
http://a0.twimg.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Windows phone 7 xna Windows phone 7 xna Presentation Transcript

    • Glen Gordon
      Developer Evangelist
      http://blogs.msdn.com/glengordon
      @glengordon
      Developing WP7 Games using XNA
    • Agenda
      2
      Windows Phone 7 – A new beginning
      XNA Game Studio 4.0 – Powerful, Productive, Portable
      XNA Framework
      - Game Loop, Graphics, Audio, Media, Touch, Sensors
      XBOX Live
      Q & A
    • Games Hub Featuring Xbox LIVE
      3
    • Xbox LIVE is Gaming Services
      Gamertag
      Friends
      Achievements
      Windows Phone will extend the Xbox LIVE brand beyond the console for the first time
      MerchandisingPremiumPlacement
      Windows Phone is the first step towards our vision of a ubiquitous gaming service
      Differentiates your title from the rest
    • Game Development Opportunities
      To use the great features of Xbox LIVE
      Without Xbox LIVE You can still write
      andpublish games for
      Windows Phone
      Find a publisher!
      Lots to choose from!
      We’re interested in your great games!
      Create great games for marketplace http://developer.windowsphone.com
      wpgames@microsoft.com
    • Windows Phone 7 Hardware
      Consistent sets of hardware capabilities defined by Microsoft
      Resolution
      Touch Input
      CPU / GPU
      RAM
      Hardware keyboard is optional
    • User Experience Frameworks
      Modern XAML/event-driven application UI framework
      Rapid creation of visually rich apps
      HTML/Javascript
      Mature, robust, widely deployed technology
      High performance game framework
      Rapid creation of multi-screen 2D and 3D games
      Rich content pipeline
      Mature, robust, widely adopted technology spanning Xbox, Windows, and Zune
      GAMES(and applications)
      APPLICATIONS
      (and games)
    • Powerful
      Productive
      Portable
    • XNA Game Studio
      Makes game development easier
      XNA Framework provides robust APIs for games
      C#, .NET and Visual Studio tooling
      Solutions for game content processing
      Not an engine solution
      CreatingGames
    • XNA Game Studio 4.0
      Enhanced audio support
      Develop for Windows Phone 7
      Simplified graphics APIs
      Visual Studio 2010 integration
      New configurable effects
    • Powerful
    • Managed Code for Game Development
      Windows Phone 7
      Uses the .NET platform
      Managed code platform, no unsafe code
      .NET/XNA is used for games today!
      XNA Game Studio 4.0 is C# exclusive
      800+ managed code games on XBLA/XBLIG
      wpgames@microsoft.com
      Windows games published through portals
    • Addressing Performance Head-on
      Frameworks designed for performance
      Frameworks designed for performance
      Frameworks designed for performance
      Frameworks designed for performance
      XNA Framework designed for gaming scenarios
      Commitment to future of managed code
      No unnecessary garbage generation
      Three + years of profiling and investment
      We’ve built for performance on Windows Phone 7
      Math libraries optimized
      Efficient APIs with tuned transitions to native code
    • http://xbox.com/phone
    • Productive
    • Visual Studio and .NET
      Productive development with .NET and C#
      High performance IDE
      Intellisense makes coding faster
      Integrated build/deploy/debug experience
      MSBuild engine for build automation
    • Content Pipeline
      17
      Simplify Your Content Usage!
      Manage assets in Visual Studio
      Importers for common game data formats
      Optimize data into binary format for efficient loading
      Fully extensible
      Content projects external in XNA Game Studio 4.0
    • Simplifying Game Development
      XNA Framework
      18
    • Bridging the Gap
      The XNA Framework Game Loop is layered on top of the Silverlight Application object on Windows Phone 7
      Provides the bulk of integration of API’s
      Most of the XNA Framework can be accessed from Silverlight applications
      Including Gamer Services (Xbox LIVE)
      In this release some sharing/composition is not complete
      Scenes using GraphicsDevice from XNA Framework and UIElements from Silverlight
      You’ll want to choose the technology that works best for your scenarios
    • Choosing the Right Technology
      Graphics
      UI control heavy consider Silverlight
      Desire vector graphics in XAML
      Media
      Rich video support in application
      Tooling
      If you use Microsoft Blend in your pipeline
    • Leveraging the Right Technology
      Graphics
      Using 3D graphics
      Sprite heavy 2D applications should consider the XNA Framework Game Loop
      Simulation/Drawing
      Those who prefer a traditional update/draw/present frame loop
      Tooling
      Those who want to use the XNA Framework Content Pipeline graphics types
    • XNA Framework Game Loop
      Start simple and customize!
      XNA Framework Game Loop Example
      protectedoverridevoid Update(GameTimegameTime)
      {
      // Allows the game to exit
      if(GamePad.GetState(PlayerIndex.One).Buttons.Back==
      ButtonState.Pressed)
      this.Exit();
      // TODO: Add your update logic here
      base.Update(gameTime);
      }
      protectedoverridevoid Draw(GameTimegameTime)
      {
      GraphicsDevice.Clear(Color.CornflowerBlue);
      // TODO: Add your drawing code here
      base.Draw(gameTime);
      }
      Traditional update/draw/present frame loop
      Core programming model consistent with previous releases
      Changes implemented yield better power performance on devices
      System integration with Windows Phone 7 best practices
      Translated to existing XNA Framework concepts
    • Demo:Game Loop
    • Graphics
      24
    • Graphics Overview
      Evolution of our existing immediate mode rendering API
      Simplifies for resource and render state management
      Feature segmentation between “Reach”/“HiDef” profiles
      Rendering primitives 2D and 3D
    • Configurable Effects
      BasicEffect
      SkinnedEffect
      New configurable effect classes on all platforms
      EnvironmentMapEffect
      DualTextureEffect
      Custom effects not available on Windows Phone 7
      AlphaTestEffect
    • System Support: Scaler and Orientation
      Write your game without worrying about native resolution or orientation
      Automatic rotation between portrait and landscapeTouch automatically supports both scale and orientation changes
      Scaler can drastically improve performance
      Trade off performance for “crispness” and shade fewer pixels800x480 = 384,000 pixels, 480x320 = 153,600 pixels
      Upsample an arbitrary back buffer to native device resolution
      Far higher quality than bilinear filteringAllows for easier porting from other platforms
      Scaling/Rotation comes for “free” from Hardware
    • Demo:Effects
    • Can you hear me now?
      Audio & Media
      29
    • Audio Capture Example
      Audio
      publicvoidEventDrivenCapture()
      {
      mic= Microphone.Default;
      buffer = new byte[mic.GetSampleSizeInBytes(mic.BufferDuration)];
      mic.BufferReady += newEventHandler(OnBufferReady);
      DynamicPlayback = newDynamicSoundEffectInstance(mic.SampleRate,
      AudioChannels.Mono);
      }
      publicvoidOnBufferReady(object sender, EventArgsargs)
      {
      // Get the latest captured audio.
      int duration = mic.GetData(buffer);
      // Do some post-capture processing and playback.
      MakeMeSoundLikeARobot(buffer, duration);
      DynamicPlayback.SubmitBuffer(buffer);
      }
      Audio Capture and Playback
      Simple API to play back WAV data
      Modify pitch, volume, pan audio
      Ability to play synthesized/buffered audio
      Serialize captured data
      Provides more control over System.Mediatypes on Windows Phone 7
      Audio Playback Example
      // Load a sound effect from a raw stream
      SoundEffecteffect1 =
      SoundEffect.FromStream(GetStreamFromTheWeb("http://url.wav"));
      effect1.Play();
      // Create dynamic audio on the fly
      byte[] fluteSound = GetFluteNote();
      effect2 = newSoundEffect(fluteSound, SampleRate, AudioChannels.Stereo);
      SoundEffectInstanceinstance = effect2.CreateInstance();
      instance.Pan = -1; instance.Pitch = 1.5f;
      instance.Play();
      Microphone/Bluetooth Support
      Playback through headset
      Capture through mic or headset
    • Media – Music/Photos/Video
      URI Song Playback Example
      Music Enumeration and Playback
      // Constructs a song from a URI
      UrimediaStreamUri = newUri("http://song.asx");
      SongstreamedSong = Song.FromUri("Song", mediaStreamUri);
      // Play the song
      MediaPlayer.Play(streamedSong);
      Control and enumerate users’ media within a game
      Ability to play songs from URI/URL (i.e. music app)
      Picture Enumeration and Playback
      Supports photo picking/editing/publishing
      Retrieve Image Data
      MediaLibrarymedia =newMediaLibrary();
      // Get the JPEG image data
      StreammyJpegImage = ReadAndModifyPicture(somePicture);
      // Save texture to Media Library  
      media.SavePicture("Awesome", myJpegImage);
      Video Playback
      Uses standard video player API
      Show/Hide controls
    • Demo:Sound
    • Interacting with games gets easier!
      Input / Touch
      33
    • Input Overview
      Cross Platform Input API
      Xbox 360 Controllers (Xbox/Windows)
      Keyboard (Xbox/Windows/Windows Phone 7)
      Touch Input Handling
      vartouchCollection= TouchPanel.GetState();
      //...
      foreach(vartouchLocationintouchCollection)
      {
      if(touchLocation.State ==
      TouchLocationState.Released)
      {
      //...
      }
      }
      Touch API
      Available across platforms for portability (fewer #ifdefs)
      Multipoint on Windows Phone 7 and Windows
      Orientation and resolution aware
      Developer can override
    • For Silverlight and XNA Framework
      Sensors
      35
    • Sensor Overview
      Leverage Platform Features on Windows Phone 7
      VibrationExample
      VibrateControllerrumbler;
      rumbler.Start(TimeSpan.FromSeconds(2));
      Location
      Accelerometer
      Vibration
      Accelerometer Example
      Accelerometer accelerometer = new
      Accelerometer();
      accelerometer.ReadingChanged +=AccelerometerReadingChanged;
      accelerometer.Start();
    • Demo:Touch
    • Xbox LIVE
      38
    • Connectivity at a Glance
      Windows Phone 7 OS
      Xbox LIVE
      HTTP
      Push
      Gamer Services
      Invites
      Avatars
      Profile
      Achieve-ments
      Leader-boards
      TrialMode
    • Profile
      Your Identity in the Cloud
      Your phone knows you by your Windows Live ID
      Link to your Gamertag
    • Profile
      Read a Player’s Profile
      // Profile access
      SignedInGamergamer =Gamer.SignedInGamers[0];
      // Get the player's GamerTag to display
      string gamerTag = gamer.Gamertag;
      // A SignedInGamer has a Profile
      GamerProfileprofile = gamer.GetProfile();
      // Get the player's current GamerScore
      intgamerScore = profile.GamerScore;
      // get the gamer picture (PNG file stream)
      Stream gamerPictureStream = profile.GamerPicture;
    • Achievements
      Award an Achievement
      // Award an achievement
      SignedInGamergamer = Gamer.SignedInGamers[0];
      gamer.AwardAchievement("Attended TechEd 2010");
      Real achieventments
      Real gamerscore
      Up to 20 awards, 200G total
      Dead simple API, deep game design
      Read Achievements
      // Get achievements
      AchievementCollectionachievements = gamer.GetAchievements();
      // walk through achievements
      foreach (Achievement ain achievements)
      {
      string name = a.Name;
      string description = a.Description;
      boolearned = a.IsEarned;
      intscore = a.GamerScore;
      Stream icon = a.Picture;
      }
    • Leaderboards
      Write to a Leaderboard
      // Create leaderboard identity with game mode 1
      LeaderboardIdentityid =
      LeaderboardIdentity.Create(LeaderboardKey.BestScoreLifeTime, 1);
      // get the leaderboard writer from the signed in gamer
      LeaderboardWriterwriter = gamer.LeaderboardWriter;
      // get the leaderboard entry for the identity
      LeaderboardEntryentry = writer.GetLeaderboard(id);
      // write new leaderboard data
      entry.Rating = 1000;
      entry.columns.SetValue("Outcome",LeaderboardOutcome.Win);
      Compete withFriends
      Score- or Time-based
      Fixed columns
      10k blob data
      Pivot on gamer
      Read From a Leaderboard
      // Read from leaderboard with page size of 10
      LeaderboardReaderreader =LeaderboardReader.Read(id, gamer, 10);
      foreach (LeaderboardEntryein reader.Entries)
      {
      // score or time, as defined by identity. Rating determines rank.
      long rating = e.Rating;
      // read additional column data
      long wins = e.Columns.GetValueInt64("Wins");
      Stream blob = e.Columns.GetValueStream("Blob");
      }
      reader.PageDown();
    • Trial Mode
      Simple check
      Simulate for testing
      Send user to your Marketplace offer
      Trial Mode
      Guide.SimulateTrialMode =true;
      // if we are in trial mode, show a marketplace offering
      if(Guide.IsTrialMode)
      {
      PlayerIndexplayerIndex = Gamer.SignedInGamers[0].PlayerIndex;
      Guide.ShowMarketplace(playerIndex);
      }
    • Avatars
      Currently supported through web service only
      Static pose rendered on LIVE back-end
      Download as a stream
      http://avatar.xboxlive.com/avatar/Major%20Nelson/avatar-body.png
    • Game Invites
      Game invites are handled through email
      Guide.ShowGameInvite() invokes platform picker UI
      Player chooses game invite recipients
      Friends see invitations in their games hub
    • Portable
      47
    • Target Three Screens
      XNA Framework designed to be cross platform
      Smaller time investment and target more sockets
      Project synchronization between platforms
    • XNA Framework Profiles
      Create a clear development environment
      Target broadly or platform showcases
      Designed for compatibility across screens/devices
      This profile includes Windows Phone 7
      Reach
      Platform showcase features
      Xbox 360/Windows Only
      HiDef
    • Demo:Building 2d and 3d games
    • Summary
      Powerful
      Great managed code games, working today
      Windows Phone provides a powerful platform for gaming
      Productive
      Focus on being a game developer
      Great tools make you more productive
      Portable
      Target more platforms easily
      Focus on your game differences, not the technology
    • Call to Action
      Download the Windows Phone Developer Tools
      http://developer.windowsphone.com
      Create awesome games!
    • Additional Resources
      Email:
      wpgames@microsoft.com
      On the web: http://developer.windowsphone.com
      Hundreds of samples
      Lots of MVPs and experts to help you get started
      XNA Creators Club @ http://creators.xna.com
      Team Blog @ http://blogs.msdn.com/xna/
      Shawn Hargreaves @ http://blogs.msdn.com/shawnhar/(Great Tech Info!)
      Contact Microsoft
      Blogs
      Peer Support @ http://forums.xna.com
    • Q&A
    • © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
      The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
      MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.