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, where I worked as a Gameplay Software Engineer on Kinect Sports 1 and 2, for the Xbox 360 and Kinect. In 2012 I started work at Creative Assembly as a Senior AI/Gameplay Programmer, on Alien: Isolation. As of December 2014, I'm working at Lionhead, on the new Incubation team.
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 combine to create the 'feel' of the experience. Whether iterating quickly on prototypes, 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!
Alien: Isolation is a first-person survival horror game developed by Creative Assembly, for PC, Xbox One, PS4, Xbox 360 and PS3. On it, I was in charge of pathfinding and navigation, and also work on AI, locomotion and general gameplay. I also own all offline content-generation, which includes automatic generation of the navigation mesh, cover points, and lots of other useful markup.
I've also been involved in improving our build process reliability and speed. I wrote a SHA1 hash-based dependency graph, with sharing of cached intermediate results using a MongoDB database. As part of that I've learnt a ton about administering Unix servers and MongoDB instances since it's now critical to our builds.
It's very different to what I've been used to at Rare since it involves a lot of systems and tools work, which is less creative but definitely a valuable set of skills to have, and still very interesting!
Kinect Sports & Kinect Sports: Season 2
Kinect Sports is the #1 sports game for the Xbox Kinect sensor, which at the time of writing has sold 5.87 million copies according to VGChartz. The sequel, Kinect Sports: Season 2 hasn't done bad either, sitting at 2.21 million copies sold, also according to VGChartz.
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 :)
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, CEF). 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.
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 is a game I am developing with some friends from Rare, in our spare time, 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. I am also using Recast for navmesh generation and pathfinding, which CITS didn't need.