Aaron Brown's Portfolio
Rugby Challenge 2 - Lions Tour Edition ( PS3 / XBox360 / PC )
2012 - 2013 Sidhe Interactive
On Rugby Challenge 2 I was primarily assigned to work on multiplayer code, leaderboards, commentary and steam specific features. I implemented a language switch system to easily allow both French and English commentary and in game referee vocals. I modified the way we loaded team and player data to allow customised teams to be transferred between players before online matches. Combining this feature with statistics normalisation this allowed players to play online with unbiased statistics while keeping their custom look and naming for their team. I cleaned up and streamlined the multiplayer flow for all three platforms. Due to the change in flow I was required to reimplement the voice chat system for XBox allowing better control over which players were allowed to chat. I was also placed in charge of maintaining and configuring the steam builds. Since there have been many changes in the build processes used by Steam since RC1, I also implemented a new build pipeline for steam builds.

Website: http://rugbychallengegame.com/
MetaCritic: tbd
Jam Build System
2012 - Personal Project
While working on an Android / iOS title that was being developed using both Visual Studio and XCode, I found that a lot of problems were coming from the two projects. So out a matter of personal interest I investigated several custom build systems. After testing CMake, Gyp and Premake, I found Jam to be the best. Jam does not create lots of temporary files, nor does it require any specific layout, plus, according to reviews, it is very fast. From this I designed a file format and layout that allowed me to easily configure and build static libraries, dynamic libraries, executables and packages (eg iOS/Android) from multiple OSs to various platforms with specific compilers. I have tested it builds from Windows and OSX for PC, OSX, iOS and Android.

Source: Jam.zip
Rugby Challenge ( PS Vita )
2011 - 2012 - Sidhe Interactive
After completing Rugby Challenge for console we began porting it to the new PlayStation Vita. My primary role on this project was to implement the multiplayer online features. I implemented the same determinism based online multiplayer system as on the console versions. After completing the online portion I worked on improving gameplay performance to maintain as close to 30fps as possible. This required me to re-implement several gameplay features that were not efficient enough for the Vita.

Website: http://rugbychallengegame.com/
MetaCritic: 69 / 100
Multi-threaded Messaging System Spikes
2011 - Personal Project
Since working on an experimental engine at RedTribe I have been very interested in designing an efficient event driven scalable multi-threaded engine. In order to test several of my ideas, I developed a series of spikes. These spikes tested the basic STL functionality that I had built up for my personal projects, tested the multi-threaded messaging system design I had created and to test a timer based scheduler.

Source: Spikes.zip
Rugby Challenge ( PS3 / XBox 360 / PC )
2010 - 2011 - Sidhe Interactive
Rugby Challenge was a console game designed to be released for the Rugby World Cup in 2011. I was assigned to work on audio and network programming. The multiplayer system required matching 2 consoles together with up to 4 players per console using a determinism based state synchronization. This meant that I was required to make all the existing code deterministic as well as develop processes to ensure future code did not break determinism. This involved several safeguards around random numbers, frame time, threading and input. On top of this I was charged with implementing all of sound effects, DSP effects and music. In order to do this I implemented a data driven system to easily create event driven DSP effects using FMOD. This system was used to drive slow motion sound effects and crowd emotion. I also implemented a replay system that used various methods to minimize the memory required. It carefully selected the amount of detail to record for each player based on their focus in gameplay, then compresses the data by removing redundant frames and compresses value ranges.

Website: http://rugbychallengegame.com/
MetaCritic: 73 / 100
Japanese Kanji study tool ( iOS )
2010 - Personal Project
In order to assist my study for the Japanese Learning Proficiency Test I decided to create a card based study tool for my iPhone. I originally started with a simple hard coded application, but later felt that a more generic data driven solution could be useful to others. I developed a console application that would convert the standard JDICT XML format into a CoreData based database. From this I could create cards for Kanji, vocabulary and grammar to test myself on. Unfortunately I decided that to develop this app correctly would have taken up more time than I could spare while studying, in the end replacing my custom app with an open source application Anki.

Source: JLPTFlip.zip
UpSide ( iOS )
2010 - LuckyNeko Entertainment
During my University degree some friends and I designed a modified version of Tetris that involved rotating the playing field rather than controlling the pieces on the screen. Having recently acquired an iPhone, I thought that the motion sensor in the device would work nicely with this concept and decided to develop a prototype. I decided to use Cocos2D for the game engine as it implemented all the basic functionality I needed and allowed me to focus on development... and learning Object-C. I designed and implemented the ability to save games, track high scores and easily add additional gameplay modes in code. In order to do this I used an MVC pattern, separating the game state into constant data (Elements) and variable state (Instances) to save memory and allow easy saving. In the end the fast paced nature of Tetris did not work well with motion sensors, but through adding touch screen buttons I was able to create a relatively playable demo. Unfortunately this project had to be put on permanent hold, but developing my own iOS game was an invaluable experience.

DragonFly Game Engine
2009 - Personal Project
Back in early 2008, while working on SpaceChimps, there was a lot of talk about new designs for game engine logic. This made me interested in the idea of having a highly modular engine where each component could run in its own thread and communicate between components via messages. I then extended this idea by choosing to make everything in the engine a component of sorts making the whole engine a framework that supports various plug-ins built around third-party libraries, eg SDL, Box2D, OGRE3D. These plug-ins would be in the form of auto-loaded DLLs or static libraries allowing the engine to support any platform. This project is also helping me to learn about the difficulties of game engine code design, meta-programming using templates, functors and virtual functions and the implementation of various other elements that a general gameplay programmer would not get the chance to develop. This project has been merged into later projects.

