Osmo: Monster is an iPad application built in Unity that uses child's drawings to tell simple procedural stories.
As the primary engineer on the second and third content updates for the app, I was responsible for implenting changes in existing gameplay systems to allow for features such as branching narrative paths and cross-session drawing re-use.
Other tasks included optimising the app for min spec iPads and refining designer-facing tooling to allow greater freedom to create narrative content.
PlaneSnake is a 3D snake-like game in which the player navigates a voxel cube eating fruit and avoiding walls + her own tail. Drag the screen to change direction, tap the edge of the screen to rotate the cube. Development continues to occur, albeit sporatically.
My procedural art (see "Procedural Image Generation in Go" below) is, I feel, best appreciated at scale. As I'm not a well-known fine artist, the easiest way to achieve this goal is to build my own gallery. It uses simple first-person controls to allow people to wander and gaze at my pictures at their intended sizes.
Cracker Barrel Peg Game
This small excercise was built from the ground up in Unity in ~5 hours for a coding test. Harder difficulties are not guaranteed to be winnable!
This game is my entry to the Ludum Dare #34 competition in December 2015. The themes for the competition were "Growing" and "Two Buttons," and I tried to use both. The goal is to grow the coloured crystals to reach the gold points that spawn randomly in each level. All of the design, asset creation, and coding was done during the 48 hours of the Ludum Dare competition.
As this was entered in competition, I stopped making changes after submission. Based on the feedback I've recieved, however, there are several things that I think could be improved:
- People almost univerally think that the game is too hard, which means that I'm not properly communicating the game's philosophy of perseverence being the best way to make progress. Potentially tutorialising failure-as-necessary would help with this. Other ideas include changing the sound that plays during the board wipe, more clearly communicating that the number of goal points was increasing at each level, and changing the rate at which the goal point count increases.
- The purple crystal's pattern is rarely useful, as chaining them causes them to spiral and essentially become expensive elevation gain. It should probably be replaced with a more straightforward, symmetrical pattern like the other two.
- I underestimated the degree to which people would resent not having total camera control. A potential solution that wouldn't egregiously break the two button paradigm could be hovering on the outside edges of the plate causing it to turn in that direction (or at least change the rate of rotation)
SPACEGAME Demo Level
This demo is a 2 minute test level for polishing systems and getting player feedback on the game I was working on for the first half of 2015. Much of the art comes from Oryx Design Lab, but all additional art (the plug puzzles), audio, and code is my own.
The main systems being tested are basic player movement, terminal/repair interactions, clarity of terminal/door lights, and general usability of the repair puzzles.
Repairing took me a little over a week to take from the basic idea to the current implementation. The ship repair puzzles can be generated with plugs having random or preset positions. The user experience is designed to be as intuitive and frictionless as possible. The puzzles themselves are also not very challenging; this is intentional for the test level. Nobody should be so stuck on one of the repairs that they are no longer able to make progress.
This level itself took me about one day to put together from the prefabs in the larger game.
This demo was an exercise in implementing Minesweeper after i discovered Windows 10 didn't include it with the OS. In this version, the games don't end when a mine detonates; this is intentional and is a jumping-off point for the meta layer which I am currently developing. This prototype represents a couple of days' effort to provide basic functionality.
Vendor System Redesign for Destiny
At the initial release of Bungie's game Destiny, players would rank up with different factions to unlock higher-level gear which would enable them to tackle endgame content. My proposal builds on the system to provide that path to endgame content along with investing the players further into the universe of Destiny and providing a clear roadmap for players to make informed choices about how to approach long-term goals.
I don't have the real-world data about how quickly players in Destiny are able to gain experience and level up, but in the doc I make estimates and use them to set specific targets for tuning the faction leveling system.
Procedural Image Generation in Go
Over the course of two weeks in June of 2014, I taught myself Google's Go language to implement an algorithm of my own design which fills an image with every colour in the 24-bit RGB colourspace. The trickiest parts were representing the RGB colours in a way which made it easy to determine which colours had and had not been used and addressing visual effects arising from specific implementation assumptions.
In August of 2015 I picked up the project again to abstract certain algorithm decisions to provide more flexibility, optimise the runtimes, and add the ability to seed images with photographs.
Neural Networks in Go
Neural Networks are a fascinating algorithm, unlocking the ability to solve complex classification problems by training the netowrk on pre-classified data. My university's AI courses didn't cover neural networks, but after graduating I decided to explore their theory and implementation, resulting in this simple network written in Go.