The last couple months have been crazy for us, with loads of new client work and the new Phenomblue.com website launch. We’re not ones for making excuses, but we haven’t had the opportunity to talk about Surface in a while. A few months ago we received a much-awaited package – the new Samsung SUR40, commonly referred to as “Microsoft Surface 2.0.” Don’t be caught calling it that anymore though — with the release of the Surface tablet a few days ago, Microsoft has rebranded the Surface table and it’s now called PixelSense. After the unboxing and playing with the one pre-installed app on it, it was time to put it through its paces. Our first test was to try running our Genesis app to see if there was a noticeable boost to performance.
A little background: Genesis is a Microsoft Surface 1.0 app that lets multiple users create a solar system by placing suns, planets, space dust and stars in a universe. Users wear a pair of ChromaDepth glasses that create the illusion of 3D based on color. Genesis was built using WPF, XNA for audio and incorporates a custom-built physics engine to handle the gravitational interaction of space dust, planets and suns. One of the project’s goals was to test the limits of what is possible using WPF on the original Surface machine and as development progressed, we quickly realized that it was having a hard time keeping up as the number of objects grew. So, we incorporated multi-threading and a UFO that would fly across the screen and destroy objects as a sort of garbage collector to keep things tidy.
As it turns out, getting Genesis up and running on the new PixelSense machine was quite an easy process. First, we had to convert the project to a Visual Studio 2010 project using .NET 4.0. From there we downloaded the Microsoft PixelSense 2.0 Migration Power Toy, which converts 1.0 apps to 2.0 for using the Core, Shell and Presentation APIs. From what we could tell, the biggest difference that it made in our application was changing Contacts to TouchDevices.
The next step was a bit more manual. We needed to make adjustments to our manipulation processor code since it is was removed from the PixelSense SDK and moved to WPF 4. We also had to update our scatterview control code and hit testing to correctly determine a finger’s position on the menu. Once this was complete we were up and running!
Initially, we saw the 1024×768 screen that the app was designed for left quite a bit of empty real estate, as the new device’s resolution is 1920×1080. However, we did experience a vast improvement in performance. So much so that we disabled our UFO “garbage collector” and still saw a high frame rate, even with large numbers of planetary bodies flying around.
Overall, the process of making the Genesis app PixelSense compatible was much easier than we had imagined. Big props go out to the people who created the Migration Power Toy – that saved us a lot of time. In the future we would like to make improvements to the app, such as updating graphics and calculations so that it can run on a full 1920×1080 resolution screen. Given the updated performance we may also add some enhanced special effects and new celestial objects to the experience, too. Stay tuned!