Here, you'll find all of the things I've worked on in the past, as well as a few things I am working on presently.
Mecha Trigger is an online multiplayer arena-based mech combat game set in the distant future. You control your mech by typing in commands for each of its 3 subsystems in real time. This game was designed for fast-paced type-fighting action!
Development on this game is currently being done in Unity 4.6.
It has been in development since September 2014, and is currently in the pre-release playtesting phase.
Aliens have begun to invade earth, using gigantic mechanical armor. The USA captured several of the mechs, and proceded to attempt to convert their controls so that humans can use them, but needed to use them before the conversion was complete.
As a result, pilots have to use the testing interface - a command-line interface, where all commands need to be typed in on a keyboard.
I primarily took care of the enemy AI in this game, along with helping with a few aspects of the design.
The AI in this game was designed to be unable to cheat. Players have to type in their commands manually, one at a time, and are unlikely to queue up commands very quickly, or type their commands properly every time.
To bring the AI down to a more human level, it uses an event-based timer and a series of command queues to force it to only be able to input one command, for one system, and only on a set interval of time, depending on the difficulty level. The AI players also randomly "make an error", either cancelling an action currently running, or emptying a system's command queue. The chances of these "errors" vary based on difficulty.
Different classes of enemies were designed and tested, each having slightly different behaviours and possible sets of weapons.
I primarily took care of the UI design and programming, but also built the level-up and stat systems, and did some preliminary work on the combat system.UI
For the UI's design, I primarily went for a retro, Super Nintendo-era RPG UI, but added my own flare whenever I had the time.
We used NGUI's Unity UI framework for all the UI in this game.RPG Stat System
This game is an RPG at its core, with a standard 5-stat system behind it, similar to the one used in Final Fantasy VI. The level up and combat systems were designed to be usable in any type of game, so I would never have to program it again.
Blind Spot is a LAN-based multiplayer turn-based strategy game. You and an opponent move turrets and fire lasers at each other - in complete darkness. Each turret has a limited range of sight, but when shots are fired, a marker appears somewhere in the vicinity of the origin of the shot.
This game has been described as an intelligent mix of Battleship and Lazer-tag.
This game was also built in Unity, over the course of 6 weeks in the spring of 2014.
I primarily took care of the AI systems, and level randomization & design.AI
The AI in this game is fairly simple, but quite intelligent. It uses the same visual information a player gets while watching the game, and does simple A* pathfinding operations to find the player using its flares and the opponents' hasty shots.
The AI didn't make it into the final build, however, do to some AI-breaking changes to the common base class of the AIPlayer and HumanPlayer classes.Semi-Procedural Level Generation
We decided we didn't want static levels, but purely procedurally generated levels are too hard to balance.
So, the decision was made to procedurally modified the levels, allowing us a better chance to keep the levels balanced, but changing the gameplay experience a little bit every game.
The procedural modification system was built into the level design tools.
Groups of walls could be marked to appear or disappear randomly as a group, and several groups could be tied together so that some, but not all of the groups could be active in any given game. This ensured that there would always be paths through the level, but the walls may or may not be where they were the last time you played.
Clusters of randomly placed objects could also be placed within a level. These clusters would place a random number of randomly sized objects at random locations within a sphere on the playing field. The ranges of sizes, quantity, and minimum distances between objects could be configured on an individual basis, allowing for great flexibility. Which clusters activated each play through was also randomized, with a configurable proportion of the total clusters in the level that would activate.
The result of this system was a slightly different level everytime you played, without sacrificing the balance of a perfectly designed level.Level Design
I also designed 2 of the 3 included levels, taking some inspiration from the CyberSled arcade game. I struggled to make levels that weren't too fast, or too slow to play, without ever giving either player an advantage over the other.
This website is not only a place to showcase my talents and prior successes and failures, but it is a playground in which I can test out new technologies and flex my design muscles a bit. It is still a work in progress, but I'm getting it built, bit-by-bit.