I am an experienced programmer and have worked on range of titles including several AAA movie tie-ins. My main interest is in gameplay programming where the focus is on the user experience as I love to tinker, tweak and improve. I have taken a keen interest in design of products and user interfaces while also keeping up with new technologies and mentalities that streamline software development, improve quality of product, increase team efficiency and preserves quality of life for the developers.
Small and dynamic teams are my preference especially those that takes pride in the quality of work and places the well-being of the developers over outdated working processes and practises that are common place today.
My weaknesses lie in my fondness for classic games and niche products or projects, especially handhelds like the GP32 and Dingoo A320. Kickstarter is constantly tempting me with lots of cool and creative projects to back.
Below is a showcase of the projects I have worked on in the past. Please feel free to contact me if you are interested in the work I have done and would like to chat further.
Harry Potter: Order of the Phoenix was my first job in the industry as a level integrator leaning towards the technical side more than design.
My role in the project was to develop and implement much of the meta-game design which was used to encourage the player to explore the world of Hogwarts in exchange for rewards such as video interviews with the cast and concept images.
All the logic for the game object unique interactions and reactions were controlled through C++ 'scripts'. I also worked on centralising common game behaviour, meta-game achievements, total game completion and participating in design brainstorms.
I primarily worked as part of a cross discipline team of a few level integrators, a 3D artist and animator and a VFX artist to create a lot of the meta-game content and logic. Task tracking and planning were done via daily stand ups.
As my programming ability was among the highest of the integrators, I was providing the majority of C++ support for the group and was able to work on some of the underlying gameplay systems. This included refractoring and extending the ingame prompts system and mini game integration and development.
Harry Potter: Half Blood Prince was my second title and was the start of my career as a gameplay programmer. I was tasked with prototyping and implementing the Potions minigame which is one of the three core game mechanics in Half Blood Prince. Starting from the base design, the game was iterated over many stages and the design was changed to reflect elements of the original design that when implemented, was deemed to be poor quality or not enjoyable.
Controls and gestures was a core focus especially on Wii and had gone through many iterations with Kid tests to reach a version that could be used well by the target audience.
Given the large amount of unique assets that the potions mini game used, it really pushed the memory constraints of the zone loading system of the in house engine. For the prototype, I had all the assets in one zone and that held until we started to create all the possible ingredients and VFX for all the recipes that we were planning to have in the game which easily overrun the memory budget for the zone slot that I was using.
I ended up making use of the some smaller memory slots for the ingredient assets for each recipe and have the mini game dynamically load the correct assets depending on which recipe was chosen and kept the zone slot for the common assets used for each recipe.
From the GamesRader Wii Review: "Let's start with potions, as it's the Big New Thing in Half-Blood Prince. It's brilliant. ... Not having ever made a potion we can't judge how accurate it all is, but the gestures are spot-on and fun to perform - it's a truly great minigame."
I also helped a new hire with C++ queries as she mainly came from a Java background and also introduced her to the gameplay systems and in house tools that we had in place.
Need for Speed: Shift was a bit of a departure from my previous gameplay orientated role as I was asked to be a frontend programmer using a Flash based library on an existing engine.
As it was an old codebase and toolset, there were not many developers at the company that knew exactly how the pipeline worked to export a Flash screen into the game so some time was spent at the start working out the tools and processes.
Much of it was working with system tools such as Process Explorer to work out how the pipeline actually built the assets.
As the frontend still had all the graphics from an old game, I stripped all the screens down to their barebones (text only) ready for the artist to added new graphics and animations at a later stage.
The livery select and editing screens were my main contributions to the game dealing with logic, presentation, saving and loading to memory card and UMD, including dealing with the TRCs associated with files on external media.
(It's a little known fact that the rivals in the game were actually developers at EA at the time)
I worked on prototyping a two player version of an existing mini game on the Wii in a similar approach to how I developed the potions mini game in Half Blood Price. Unfortunately, I can't say much about work I did as it directly relates to the IP.
As we were working with outsourcers for a lot of the models and animations but didn't want to send the entire game over to prevent possible leaks of the game, I worked on creating a blue room sandbox level where they could test their models in the game engine before sending the work over back to the studio. I added some debug functionality to the sandbox that allowed the user to play any animation on a selected model and also scrub through the frames to look possible possible problems with the exported data. This allowed the outsourcers to do a large amount of testing in game without having access to the full game.
Other side work also included adding some features into the existing development tools with requests from the development team such as being able to build the game data and launch the game in one click and speeding up Wii image build times investigating the Nintendo's SDK tools performance on Windows XP against Windows 7. It turned out that because Windows 7 had improved file caching at the OS level, it really did provide a significant improvement of 30%-50% reduction in image build times simply by upgrading the OS.
EA Create was my last game at EA and during that time, I was a support engineer for the team taking on tasks that were outstanding but didn't fit in any of the other developers specialised areas.
My main focus was on monitoring and maintaining the daily code and data builds, dealing with any build issues that occur which were usually memory related. This meant that I was also maintaining investigating our memory usage in game which became more important as we moved from a level based streaming system to a dynamic loading on-demand per object system. I was constantly balancing the memory budgets every day as the game engine systems slowly migrated to the memory management system but we also needed a working build every day which can become difficult as more and more content is added continuously.
Other jobs I tended to included working with IT to have PCs ready for newcomers from the moment they arrive via creating a base image for the PCs and maintaining our in house tools auto installer, providing support for content creators with our in-house tools, updating our continuous integration tools and developing a tool to sync two Perforce depots that was started on the previous unannounced project.
WMS Gaming was my first job outside of the game industry and since worked on two video slot machine themes, Commanding Officer and Periscope Pays which was based on the Battleships IP from Hasbro. Initially, there were meant to be two programmers on the project (one per theme) but as resources were tight, I ended up being the main programmer on both themes and developing in parallel. Thankfully, both shared a common base code which helped a lot.
Each theme had their own unique set of bonus features that are available to the player to trigger. As there isn't much depth to the games compared to console games, there is a heavy focus on the player experience such as how everything is presented and fed back to the player. As the Producer and Designer were at the head office in Chicago, we were constantly sending builds up for review and getting feedback during the early stages to ensure that we had the experience and game flow correct early on.
A lot of focus and testing is placed on the strict technical requirements that states and countries have for these games which centre around accuracy, reliability and accountability. Common test cases being able to return to the same state if the machine is power cycled and being able to look at the games history if a dispute is raised from the player.
During this time, I also developed a small range of tools for our studio to use to help reduce some of the headaches we experienced during the project. The largest one being integrating translated graphics into the game. There was no effective method to manage the sheer number of assets which led to a large amount of time being lost. I created a simple tool with documentation using C# and WPF that took the game's directory structure and allowed the user to easily compare assets side by side and if need be, directly open the folder containing any one of them.
I also installed and maintained a continuous integration server using Jenkins which performed static code analysis using CppCheck and PMD on every project for two studios. It also deploys nightly builds to the teams and also able to retrieve builds from other servers which used to involve a programmer and the use of their development machine.