In this article I’m sharing a couple of quick extension methods I made for working with the Kinect SDK Beta. I was experimenting with using the Kinect sensor in an XNA project and found myself wanting to do two things; convert the output from the RGB stream to a Texture2D and to get the position of a joint from the sensors skeleton tracking functionality relative to the game screen dimensions.
I like to experiment a lot with XNA to try and find ways of doing things which I haven’t tried before. Recently I have been doing some reading around the .NET Reactive Extensions and thought that it might be pretty useful to use something like that in an XNA game. I played around with it a little bit and thought it was a little bit too “heavy” for what I wanted to do since it seems like I would need to define my observers as well as my observables. I was really looking for something that only required me to define my observable properties and subscribe to them using delegates without my other game engine classes needing to know anything about them. By removing the knowledge of observers and observables from the other game engine classes it leaves the choice of whether or not to use a subscription-based approach open.
On Wednesday and Thursday I was down at Microsoft Ireland in Dublin for the Imagine Cup Irish finals with the team I was mentoring from the University of Ulster Coleraine. Unfortunately we didn’t make it into the top 5 but it was great for our team of first year students to get down and experience the whole event.
For my final year project at university I’ve been doing a bit of work with Windows Phone 7 and naturally that has involved working with gestures a bit. I think the gesture support in XNA 4 is great but I found myself writing the same code over and over again to handle them. So I decided to make a GestureHelper class which would take care of a lot of the repetitive work for me. I’ve attached a sample project containing my gesture helper and a couple of examples of using it.
Recently I’ve been doing a lot of XNA work which involves loading XML files via the content pipeline and I frequently found myself wanting to do more with the IntermediateSerializer than the basics. I did a bit of a search and came up with the following blog article by Shawn Hargreaves that has helped me out loads:
I thought that I would take some time to write up a quick article about using linear interpolation to smoothly transition between two values in XNA. When I first found out how to do this it made a huge difference to the projects I work on. Some examples of when I use this are for time based colour cycling and gradually modifying alpha values to fade out a texture over a defined period. In general, I find that it is a simple method of adding some extra polish to any game.
A few weeks ago I spent some time upgrading my MicroStar Particle System from XNA 3.1 to XNA 4. For the most part this process went smoothly; there were quite a few changes to be made all over the place. However once I had cleared up all the build errors and ran the sample project I saw that my code for fading out particles when drawing them via my SpriteBatch instance was obviously not working.
This year I’m mentoring a team at my university in the Imagine Cup; I don’t have the time to actually compete so this is a great way for me to stay involved with it. On 04/03/2011 we received an email from Microsoft Ireland informing us that the team got through to the Irish Finals to compete for the opportunity to represent Ireland in the global competition.
This week I played around with the Bing Maps Silverlight Control to find out how easy it would be to get a map up and running in an application, place pins on said map and get the name of the country that the user has clicked on. I soon discovered that achieving this functionality was incredibly easy!
When I am working with XNA, I frequently found myself writing the same code in order to maintain lists of objects in memory and track free items that can be reinitialized to reduce garbage collection. Eventually I had enough of doing this and decided to implement a generic Pool class in C# that would take care of this for me.