1 / 44

Development and Debugging Tools for Windows Phone 7 Series

Development and Debugging Tools for Windows Phone 7 Series. Cullen Waters Software Development Engineer II Advanced Technology Group, Microsoft Corporation. Who Should Stay for This Talk?. Game Developers. working on other mobile platforms. interested in branching out to mobile.

keona
Download Presentation

Development and Debugging Tools for Windows Phone 7 Series

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Development and Debugging Tools for Windows Phone 7 Series Cullen Waters Software Development Engineer II Advanced Technology Group, Microsoft Corporation

  2. Who Should Stay for This Talk? Game Developers working on other mobile platforms interested in branching out to mobile Folks who have not used XNA professionally

  3. Who Might Want to Leave? Game Developers who have shipped an XNA XBLA title People who are uninterested in Windows Phone 7 Series development

  4. Overview

  5. Toolset Silverlight 3 (plus) XNA Visual Studio 2010 Visual Phone Developer Express Single, integrated download

  6. Silverlight 3 (Plus) Silverlight 3 with some device-specific additions Accelerometer Touch Location

  7. XNA Framework 4.0 A new version of XNA Full 3D support on the device APIs similar to those we know and love from Windows and Xbox 360

  8. Visual Studio 2010 • Full debugging support on the device • Lots of new goodness in Visual Studio 2010

  9. Visual Studio & .NET • Productive development with .NET & C# • High performance IDE • Intellisense makes coding faster • Integrated build/deploy/debug experience • MSBuild engine for build automation

  10. Visual Phone Developer Express New Express SKU for Visual Studio 2010 Supports Silverlight and XNA development Full device debugging support

  11. Windows Phone 7 Series Emulator Supports full application development Reduces costs of test and development Emulator, not a simulator

  12. XNA Project System • C# is the only language for XNA development for Windows Phone 7 Series • All code files are organized into .csproj project files • .csproj is an MSBuild-based project system

  13. XNA Content PipelineSimplify Your Content Usage! Provides build-time modification of source content Customizable, extensible Runs only on Windows Full .NET support p/invoke Managed C++, VB.Net, IronPython, and so on

  14. Content Pipeline Project Changes • Makes for easier parallel development of art and code • Content pipeline is extremely extensible, so integration with existing tools is possible • Content projects no longer appear as child projects of the game project

  15. .NET Tools There are lots of great tools out there, both free and commercial These are my “must-have” tools

  16. .NET Reflector Explore, browse, and analyze .NET assemblies Understand relationships between classes Verify code obfuscation

  17. ildasm MSIL disassembler Useful for seeing what code is being generated at build time

  18. Visual Studio Team System Profiler Also known as F1 profiler Performs code performance profiling, using sampling or instrumentation

  19. Sampling vs. Instrumentation • Sampling takes samples at regular intervals • Generally better for initial investigation • Instrumentation inserts probes into the code • Use for more targeted profiling

  20. CLR Profiler Profiles managed memory usage Invaluable for debugging game memory management

  21. Pix for Windows Graphics debugger GPU performance investigation Semi-transparent view into DirectX 3D Shader debugging Ships with DX SDK

  22. FxCop Static code analysis tool Integrated into Visual Studio Analyzes compiled code Not all rules will likely apply to games

  23. Code Obfuscation • All un-obfuscated code is open source • Dotfuscator Community Edition bundled with Visual Studio

  24. Demo Obfuscation

  25. Wait a Minute! • Most of those tools are Windows tools • I’m developing a game for Windows Phone 7 Series! • How do those tools apply to development for Windows Phone 7 Series?

  26. Debugging NetCF Titles Profile onWindows Develop onWindows Deploy toDevice Cross-Platform Solution

  27. Getting Info from the Device • Roll your own on-device tools • Visual information, from the game • Check out Ito’s debugging toolset

  28. Timing on the Phone • No high-precision timer • ≈ 1 ms resolution • How do you get accurate timings from that? • Capture multiple frames of data and calculate an average • Multiple 0 or 1 values, averaged over a bunch of frames, gives you a pretty accurate result • FPS component from Shawn Hargreaves

  29. Case Study Heightmap Collision Sample

  30. Build and Run on Windows • Frame rate is good • Iteration time is wonderful • Life is good, ship it™!

  31. But Then We Run on a NetCF Device • Frame rate is poor • Gameplay is affected by unpredictable stalls • What’s going on? • Most likely cause: Garbage collections

  32. Sidebar: NetCF Garbage Collector • Mark and Sweep • Not generational • Halts all managed threads on the device

  33. We’re Allocating During Gameplay?!? • Let’s figure out where • Run the game on PC, under CLR Profiler

  34. Demo CLR Profiler

  35. Kill the Collector! • Remove allocations during gameplay • Pre-allocate • Be careful of hidden allocators • How could this be easier? • Run it again on the device, and we get constant frame rate

  36. Constant FPS != Good FPS • Constant + Low == still bad • Fire up the VSTS profiler, and figure out where we’re spending our time

  37. Demo VSTS Profiler

  38. Sidebar: NetCF Jitter • Non-optimizing jitter • Primarily designed for application development • Apps bound by I/O, not by CPU/GPU • High latency toleration • No inlining

  39. There’s the Culprit! • Make changes to fix the code • Run on the device again • FPS is good, ship it™!

  40. Summary

  41. Wrapping It Up • Use Windows to your advantage • Keep your game running on the target platform • Design with the target platform in mind

  42. Additional Resources • http://MicrosoftGamefest.com • http://blogs.msdn.com/ShawnHar • http://creators.xna.com • http://www.red-gate.com • CLR Profiler download page • Ito's debugging tools

  43. Questions?

More Related