Experience

I graduated from Warwick University in 2007, with a 1st class MEng in Computer Science. I went straight from this into a job at Rare Ltd., where I currently work as a Gameplay Software Engineer, programming for the Xbox 360 and Kinect. I worked on the very successful Kinect Sports as the main gameplay engineer on table tennis, and had worked on various prototypes before that.

Skills

All of my professional experience is with C++ on the Xbox 360, but in my own time I also develop for Windows and Linux PCs. I am also comfortable with C#, Python and Java. I have been working with Kinect for two years, which must make me one of the most experienced Kinect gameplay engineers around!

Style

In general, I would say my style is modern and disciplined, but pragmatic. I like to do things in the best way they can be done, and will invest time getting things that way. Change is good. The pragmatic side of me knows the cost of change and of other priorities though, so I know when something is "good enough".


Areas of interest

The thing I enjoy most is gameplay programming. To me, that includes game logic, controls, cameras, AI, physics, animation: all the bits that define the 'fun' of the experience. Whether iterating quickly on prototypes with a designer (or by myself), or polishing and tweaking things until they shine - it's all brilliant.

 

I'm also interested in the development process side of things: continuous integration, automated testing, project management, and so on. It's completely different to the creative job of gameplay programming, but there's a strange part of me that craves organisation too!


Games

Cities in the Sky

Cities in the Sky

Cities in the Sky is a game about building on a floating island whilst keeping it balanced, and keeping the little people living on it alive.

I've been developing it on and off since I was at university, both as a portfolio piece and as a sort of test-bed for my development ideas. I work on it alone, doing code, art and everything else. I figure it's an excellent way to get a deep understanding of the whole of the game development process!

It's written in C++, using several middleware libraries (OGRE, Bullet, irrKlang, OIS). The 'engine' part of it is a separate library, 'bengine' (I know), which is also in use by Banditos. It has a very flexible game object system based around components, which I have spent a lot of time designing and implementing.

Links

Kinect Sports

Kinect Sports & Season 2

Kinect Sports is the current #1 sports game for the Xbox Kinect sensor, which at the time of writing has sold 3.32 million copies according to VGChartz. The sequel, Kinect Sports: Season 2, is hopefully going to better this once it is released at the end of October!

On Kinect Sports, I worked as the main gameplay engineer on table tennis, working on the Kinect gestures, game logic, AI, animation, physics, and plenty of other assorted bits that needed doing.

On Season 2, due to the massive jump in complexity of the gestures required, I was dedicated to working on the swing and other gestures full time, though of course I helped out with other gameplay tasks when needed.

Both games were a huge challenge, but I'm especially proud of my work on the golf swing gesture. Even if I say so myself, it works fantastically well given the side-on stance, speed of motion, and wide range of swing styles it needs to cope with! It's not just PR hype; I have graphs to back that up :)

Links

Banditos vs. Federales

Banditos vs. Federales

A local multiplayer stealth game, pitting a team of banditos trying to steal everything they can, against a team of federales trying to stop them.

Banditos vs. Federales is a game I am developing with some colleagues from Rare, outside of work, for a bit of fun. We're massive fans of local multiplayer games, especially cooperative games with competitive undertones. Banditos was born out of the need for a perfect lunchtime game to play at work!

Like CITS, Banditos is programmed in C++ using several middleware libraries, tied together using bengine. The flexibility of bengine's object system means programming gameplay is mostly a case of writing script-like components, and composing objects from those.

Links