Oct
31
Join Us for the Springboard Series Community Party at TechEd Europe
Category: Vista News |
Leave a Comment
Attending TechEd Europe next week??? Make sure to join us on Tuesday, 9 November, at 21:00 (9:00 p.m.), get ready to rub shoulders with some of most powerful IT Professionals and community influencers.
Exclusively for Microsoft MVPs, Microsoft Certified Trainers, community members and guests, the Microsoft Learning Community Party, sponsored by Springboard Series for Windows and Office, held the week of TechEd in Berlin, Germany, is your opportunity to network with industry peers and key Microsoft executives, learn about other communities, and enjoy an evening full of music, food, drinks, and fun—all compliments of Springboard Series, Office 2010 and Microsoft Learning.
Party attendance is limited, so be sure to register today to reserve your spot at TechEd’s only community party!
To register click here and use code TEB-SB.
Once you get your approval, you will need to swing by the Springboard Series Booth at the show to pick up your passes. Please note, you will not be admitted to the party without your pass. We look forward to seeing you there!
Oct
30
Last week was the 1 year anniversary of Windows 7 and to celebrate, I asked readers to share a list of their 7 favorite things about Windows 7. Everyone who shared their list was given a chance to win a full copy of Windows 7 Ultimate and some stickers. And we have chosen a winner! Congratulations to Joshc09! Joshc09 – please send us an email to thewindowsblog [at] live.com with your contact information including shipping address so we can send you your prize. Here is Joshc09’s list of 7 favorite Windows 7 things:
1. I love the new taskbar. It helps keep my work organized and looking good while at it!
2. Aero snap simply helps you keep organized whatever you are doing in your virtual workspace and it does it well.
3. I absolutely love the devices and printers folder which helps me manage not only all of my connected devices but also my shared network printer. I also love this feature to quickly access some system settings, as your computer is listed as a device.
4. One feature that I love, not so much because it helps me but it helps me help others, is the "Troubleshooting" feature in the control panel. It’s great for people who don’t know much about computers to help get their pc in order.
5. The "show desktop" button I find is a great little feature. I like working in an organized space, so having too many windows open sometimes can be frustrating. It’s nice to know I can minimize them all with one click.
6. Libraries are another one of my favorite features because of how easy it is to keep like-file types together. For example, in previous versions of Windows If I wanted to separate my personal music collection from say my sisters music collection I’d make a separate folder or sub-folder to put her music in, but in never felt cohesive with the rest of the music on the computer. Libraries help make the experience cohesive since you can have all music accessible under a single outlet.
7. One of the most awesome features is XP Mode. There’s several programs that I use that won’t work in Windows 7 - even in compatibility mode. This feature sort of "bridges the gap" between the old and the new and makes the continued use of an out of date program possible.
These features are just a few of the many awesome features found in Windows 7. I could never go back to previous versions of Windows. Microsoft, you got me hooked! =)
Special thanks to everyone who left a comment and a list. We have tremendously enjoyed reading what folks like most about Windows 7.
Oct
29
Live from PDC – Real Games Analysis and Optimization of XNA Framework Games for Windows Phone
Category: Vista News |
Leave a Comment
PDC is on, and you can watch it online. Right now I am attending Jeff Petkau’s Real Games Analysis and Optimization of XNA Framework Games for Windows Phone session. Jeff’s talk is after Shawn Hargreaves’ session. While Shawn’s talk addressed XNA Framework game design and techniques to improve load time along with overall graphics and audio tips, Jeff’s talk focuses on a more specific approach to code that is required to yield a performing XNA Framework game for Windows Phone.
This is NOT an introductory talk. Jeff assumes that you are familiar with the XNA programming model, .NET, and some aspects of how CLR (common language runtime) works. With that said, even if you don’t know XNA at all, this is a very good session, especially if you are planning on writing XNA games for Windows Phone. However, if you are not at all familiar with XNA, please make sure you visit the XNA Framework education roadmap before viewing the session, and learn how to create XNA games for Windows Phone.
Jeff is part of the Advanced Technology Group (ATG), which specializes in helping publishers release games for Xbox and now Windows Phone. Jeff has tons of experience, and shares the real world gaming analysis and tips and tricks he painfully learned over the years–making this a great talk
The two main performance problems for XNA games on Windows Phone are Garbage Collection (GC) and low frame rate. Some of the problems that developers face are related to phone hardware limitations. The phones use a 1GHz Snapdragon processor, have a minimum of 256 MB of memory, and run .NET Compact Framework (.NETCF), a lightweight version of the full .NET for Windows.
While the .NETCF supports a large subset of the APIs found in the regular .NET framework, there are few differences. The .NETFC JIT compiler (known as JITer) and the Garbage Collector (GC) differ from their counterparts in the full .NET framework. For example the .NETCF JITer is optimized to run fast, but not to produce the fastest code possible. The .NETCF GC doesn’t support generations, but performs a single pass through the entire process memory heap, finding all the roots into the GC heap. Starting from these roots, it visits every object and follows every object pointer contained in every visited object, marking the objects as it goes along. In this way the collector finds every reachable or live object. The other objects, the unreachable ones, are now condemned for collection. You can think of the .NETCF GC process as being very similar to the .NET full collection process.
But, even with these limitations, you can produce amazing games such as Harvest, Star Wars: Battle of Hoth, Ilomilo, and many more. You can read about most (if not all) Windows Phone games in http://www.bestwp7games.com/. All it takes is some knowledge and an understanding of the limitations.
Back to Jeff’s talk: Due to CPU and .NETCF limitations there is one key thing you need to be aware of–the GC runs might result in significant performance hits to your game. From this point on in the presentation, Jeff shows how to code in order to address some of these problems. However, as Jeff puts it, some of his solutions are not in keeping with .NET best guidance, but you may need to compromise on code maintenance and readability in order to achieve killer performance in your games.
Based on empirical testing and profiling large numbers of Windows Phone XNA applications, each 1MB of heap memory is equivalent to about a 10 msec run of the NETCF GC. Wow! I don’t know what you think, but 10 msec per each 1MB seems like a lot of time to me. If you have a 50MB heap, you are talking about 500 msec (half a second) per each 1 MB that you add to the heap. That is a lot of time and most likely will not get you to 33 frames per second. But you need to remember that we are talking here about the phone’s “limited CPU” (by limited CPU, I mean in comparison with an Xbox game console or Windows desktop computer).
The solution is: DO NOT CREATE Garbage (go green!). Seriously, during your game play, which is the time that the user plays the game (not including menus and such), you can’t allow any GC. You must be 100% certain that your code doesn’t generate new heap allocations that exceed 1MB or else the GC will start collecting for the entire heap, which can be VERY bad.
To test this, either run your code on a Windows Phone device or, as Jeff suggests, create a Windows build of your application (super easy), and use Visual Studio profiling tools to test for managed code memory allocation. You can’t really check CPU performance, but memory should behave similarly. Find where you create garbage during your game and fix it. You should find your usual suspects, such as strings using non-XNA types such as float[3] instead of Vector3, using LINQ, or using a foreach loop (the yield is expensive in terms of garbage collection). Once you fix your code, you should see no GC runs during your game time, which would be very good.
Jeff’s next topic is low frame rates. Low frame rates can be tricky as you don’t know where the bottleneck is. Is the low frame rate caused by the too much CPU work, or are you pushing too much content down the graphic pipeline so that the CPU can’t keep up? So what can you do?
- To test why you are experiencing a low frame rate, you need to instrument your code–add System.Diagnostics.Stopwatch around your Update() and Draw() methods
- Since you might have multiple problems, you need to remember to test Update and Draw separately to make sure you identify if your problem is CPU or GPU bound, and disable Update while drawing – since Update is mostly CPU bound
- You can also use Scaler to reduce the number of pixels you draw in order to find out if your problem is in the fill rate due to drawing too many pixels to the screen.
- If your game is running much faster (like several times faster), than you’ve found your problem
Jeff demonstrates even more tips and showed additional tools, so I highly recommend this session.

