University Dissertation and Project
Now that I’m finished with university and have a bit more time on my hands I thought I would write an article about my final year dissertation and project. The goal of my project was to create a framework to enable the creation of games which make use of multiple devices to provide a single game experience. In the case of my project I created an XNA game running on Windows which had its gameplay extended by menus and mini-games running on Windows Phone 7.
This project was motivated by users becoming continuously more connected with the internet, other devices and those around him due to the increasing propagation of smartphones among consumers and wider availability of high-speed wireless data networks.
At present, the examples of games making use of multiple devices are few in numbers. Two simple examples are Fable III Kingmaker and Full House Poker which both share data with their Xbox counterparts. These games don’t really extend the gameplay of the core game but rather only share data between the platforms. Possibly the most interesting example of a game making use of multiple devices is the Scrabble application for Apple’s iPad. This application uses the iPad to display the Scrabble board and allows users to connect their iPhones to display their Scrabble tiles.
This project was developed using the first release of the Windows Phone 7 Development Tools which unfortunately had the limitation of only allowing applications to make use of HTTP communications (unlike the newer tools for WP7 “Mango”). This lack of a sockets API limited how responsive the application would be which impacted the overall game design as it had to work well within its limitations. The main implication of this was that “real time” communication between the devices could not be achieved. The consequence of this was that the game experience would require the user to flick back and forth between the platforms rather than an experience which could have felt more “live” through continuous communication between devices.
The implementation of this communication process was the core problem in my project and required quite a lot of investigation and prototyping. The first step was to implement a simple framework which allowed communication between the devices by repeatedly polling a WCF web service. After I had completed this initial prototype I started investigating duplex WCF services over HTTP in order to remove the need to constantly poll a web service and improve the performance of the communication process. This worked great on Windows but unfortunately duplex WCF services could not be used on Windows Phone 7. After further investigation I decided to use raw push notifications to push messages through to the phone and to use a duplex WCF service to push messages to Windows.
Another important aspect of my project was the implementation of a reusable game engine. I decided to take the opportunity to try a different approach for this project and implemented a game object component system. I basically did this for two reasons; first is that I like playing around and learning new ways to do things and secondly I wanted to use the more advanced concept to impress my markers. The basic idea behind a game object component system is to define objects as a collection of individual behaviours rather than large classes to allow for more flexibility and modularity. Overall I was fairly pleased with my implementation however as the project progressed I uncovered some short comings in my implementation which I had to put up with and workaround due to a lack of time to spend on fixing it.
Some time soon I hope to write a blog article or two on my game engine and how to implement a simple game object component system in XNA since it proved difficult to find all the information I needed in a single place. I would also like to do a post mortem on my component system and identify what I think worked well and what I feel didn’t work as well.
No related posts.
Categorised as: University