I am an experienced games programmer who has a wealth of experience in multiple roles, platforms and projects of various sizes ranging from console AAA packaged titles, live browser social games with millions of active users and smaller, bespoke mobile applications for big name brands.
Flexibility is one of my greatest strengths with gameplay programming is my speciality as I love to experiment, to tweak and to improve. I have supported senior/lead developers in their tasks, led small teams, mentored and trained multiple developers throughout my career.
I am good at what I do. I’ve been able to work in multiple roles at various capacities and adapt to the scenario, filling in when needed such as becoming an acting SCRUM master while liaising with multiple stakeholders and switching back to a team lead later on.
The strive to to be better is always there and as mentioned, I am good but not the best. I learn what I can from peers, reading materials, video lectures and existing projects. It’s only gotten easier in recent years with more and more free material being made available online and with sites like TED talks, there is always something for me to be inspired by and research further into.
I also intend to go a step further and actively mentor and direct a small team made up of students from January 2014 to develop a small open source mobile game. This gives me the opportunity to pass on my knowledge and experience to the next potential generation of developers and it gives them a decent sized portfolio piece to use as a demonstration of their skills.
My passion is in design of all forms, user interface, product, graphical, architecture and even interior. I have a more then keen interest in it as the subject is fundamentally about problem solving which is what we do as developers. The approaches are similar and it also feeds into the creative part of me.
Ultimately, this what drives me; being able to learn, design, solve and create a product be it virtual or otherwise. It’s what I love doing and what I always be looking for in potential new roles and projects.
Having a good work/life balance is something I strongly believe in and uphold. I look out for the people I work with and the people I am responsible for, especially juniors who are more likely to burn out due to enthusiasm and attempts to impress. In a nutshell, I care about people.
Finally, I am as good as my word. I take this very seriously and always follow through on what I promise.
Hopefully this gives an idea on the type of person I am and if you have got this far and are interested in talking to me, feel free drop me a line!
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.
I joined Happy Finish to further widen my experience and knowledge in related interactive media industries. It was a much more client facing role then expected with frequent meetings (in person and over phone) providing progress updates and clarifying briefs in order to calculate job costs accurately as accurately as possible.
The department's main aim was to use existing software and/or hardware (e.g Oculus Rift, Leap Motion, Kinect) and pair it with the quality of the CG work that is created in-house to create highly polished applications.
Examples include the Bazooka Budz Augmented Reality mobile app which I took ownership mid project and carried it through to release on both the Apple and Google Play Stores. Another was Happy Interactions which I oversaw as tech lead evaluating and experimenting with various hardware looking at what could be used pending the environment of the application.
The interactive department was still relatively new and I was able to bring my industry experience to the team, mentoring the junior programmers, providing further feedback for usability within the apps, driving development processes and adapting them for a production driven company.
This was a challenge as the workflows that were in place and the managers were used to a linear schedule of production rather then a typical development cycle which is harder to predict at the beginning of a project and made quotes difficult to calculate. Over time, the interactive department educated the sales team and managers which meant they understood how the early estimations are calculated and they can communicate back to the client in a similar fashion.
At the same time, I learned the process of how the sales teams pitches ideas to perspective clients and with that understanding I could frame my estimations in the correct context and highlight potential issues and/or provide further creative input to the pitches.