Programmer portfolio

I have here my programmer portfolio I was required to make for one of my business classes at Niagara College. I will warn you that I am by no means a video editor, so it is a little rough. As well, we were required to show off at least one 3D modelled item we had made. Rather than use an item from my 3D modelling or art portfolio, I got cheeky and rendered a segment of code as 3D text.


Well, just under a year after starting work at Studio13, one of clients projects has launched!

Triversal is made within Unity Engine, and I worked on the audio system! If you hear a sound in the game, I had a hand in writing the logic, importing the asset, hooking into the game side system, and getting it to play!

My work for this project was in two parts, one on our general audio framework that we share between client projects, and the other on the specific systems required for Triversal.

Improvements we made to the framework:

  • Expanded event based play calls to improve routing between client code and target sound
  • Created system to modify mixer parameters at runtime, lerping them between predefined states

Systems created for Triversal:

  • Music sequencer capable of queuing and transitioning between stem groups and music themes
  • SFX Spawner’s that allowed for dynamic music playback as the player beat puzzles and advanced through the game.

This is a very big moment for me, as this is my first game that is launching to steam that I had a direct hand in. Loved working with Phantom Compass on this one, and looking forward to future work on their other titles!

Potion Pals

Welcome to the spooky yet charming world of Potion Pals! Play with a friend as you take on the role of either a magical, potion-brewing Witch in VR or a bustling, potion-delivering Warlock on PC.

In a cozy yet cluttered potion shop, you must race the clock as you try to keep all your monster customers happy! Be careful though, if you take too long or give them the wrong potion, they will NOT be happy and the result could be DISASTROUS

Work with your teammate to create the proper potions and deliver them super speedily in order to get the best score.

Potion Pals was my fourth year project at Brock University. I functioned as the teams lead programmer, and production was going very smoothly. Unfortunately, due to Covid19 preventing us from heading in to school to continue working, and the majority of the team not having VR headsets at home to work on, we regretfully had to stop development of Potion Pals and settle with the above trailer.

On the team, I handled the majority of the programming related to VR, so creating our custom VR controller and programming the ingredient/crafting systems. I also had a hand in NPC AI, UI hookups, animations, and game logic.

Unity Tutorial

As part of our fourth year project, me and my team made a multipart Unity tutorial on building a platformer in all aspects, broken down into sections. The website for the project can be found here:

A demonstration for the finished project is provided in the first eposide at 0:41

First off you’re going to need to download our asset pack, which can be grabbed by clicking the slightly ominous download button below

    Download Now

Important to note, this package includes all art assets you will need to create the game, but only templates for the code and scenes. If you so wish, feel free to create your own assets and just follow our steps with them.

Next you’ll need some videos to follow along to, so either view the Playlist, or click one of the links below to watch an episode (Episodes build off each other, so it will probably be easiest if you view and follow along in order).

Boids System

While working as an intern at a VR startup, I was tasked with creating an AI to simulate fish swimming underwater. Given that it was for a VR experience, performance was extremely important
I began by following a tutorial on Flock AI from Shinao on Github (, utilizing a simpler version of his approach, which was more optimized for VR and allowed the fish to swim in smaller schools, with more detail and “wiggling” to give the appearance of swimming. In the end, this is what we ended up with. In this clip (the only i’m allowed to post at this time) you can see a handful of schools procedural swimming around and minding their own business. The full version of the code also allows them to follow predefined paths with slight variations to still look natural. All in all, very fun and educational project

Chess AI

As the final project in my Artificial Intelligence class, we created a game of chess in Unity where the computer made informed and strategic moves.

The AI is relatively simple. First It generates a list if possible moves, pushing them into a fitness sorted priority queue. Of those moves, it evaluates the ‘fitness’ of the resulting board. This is an incredibly simple calculation, as it just tallys each of the AI’s piece’s multiplied it by its associated value in inspector.

The players pieces then do some calculation, and the result is subtracted. This final value gives us our fitness for the move.

After each move is generated, it chooses the current best move (highest fitness), simulates it, and then attempts to predict what the players response will be. After generating a list of all of those moves, it assumes that the player will make the best move that it can, and so simulates said move. The new board (now two simulations in) is then fed back into the priority queue.

The algorithm then grabs the top of the priority queue, and the simulations begin again (resuming where they were if future moves have already been simulated for the current best performing move).

Now, it could keep doing this forever (or until it runs out of moves to simulate), but that wouldn’t be very fun for the player or the machine its running on.

Soooooo, there are two limiting factors: Depth, and Think Time

The depth refers to the number of simulated moves the game will generate spanning from a single starter move (included in the total). Given that it simulates its own moves and the players, a depth setting of 5 allows the AI to “plan” its next 3 moves.

Think time is what usually kills the AI’s turn, as it ensures that no matter what depth the AI is allowed to simulate to, it cant be thinking for more seconds than the Think Time Limit.

If you would like to see the code or download a playable build, head on over to my github:

Feed-forward neural networks for data classification

For one of my Artificial Intelligence projects, we had to study neural networks and how adjusting their initial properties effect their outcome.

To test this, we used two separate data sets, the age of Abalone’s ( and the the classification of Iris flowers (

Unfortunately, for this project we did not have time to use our own Neural Network. Instead we used WEKA, developed by the University of Waikato.

My findings and full paper can be found in the below linked pdf, and all of my datasheets can be downloaded at my github here:


For my Niagara College Year 3 Capstone I worked with a team of 9 developers to create the VR tower defence game MAGEHEM.

All the details for the game can be found at , but to summarize:

  • VR Tower Defence, where there is only one tower, and you’re sitting on top of it
  • Minions come from the distance to attack your tower
  • Your only defence? MAGIC
  • Craft spells using our modular glyph drawing system (48 unique spells)
    • Chose your spell type (Beam, Lobbed, Point)
    • Chose your element (Fire, Ice, Earth, Lightning)
    • Chose your modifier (Split, Cluster, Bouncy, Explosion)
  • Gesture recognition using AirSIG
  • Made in Unity3D using OculusVR

This was a really fun project, and very educational as well, since I was the lead programmer for the team with 3 other programmers working alongside me.

We also learned a lot about feature creep, and keeping expectations simple from the start (we originally planned 128 unique spells and 3 schools of magic)

The game can be downloaded here: Google Drive

Lotto 649 simulator

After getting tired of seeing friends drop money on lottery tickets every week, I decided to build this simulator over the course of a few hours (would have been faster, but i’m still getting used to the syntax of JavaScript)

The payouts are calculated based on the most resent lotto 649 winning stats (at the time of writing):