THIS IS JUST A SUMMARY - If you want more detailed information on what I've been up to in a professional capacity please take a look at my Linked In profile. It has a much more detailed list of the work I've been involved with.
Games
Crash N' Sane Trilogy (PS4, 2017)
I worked as part of a team on the 'Crash N' Sane Trilogy' PS4 exclusive title. This was a remake of 3 Crash Bandicoot games from the original Playstation. I was primarily responsible for hooking up the Online Leaderboards and DLC management for the title.
Skylanders: Superchargers (PS3, PS4, Xbox 360, Xbox One, iOS, 2015)
I worked as part of a team that was porting the console version of Skylanders: Superchargers over to iOS and AppleTV. I was primarily responsible for creating, integrating, and managing a dynamic content delivery system to allow us to download chunks of the game on-demand so that we could fit on size-limited devices. This was essentially an improved version of the one I made for Trap Team, but updated to work in the new engine. I was also responsible for integrating the Apple Store In App Purchases on those platforms.
Skylanders: Trap Team (iOS, Android, Kindle Fire, 2014)
I worked as part of a team to port the console version of Skylanders: Trap Team over to iOS and Android devices. I was responsible for integrating ACTIVATE (our in-house cross-game social media and mobile feature back end) as well as implementing a a dynamic content delivery system to allow us to download chunks of the game on-demand so that we could fit on size-limited devices. I was also responsible for integrating the In App Purchases on iOS.
ACTIVATE Cross Platform Game Service Library
Skylanders: Swap Force (PS3, PS4, Wii U, Xbox360, Xbox One, 2013)
Skylanders: Lost Islands (iOS, Android, 2012)
This game library was also used for other Activision titles outside the studio where I was working including Call Of Duty: Strike Team, though only provided integration support for those titles.
The ACTIVATE system was discontinued late in 2014 since the various first-party backends had basically re-implemented the functionality we were providing at that time (e.g. cloud saves, friend sharing, etc...).
Skylanders: Cloud Patrol (iOS, Android, Kindle Fire, 2012)
I worked as lead engineer on a very small team in Unity3D to create a dedicated mobile title. I did lots of things on this project, from designing the level loading and progression systems, to In App Purchases, to UI layout and scripting. I was involved in this project from the prototype stage through its full life cycle including maintenance updates and post-launch feature additions.
Unreleased Guitar Hero Console Project (PS3, Xbox360, 2010)
On this project, I continued work on the UI editing tool, primarily focusing on easing the creation, editing, and orginization of scenes. The work included working with game engineers to overcome some of the shortcomings in the original animation system, as well as designing and implementing graphical tools to visualize and edit the UI and animation flow.
Marvel Ultimate Alliance 2 (PS3, Xbox360, 2009)
Over the life of the project, I was responsible for a large variety of different tools. Initially I worked with the audio engineers to create tools for processing, managing and building the sound data for the game.
Afterwards, I assisted the writers in developing a system for generating and updating placeholder audio and text for lines of dialog used in the in-game cutscenes and mission briefings.
After that I began work on a cross-title level editing tool that would eventually be used in multiple titles at the studio. After my initial work I was joined by other tools-team members to continue work on the level editor and expand its functionality to also allow for UI editing.
I was also involved in the evaluation of UI middleware for the project, primarily focusing on determining the scope of the engineering work involved in integrating the products into our game-engine and evaluating the appropriateness of the toolset for our asset creators.
DJ Hero: DS (Unreleased Nintendo DS Title, 2009)
I worked on a UI editing system that could be used to edit visuals both on target (live) and on the PC, as well as an object placement tool that used the same underlying components for level building.
The work done included designing and implementing a flexible, data-agnostic, level editing system - and then adapting it for use in a UI layout tool.
The basic work done here is still being built on today, and forms the basis of the current level-building and UI-building tools available at the company.
Transformers 2: Revenge of the Fallen (Nintendo DS, 2009)
I was involved in the creation of the build system used for the data portion of the pipeline (see below) as well as a small number of custom tools for the artists and designers.
Guitar Hero: On Tour (Nintendo DS, 2008)
For this project I primarily worked on plugins for the data-editing tool used for all projects, and assisted in the design of a tool used to streamline the generate of note-tracking data for the songs in the game.
Kung-Fu Panda (Nintendo DS, 2008)
This was the first title I worked on at Vicarious Visions. I was responsible for developing a graphical tool for editing a graph of rooms used to determine the flow between levels in the game. Each node in the graph would have a pre-determined set of possible connection points for edges to other nodes in the graph. The user was able to visually edit the connections of these nodes in the graph (each representing a screen of gameplay in the game).
I was also involved in the development of the build pipeline (in Jam) used to control how assets were built in order to improve the correctness of the build and reduce build times for users across the projects.
Bee Movie Game (Nintendo DS, 2007)
On this project I was involved primarily in flushing out the build system that began development in Kung-Fu Panda, completing them and updating them to suit the particular needs of the project.
Transformers: Decepticons / Transformers: Autobots (Nintendo DS, 2007)
For this project I worked with a game engineer to develop a system for synchronizing the data between the in-house data editing tool and the game at runtime to allow real-time visualization and editing of game assets.
Tools / Technology
These are systems that I worked on in a professional setting but that weren't tied to a specific project, or that were used in multiple projects. Primarily in the years up until 2012 when I was still working on the Cross-Title Tools team and not directly on a game. This list is not comprehensive, but gives a taste of the things I was tasked with. I am unable to provide actual screenshots or specific info because the tools were proprietary. As of 2017 some of them are still being used.
Nintendo DS Build System
One of the first tasks I had at Vicarious Visions was to assist in the overhaul of the build pipeline used for Nintendo DS projects. The existing build system (written in Jam) was showing its age and had been ill suited for the large amount of data-driven builds on the projects. A re-write of the asset (non-code) portion of the pipeline was performed with the goals of 1) increasing correctness (reducing the amount of unnecessary clean builds), 2) increasing speed, 3) providing flexibility and allowing more data-driven engine features, and 4) reducing the size of processed assets to efficiently manage the resources available on the platform.
The work involved writing Jam scrips, generating code that would be compiled across multiple phases, and automated analysis of the data to determine the minimum set of assets required for inclusion in the various stages of the game.
This build system was deployed on the Bee Movie and Kung-Fu panda titles, and served as the basis for the build system used in all future DS titles at the company.
Custom C# Build System
Along with one other engineer at Vicarious Visions, in our spare time, I helped to develop a custom build system designed to overcome some of the shortcomings of other publicly available build scripts. I assisted in the design and implementation of a system where build scripts were written in C#, defining the set of tasks that would be performed and the outputs generated. The goals of the system were to provide a readable, easy to debug, performant and flexible build system that could be used to process large number of assets and provide reporting.
The user defines scripts in stand-alone C# source files that examine the data in the game and generate a set of tasks that need to be performed and outputs that need to be generated. The source file is then consumed by the build system that manages the file dependencies and ensures the stages are executed in the correct order.
Some features included:
- Support for both file system and metadata dependencies
- Phased building to guarantee order of tasks
- Customizable number of worker threads and thread managment
- Automatic file-hashing and input set dependencies
- Dynamic task generation based on customizable file-scanners
- Useful error messages and stat-tracking
The build system developed was used for a portion of the asset build system in Marvel Ultimate Alliance 2 and is currently being used in a number of projects at the company.
Pluggable Game-Data Editing Tool
I have extensive experience working on an in-house plugin-based data managment framework.
The framework is written in C# and primarily deals with loading large sets of data from many file-formats so that they can be edited and presented in a consistent way by the designers and artists.
The front-end is highly customizable, and I have developed a large number of User-Interfaces to simplify interaction with the data in both Windows Forms and WPF.
I have also been involved in working on the low-level systems of the framework, as well as on the cross-platform real-time data synchronization system built in.
Automated Error Checking and Correction
A common problem that non-technical users have when working with complicated data for game engines is that there are many unwritten 'rules' about how the data should be structured. There may be particular rules and best practices about how data can be structured that are known only to a few experts in each particular system. This is a problem that we struggle with constantly on the tools team, where users are often working with data for systems they have only limited experience with.
To combat the problem, I came up with a system focused on writing simple blocks of code to automatically check for obscure data errors. The goal of the system is to encode this expert knowledge and provide a simple, friendly way for non-experts to fix any issues that arise.
When a problem is detected the user is informed in an un-obtrusive manner so they can continue with their immediate task. Afterwards, they can examine the list of known issues and initiate automated fixes to resolve them.
The system is designed to be easy to extend, and has met with positive feedback from both engineers and asset creators alike.
Build Status Monitoring
On projects with large numbers of people working together, checkin policies and automated speed can become an issue. The whole team can be effected if someone checks into a code or asset change that breaks the build, but is unaware that they were responsible.
At Vicarious Visions I've been the primary developer and owner of a product designed to monitor the state of the users check-ins, and general build health. The program runs as a tray-icon and informs the user when they have submissions that have not passed the build, who is fixing the build (if it is broken) and a number of quick-reference links to commonly used pages.
The program uses XML-RPC to interact with a custom server that manages retrieving updates from Perforce (our source-control system) and Pulse (our automated build system). This allows the program to scale to large numbers of users, and is currently a required piece of software on all developers machines at Vicarious Visions.