Fur!
Pro Pelle Cutem - A Skin for a Skin
It is 1812 and the Hudson's Bay Company is warring for dominion over the Canadian Fur Trade.
Their economic war against their rivals, The North West Company,
has begun to shed blood as the two warring corporations take up arms in what will be known as "The Pemmican War".
Fur was created in Unity for the Historically Accurate Game Jam. I designed this game and wrote 100% of the code. I created the textures for the cards while finding all the 3d models used from either Turbosquid or Quixel.
Colorful Collections
A Short Game about Taking Care of Yourself
Balance work and play in this colourful adventure with a charming hand drawn aesthetic! Play minigames to complete your work tasks to open the exhibit on time, but don't forget to take care of yourself too.
Colorful Collections was developed by me, Christopher Bowles and Lloyd Campbell III for our final project for CTIN 541 (Design for Interactive Media) taught at the University of Southern California. I was the programmer on this team responsible not only for writing the gameplay scripts but also creating tools and workflows that made it easy for my teammates to input their work into Unity.
Atrio: The Dark Wild
A Survival Meets Automation Sim Released into Early Access
For the last two years, I've been lucky enough to be working on Atrio: The Dark Wild as the Lead Writer. Atrio was released into Early Access on Steam in Aug. 2021 and is slated for full release in 2022. I've been working closely with the lead designers to create a story that is in line with the core game mechanics and art style. We ultimately focus on hope, a natural compliment to the main action of building.
I mostly use Twine to prototype and iterate on the dialogue in the game which is then implemented in Unity using Pixel Crushers' Dialogue System. I also wrote Atrio's ARG-style email marketing campaign (which you can sign up for here). To get a taste of the type of dialogue and story I wrote for Atrio you can check out any of the many Let's Plays on Youtube .
I have been lucky to learn so much in my first job in the industry. I've gotten to sit in on meetings with marketing consultants, UI/UX gurus and get my hands dirty with the QA process. I am super thankful to Stephen, Kyle and Francois over at IstoInc for everything they've done for me!
OPUS: Unreal Engine Neo4j Connector API
An API Connecting Unreal Engine to Neo4j
During the summer of 2021 I worked under Owen Brierley and Dr. Christian Jacob on the OPUS. The OPUS is Owen's PhD project which seeks to connect asynchronous graph database data to real-time game AI, creating persistent multi-scale simulations with real world data. I worked on a few parts of this project including helping set up the SpatialOS environment and creating tools to procedurally generate environmental meshes, but my greatest contribution was creating an API that allowed Unreal Engine to communicate with Neo4j. This API uses Unreal Enigine's HTTP library to communicate with Neo4j. I abstracted away a lot of the setup and exposed them in blueprints to make it as easy as possible for anybody to use. I also created documentation for the API to explain usage and hopefully give enough of a basis that this can be expanded further.
This work was the basis for a presentation that was accepted into the Game Industry Conference held in October 2021.
At this moment, I cannot share the main part of the OPUS but I can share the code for my Neo4j Connector Plugin .
Vox Machina
PSX-style Survival Horror Made in Unity for Ludum Dare 48
Vox Machina was created in Unity and I was responsible for 100% of the code and the level design. The theme for this game jam was "deeper and deeper" so my team and I decided to use sound as the main gameplay mechanic. We took inspiration from the gesture-based magic system found in Arx Fatalis. The reception on Vox Machina has been stellar with players praising the mood and setting that we created.
Check out Vox Machina's Post-Mortem here
Lifebrush: COVID-19 Gallery
Virtual Reality COVID-19 Exhibit Using Multi-Agent Systems
During the Fall 2020 semester, I undertook an independent research project under Dr. Christian Jacob in the LINDSAY Virtual Human Lab. I designed a virtual reality museum in Unreal Engine to teach users about COVID-19. The gallery consists of various representations of COVID-19 including models I created using Lifebrush, a multi-agent simulation toolkit which I had the pleasure to work with the previous summer.
This video shows how the interactive community transmission model works.
You can read my final report on this project here
J'Mappelle Danger
A 6502 Retrogame Project Targeting the Vic-20
J'Mappelle Danger is the term project created by me and my teammates for CPSC 599 (Retrogames) during the Winter 2020 semester at the University of Calgary. The purpose of this course is to understand the ingenuity required to make games back in the 80s. Even though I will likely never touch assembly again this was a fun and exciting challenge to tackle in my final year of my studies. Me and my teammates had to get creative to fit as much game as possible in just 3.5 kb. J'Mappelle Danger was written in 6502 Assembly and should run on just about any Vic-20 emulator. I was responsible for implementing the enemy AI, and the player input functionalities. I also created our box art, instruction manual, and pitch video.
You can check out the source code here and download a precompiled .prg file to play it on an emulator
Antymology
Neural Network Agents Created for CPSC 565 - Emergent Computing
The objective for this assignment waws to create a colony of ants that exhibit "intelligent" behavior. I chose to use an evolutionary algorithm to mutate and select for the weights of the neural network that controls each ants behavior. This was particularly exciting because I have never worked with neural networks before this assignment and building it from scratch is a great way to learn.
We were supplied framework code by our instructor which procedurally generated a world for the ants to explore. But all the code related to the behavior of my ants are my own. I designed my system to log data for more analysis. To see more data and my analysis of it, check out the Github Repo.
Lifebrush: Tutorial
A Tutorial for Lifebrush, A VR Molecular Modelling Tool
Lifebrush is a virtual reality environment created in Unreal Engine which simulates molecular interactions using multi-agent systems. Lifebrush was the PhD project of Dr. Timothy Davison. In the Summer of 2020, I worked in the LINDSDAY Virtual Human Lab under Dr. Christian Jacob to expand Lifebrush. I used a combination of C++ and Blueprints to implement a tutorial to teach users how to use Lifebrush. I also created some utilities for educators such as the "info pane" which allows for easy presentation of information alongside relevant molecular models.
A video playthrough of the tutorial can be found here
Quidditch Swarm
Multi-Agent Swarm Created for CPSC 565 - Emergent Computing
This project is a Unity implementation of a multi-agent swarm system playing Quidditch. There are a set of forces acting on each player and the magnitudes of those forces are dependent on stats set at the beginning of the simulation. Each team also has unique traits that lead to interesting emergent behavior. I did all the code for this project and created the art assets for the players. More information can be found on the Github repo.
Slurpee Day Wedding
An Interactive Wedding Invitation Made in Unity
In the summer of 2021 I was contracted to make an interactive wedding invitation for a friend of mine. I jumped at the opportunity since this is something I had never done before. I got to help tell the story of how they met, adopted some animals, planned a wedding, got thwarted by COVID and then finally got their dream wedding. I am particularly fond of this project because it is the perfect example of how interactive technologies can be more than just games.
Checkered
Term Project for CPSC 585 - Games Programming
Checkered is the term project I completed, with my group mates, for a games programming course at the University of Calgary. We didn't use any engines, we built the engine from the ground up using only the libraries at our disposal and our hard work. My main responsibilities were implementing the PhysX physics system for our game and setting up the core mechanic of picking up and dropping off passengers. Although we didn't end up getting a fantastic grade for this project, I learned so much not only about game engines but also C++ programming working on this project.
Going Postal starring Dick Danger
Top Down Schmup Made in Unity for Ludum Dare 47
Going Postal is an arcade style shooter made in Unity for the Ludum Dare 47 Game Jam. This was my first game jam and I learned plenty about time management and product management. I was responsible for 100% of the code for this project so it was important for me to get a quick grasp of what systems we needed and how to implement them. With every project I learn something new and with this one I learned more about 2D game development in Unity using sprites.
Ozymandias
A Short Wordless Narrative
I met a traveller from an antique land...
So begins Percy Bysshe Shelley's immortal poem and so begins my first ever project in Unity. I set out to capture the essence of this poem using nothing but setting. This first foray into game design is as much an excercise in minimialism as it is me getting my bearings around Unity. Trigger volumes, audio, animation, all the tools of the trade that I could get my hands on. I did not create any of the art assets for this project but this was the start of my own personal journey.
VR Input Logger
Utility Program To Log VR Device Input
This utility was created for a colleague of mine who was having a problem. She was trying to track second-to-second metrics of the position of an HTC Vive. There are many programs that do that, but they all cost money. So, I dug into the OpenVR library and wrote this tool in C++. This program tracks the positions of the hands and head and then exports the data to a CSV file for analysis. This was a fun little exercise in creating something for someone else's requirements as well as working with an API.