Programmer for GhostBolt Games
Programming Teacher & Tutor at the Academy of Interactive Entertainment
Successfully shipped a game on Steam and Itch.io
Experienced with Unity
6 years experience coding in C#
Graduated from the Academy of Interactive Entertainment:

Advanced Diploma of Professional Game Development, Specializing in Game ProgrammingGraduate Diploma of Management LearningHead of School Award for Entrepreneurial Leadership – 2016

Projects:

Scrapper

Scrapper is a 3d Space Flight game where the player has to fly a spaceship through a series of dangerous stages to complete various missions. It is currently available on Steam and itch.io.

Board Game (Prototype)

This prototype is for a Mario Party style board game with RPG elements, including quests and character classes that each have unique stats and abilities. The prototype has 4 identical players trying to reach the end of the board, with board events and a basic quest system that can both help and hinder the players.

Butterfly (Game Jam)

This project was an AR Android app created for a game jam where the theme was “Nature in motion” and one of the requirements was to create something that could be played in a public space. Players have to catch the butterflies and moths that appear on their screen, and they would unlock the species to view in the in game encyclopedia.

Scrapper

(Unity, Time spent: 18 months)

Scrapper is a 3d Space Flight game where the player has to fly a spaceship through a series of dangerous stages to complete various missions. It is currently available on Steam and itch.io.

What I worked on for this project:

Controls/Ship movementObjectives and power up spawning/functionalityEnemy and obstacle functionalityMenus and UIShip customizationMission systemLevel up system and unlocking new ship partsSaving and LoadingGame settingsController implementation through rewiredSteamworks integration (Uploading builds, Achievements, Leaderboards, and Overlay)Stage generation systems for 3 of the game's 4 stagesSound effect implementationMusic implementation though FMODFree camera mode for screenshots

Stage Generation Systems

I created 2 stage generation systems for Scrapper:
The first system is used in the Asteroid Field and Alien Space stages. It spawns the obstacles, power ups, and enemies in a radius around the player, and when they leave the radius they are moved in front of the player. There are different categories for different sized obstacles, as well as pickups and enemy types, and the amount of each is set separately for each difficulty. The second system is used in the Crystal Caves stage. It takes pieces of a tunnel system built by the artists and connects them together in a random order. Cave pieces are added and removed when specific checkpoints are passed, and the checkpoints are placed so that players will never see a piece that isn't connected to another. The cave pieces contain pillars, powerups, and enemies, but the number of each depends on the difficulty.

Main Menu & Ship Customization

The main menu of Scrapper is set up so that the camera moves to a different part of the room for each part of the menu, and many of the menus are displayed on screens scattered around the area. When players move to a new menu the following takes place:
The current menu fades out, and if any functions are set up to be called when it closes (like the logo moving upwards on the press start screen) it will be called here.The camera will move to the correct position for the next menuThe next menu fades in, and if any functions are set up to be called when it opens (like the ship parts moving in from the top of the screen in the ship select menu) it will be called here.

Selecting Start on the main menu will take players to the mission select menu, which displays 6 missions that have been randomly selected from the pool of available missions. Scrap (the in game currency) can also be used to reshuffle the mission selection. After choosing a mission players are taken to the ship selection menu, where they are able to choose their ship body, wings, and engines.

At first players will only have one of each type of ship part, but levelling up by playing the game will make more available to purchase using scrap. Each part has a different hitbox, as well as unique stats that affect how the ship controls. Players can also change the ship’s colour using a colour wheel.

Mission Generation

The missions that can appear on the mission selection screen are stored as ScriptableObjects which contain variables that determine how they appear on the menu (Mission description, The sprite that is displayed when this mission is highlighted, etc.), as well as how the mission itself is played (Win conditions, Reward for completing the mission, etc.)..

Many of these values will be the same between similar missions (such as the same mission on two different stages, or at different difficulties), so I set it up so that by including keywords for the stage, mission type, and difficulty in the name of the mission object, the variables will be given default values for that type of mission.

Board Game (Prototype)

Unity, Time spent: 2 weeks

This prototype is for a Mario Party style board game with RPG elements, including quests and character classes that each have unique stats and abilities. The prototype has 4 identical players trying to reach the end of the board, with board events and a basic quest system that can both help and hinder the players.

What I worked on for this project:

Players rolling dice to move along a game board that has branching pathsQuests and board events that can make players move or affect their next rollSystems for making the creation and editing of boards simpler

Gameplay Explanation

The prototype had 4 players competing to get to the end of the board. Players would take turns rolling dice to move, and there are a few different routes for players to take with different configurations of spaces to land on.

The prototype contains 3 types of spaces:
Event Spaces (Red): Landing on the space will cause a random event to occur which can have a positive or negative effect on the player. In the prototype these spaces can make the player move forward or backwards a number of spaces, miss their turn, or multiply their next roll. The full game would have a wider range of effects, including some that could affect other players.Quest Spaces (Blue): Landing on this space will present the player with a potentially dangerous situation, and they are given four options to choose how to act. Each option will cause something different to happen to the player, similar to landing on an event space, and some options can also make nothing happen. In the prototype the outcome is always the same for each option, but in the full game the results would be based on the player's abilities, stats, and inventory, as well as some random elements.End Space (Yellow): The first player to reach this space will end the game, they do not need to get the exact roll needed to land on the space, just moving over it is enough.
There is also a green space that does nothing when landed on, but it was not used in the prototype in order to focus on the quests and events.

Board Generation & Editing

I used editor code in the prototype in order to make the creation and editing of boards faster and easier:
Changing space types: Changing the SpaceType enum in the editor will automatically change the texture and the object name to match the appropriate SpaceType.Creating new spaces: Instances of the BoardSpace class have editor buttons that are used to create new board spaces of each type. Clicking a button will instantiate a new board space of the corresponding type that will be connected to the space it was created from. Players will be able to move between both spaces in game without any extra setup, and the new space will also be automatically selected in the editor so that it can be moved to the desired position.

Butterfly (Game Jam)

Unity, Time spent: 48 hours

This project was an AR Android app created for a game jam where the theme was “Nature in motion” and one of the requirements was to create something that could be played in a public space. Players have to catch the butterflies and moths that appear on their screen, and they would unlock the species to view in the in game encyclopedia.

What I worked on for this project

Butterfly/Moth ScriptableObject and variablesEncyclopedia menuModel viewer

Encyclopedia & Model Viewer

After catching a new species of butterfly or moth, it will appear in the Encyclopedia, where players can read a short description of the species, as well as get a closer look at the 3d model using the model viewer. The model viewer was set up using a RenderTexture, and the model can be rotated by clicking/pressing and dragging on that part of the screen. The yellow squares on the buttons are meant to have sprites of the different species, but due to time constaints we were not able to complete them.

Contact:

View my Resume