Please Note: I am currently not looking for further employment at this moment in time.
A PDF/DOC version is available on request.

Personal Details

Name: Steven Campbell

Date Of Birth: 20th March 1986

Nationality: Scottish/British

Current Location: Dundee, Scotland

Current Occupations:
Director at Arcade Badgers Limited
Software Engineer at YoYo Games Limited

Contact Email: stuckie@arcadebadgers.co.uk

Portfolio and Blog: http://www.stuckiegamez.co.uk

Education: University of Abertay-Dundee
BSc Computer Games Technology with Honours
Final Classification – 2:1

Additional Qualifications:
Young Enterprise Scotland 2004 – Credit
Philips amBX Dare Award – 2nd
Dare To Be Digital – 2008

Job History

December 2013 – Current
Software Engineer at YoYo Games

July 2013 – Current
Director at Arcade Badgers

September 2011 – August 2012
Programmer at Atomicom

January 2009 – September 2011
Programmer at Playbox

Released Titles

July 2014 – Grim (PC/Mac/Linux) – Programmer, Audio, Additional Design
July 2013 – Germies! (HTML5) – Programmer, Audio, Design
June 2012 – Bang Bang Racing (PC/X360/PS3) – Programmer
May 2012 – Angry Wife (Android) – Uncredited
May 2012 – Cats and Bombs (Android) – Uncredited
May 2012 – Hawthorne Park (Android/Tegra) – Lead Engine Programmer
May 2012 – Tiny Jewels (Android) – Uncredited
December 2011 – Switch+ (iOS/Android) – Lead Engine Programmer
December 2011 – The Best Christmas Game Ever (iOS/Android) – Lead Engine Programmer
November 2011 – Tiny Gems (iOS) – Uncredited
July 2011 – Switch (Android) – Lead Engine Programmer
May 2011 – Bang Bang Racing THD (Android/Tegra) – Lead Engine Programmer
Unreleased Prototype – Platform Game (PC Prototype/Wii) – Programmer
Unreleased Prototype – Bang Bang Racing (Wii) – Programmer

Typical Work Tasks

Playbox/Atomicom

Typically, my work was geared towards furthering the system and engine. I was instrumental in adding mobile platform support to the console-oriented engine. This involved an overhaul of the graphics system, and the addition of platform abstraction interfaces to manage lifecycle changes and native code modules ( such as bridges between Java and Objective-C. )

I began a reimplementation of the import pipeline which included management and customization of a 3DS Max 2009 plugin through to the maintenance of a metadata file format, and creation of mesh conversion tools. I created a metadata editor that can manipulate both text and binary representations, and strip out to game-optimized binaries. These tools were generally written using wxWidgets to provide a cross-platform user interface.

I’ve also written, developed and maintained a Component/Entity Database system, and a Script System which was extended towards a full bodied Prototype System to quickly iterate over gameplay ideas via Lua. Additionally, I wrote and developed a cross-promotion system using the Web2Py backend, to provide custom adverts and tracking data.

In general, my work can be seen as primarily R&D with a view to a clean implementation, and usually this involves first bring-up on new platforms.

Arcade Badgers

With Arcade Badgers, I’m primarily involved with all aspects of development, including sound, music, art and design tasks. We originally started with HTML5 and began to build an engine to bind the HTML5 Canvas and WebGL specifications to platform native libraries such as OpenGL and DirectX. However, with Germies! not doing as well as had hoped, this was pushed to the sidelines and the engine was retargeted as being purely “native” for Android – including OUYA and GameStick – Linux and Windows to begin with; with a view to adding other platforms at a later date.

Personal Projects

I further my programming skills and experience by partaking in a number of projects.

Arcade Badgers Limited

Arcade Badgers is my trading entity for commercial endeavours. It has a specific goal of breaking down barriers of traditional gaming, to make it more accessible in a variety of ways.

This includes making games more accessible to those living with various disabilities, as well as taking traditionally “hardcore” genres such as Real-Time Strategy, and simplifying them to make them more appealing to a wider audience, and potentially act as stepping stones toward more “hardcore” examples of the genre.

GLESGAE – GL ES Game Application Engine

GLESGAE is the in-house Arcade Badgers engine, and a public version of it is available on github: https://github.com/stuckie/glesgae

Ludum Dare

I regularly take part in Ludum Dare – http://www.ludumdare.com – which is a 48-72 hour game development competition and jam. Through this I have produced a few interesting game demos, and have used it to further progress on GLESGAE a number of times.

A list of my entries and code examples can be found at: https://github.com/stuckie/ludumdare

Language and Platform Experience

I primarily program in C and C++ and examples of my personal coding style can be seen throughout GLESGAE. I do, however, always correspond to any coding standards that are set on a project, even if they are at odds to my own style.

Generally, I prefer a Component-based paradigm, which is more closely linked to C-style coding than the usual C++ OOP paradigms, and therefore can switch between C and C++ easily. GLESGAE was originally written with C++ in mind and has recently been changed to ANSI compliant C.

I additionally have experience in scripting systems – primarily Lua and JavaScript – and the process of binding them to a C++ engine in a manner to expose system interfaces, along with the intricacies involved in balancing “slow” scripted logic and “fast” native code.

I’m also relatively confident with Python through use of Web2Py and SCONS.

Personally, I primarily code on Linux systems, and have knowledge of using GDB and Valgrind from the command line where necessary. I additionally have experience on Win32 systems, as well as the Playstation 3, Nintendo Wii and Wii U, and Xbox 360 consoles, along with iOS and Android. I also have experience on various “homebrew” and hobbyist platforms such as the OpenPandora and GamePark handhelds.

I have recently been cleared for work on Nintendo Wii U and 3DS platforms, as well as Sony Playstation 3 and Sony Vita.

 

Personal Statement

For a number of years, I worked at Playbox and continued onto Atomicom. This was a small company and therefore gave me the opportunity to have a taste of all manner of disciplines; from tools programming, to graphics programming. Throughout the years I have worked on the Nintendo Wii on a game which was sadly shelved, although helped design the original Component/Entity System which I then took over management of and extended later on.
During work on Bang Bang Racing, I was exposed to the Playstation 3 and Xbox 360, and built various systems to be platform neutral, along with a State and Phase system to arbitrarily chunk up pieces of logic into ordered Phases, primarily in aid to offload logic onto other threads.
Additionally, I provided tools to edit our binary meta-data format before it entered the game. This included a visual editor written with wxWidgets, and helped update and maintain our pipeline which converted FBX files exported from Max into our custom formats. This was then reimplemented to use Collada and a new set of tools to aid in project iteration time.

Sadly, I took ill and had to leave Atomicom in August 2012, and it was not until April 2013 before I was back on my feet again. I then started going through the New Enterprise Allowance scheme, and with the help from The Princes Trust and Business Gateway, I started Arcade Badgers Limited and released Germies! in July 2013.

I’m a very self-sufficient programmer who can be left to do something, and will have it finished to a high standard within the time frame specified. I can just as easily work closely within a team – be that within the same room, or remotely as needed. I have no qualms with going out of my way to research anything that I need, and personally enjoy looking outside the box to see what technology can be capable of, or for unique solutions on given problems. I feel that I would be a valuable asset to a company of any size – be it a small company who may need more generalised programmers, or a larger company. In this instance, I would be able to specialize in one specific area and be more acutely aware of how it would affect other areas of development.