Source: DragonFly.zip
Under Pressure ( PC )
2009 - University Project
During the final year of my Bachelor of Multimedia / Bachelor of Science at Swinburne, I worked with a team of six other students on a final year project. Our final year project was to create a small demo for some of the gameplay in Prophecy Games internal IP project 'Under Pressure'. My role on the team was to handle all of the enemy AI, including a Melee Attack system, a group AI ticketing system, basic state based programming and a little bit of animating. I am unable to post all of the code, but I can post the code for my Melee system and AIMediator system as these do not contain any specifics about the game. The AI Mediator works off the concept that to engage an enemy you must request an 'Attack Ticket' from that enemy, the enemy then selects the best candidate(s) from the list of requesters and hands out an appropriate number of 'Attack Tickets'. This system allows for each actor to decide for itself if it wishes to abide by the attack ticketing system or not. The system also supports the ability to hand out tickets for other decisions, such as if the enemy wants to be in the front row, mid row or long range it can request a 'Attack Position Ticket' and will be sent a ticket for the best location for it to be. The Melee system is very simple, it checks for actors within a range of a specified bone on the attackers body then applies a force and an amount of damage to those actors. The system also keeps a list of who has been hit by the current attack so as not to double hit characters. The key issue that can occur using this method is if the bone moves too fast or if there is a significant frame rate drop the system won't test the space between the bones position in the last frame and its position in the current frame.

Source: UPAIMediator.zip
Source: UPMelee.zip
Bake Build System
2009 - Personal Project
While working on my experimental game engine project DragonFly I decided to build a simple scripted build system to support its structure. The script utilizes PyYAML (included in zip) to read 'Bakefiles' that hold target information (see BakeTemplate in zip). These files are then combined to make a dataset of targets and their dependencies. This allows complex projects to be built with ease. For example, my other project 'DragonFly' is a dynamic library that is built from several static libraries, and will dynamically load several bundles. The script at the moment supports GCC compiler for both Win32 and Darwin. In the future I hope to separate the compiler code into data files to more easily allow users to switch between preferred compilers on their platforms, and hopefully allow cross-platform compilation.

Source: Bake.zip
Unreleased Title ( Wii )
2008 - 2009 - RedTribe
While working at RedTribe I was assigned to a new team working on a Wii rhythm game. I was on the project from its conception until it was canceled shortly after its alpha milestone. The Project Manager and Creative Director for this project were both Japanese, the later speaking very little English, requiring me to assist with communication with the rest of the team. I assisted by proof reading English documents and emails, and helped mediate complex topics between the Creative Director and other team members. During the prototyping phase I was assigned to research the motion detection capabilities of the Wii remote. I researched gesture detection as well as basic rotation and faux position tracking. From this research I helped develop the core gameplay of the game with the Project Manager and Lead Designer. I was also assigned to work on a system to connect faux in game messaging with the Wii internet messaging system to allow basic inter-game communication. During the production phase I was responsible for implementing the chosen input system using the Wii accelerometers and the WiiFit board. This included creating a tool to help build play routines for each song, a system to connect the tools data with the GUI, the GUI itself and a method for informing scoring systems. Due to the intense amount of GUI code that was written I gained a fair amount of experience working with the Wii profiler. I also worked with the sound engineer to produce a simpler way to script sounds using basic data files, decreasing the necessity to recompile the artist builds as often.
SpaceChimps ( XBox 360 / Wii / PS2 )
2007 - 2008 - RedTribe
When I started at RedTribe I was placed on the SpaceChimps team working on a 3D platformer game based on the movie of the same name for XBox 360 / Wii / PS2. When I joined the team the project had just moved into production. During this time the majority of the companies staff were working on a critical project, so our team was still fairly small. Because of this I was assigned to work on all of the enemies plus handle all of the Wii testing. This being my first professional project, I spent a fair amount of time adjusting my state engine and code designs, as well as adjustments to suit recent game design changes. To help the story flow within the game i wrote a system to allow the player to talk to NPCs. This system was a basic event driven system that used an XML file to list all of the commands to run on a specified event. This allowed conversations to be triggered via any in-game event, including another conversation, allowing multiple parties in a conversation as well as multi-branched conversations. As the game neared completion the lead animator and myself were placed in charge of designing and programming combat in general as well as the final boss fight. This took quite a large amount of time as neither of us were designers, but it was very educational. I was also put in charge of implementing the first-person camera for the games shooting mode. This included testing and adjusting the feel of targeting on all of the platforms at which time I implemented the use of the Wii pointer into the companies engine. Nearing the completion of this project, the company hired two Japanese artists that required some translation assistance. Since I was the only person in the company with any knowledge of Japanese I volunteered to provide basic translation and assistance with English.

Website: http://www.spacechimpsgame.com/
MetaCritic: 57 / 100
Weighty Weapons Mod
2006 - Personal Project
In 2006, during my second semester of my Bachelor of Multimedia / Bachelor of Science at Swinburne, I studied a subject 'Principles of Game Design'. This subject involved us developing a mutator for Unreal Tournament 2004. Since I am a programmer, and do not have much art ability, I decided to try and make something that modified game play without requiring art changes. I had two ideas. The first was an Alice in Wonderland style mutator where you grew when you picked up ammo or weapons, and shrunk when you picked up health making it a game where picking up ammo was dangerous, while health would cover up for it. My second ideas was Weighty Weapons, where every gun you carry adds to your weight thus slowing you down. In order to do this I added a weight metric to each weapon, editable via a mutator menu, then set a minimum and maximum speed, also editable. I then had to make sure it was easy to drop weapons, so that you could shed weight. The biggest part of this mutator is by far the menu, which is very customizable, and can support any new weapon mods you may add.
This project received a Special Mention at the Melbourne eGames Expo Mod competition under the single player mod category.

Source: WeightyWeapons.zip