top of page

Check out my resume here ->

new

Unbreaded (Level-Up 2024)

2024 - UI and Audio

Unreal Engine 5

C++ / Blueprint

Launched on steam after 2.5 months

FMOD Integration

Presented at Level-Up Toronto 2024

My main responsibilities on this project were UI and Audio. I implemented FMOD integration into our Unreal Project, and used it to drive the immersive audio elements within the game. Dynamic material-based footsteps, controlling multiple ambient tracks, and collision based sound effects were made easier using FMOD. I was responsible for communicating with the audio team to get all the required SFX and music. 

​

For the UI, I implemented my own C++ based menu system for controller support. It utilizes logic similar to that of a directed graph, where each button within the menu has a connection for each cardinal direction. When the joystick is pressed, the graph is traversed in that direction and updates the cursor to the new button. It was quite a challenge to get everything working as intended with both KBM and Controller, but the challenge was worth it to have accessibility for different users.

new

Meteor Swarm

2024 - Solo

Ubisoft Next 2024 submission

C++ Ubisoft API

2D Circle physics

Custom ECS, Object Pooling

Completed in <48 hours

This was a solo project I did for Ubisoft Next 2024. For this 48 hour challenge, Ubisoft provides you with a custom API for you to create a custom game based on a given prompt. This year the prompt was "projectiles". I immediately thought of shooting bullets, and the idea of having other projectiles that you can shoot at and collide with also seemed interesting. 

​

I decided to use object pooling to increase the efficiency of adding and removing bodies to the simulation. Object pooling is commonly used in particle systems, but any situation where you are handling a lot of bodies is a good fit. Object Pools work by having a large array of pre-initialized objects, each with a Boolean value which determines whether they are active or not. If they are active, they get updated per the time step. If they are not active, the attributes will get overwritten when a new body is added. This helps save on initialization and destruction of new objects, especially if that is happening a lot. Both the bullets and the meteors are in separate object pools.

Vulkan Samples

2024 - Solo

Vulkan API

Geometry, Fragment, and Vertex shader modules

In this sample Vulkan Project, I refactored an existing framework to handle multiple shaders, meshes, and textures. I changed each model matrix individually using different push constants, so that the Mario and the skull can rotate separately. I had a hard time visualizing the vertex normals, so i drew them via a custom geometry shader. I learned a lot about how the GPU works, memory alignment, shader modules, and many other topics.

In this 3 month project, I was responsible for implementing all the in game UI and various other user experience elements. I was responsible for communicating with the 2D artists, informing them of the technical requirements, and making sure the assets were implemented as intended. I used Unreal Engine 5, using a mix of C++ and the Blueprints visual scripting in tandem to achieve my goals. 

Cosmic Catch (Level Up 2023)

2023 - UI Team Lead

Unreal Engine 5

20+ member team 

Communication / Leadership

Source Control (GitHub)

Blueprint / C++

OpenGL Samples

2021 - Solo

Shader Programming (GLSL)

Perlin noise, Phong shading, Vertex calculations

3D Math

C++ Programming

​

​

This project includes a variety of 3D lighting and vertex manipulations. I utilize the Phong shading model in a custom GLSL shader to simulate lighting, reflections, and refractions.  In another example, I manipulate the position of each vertex within the vertex shader using Perlin noise,  and then calculate the colour based on the updated 'fake' position in the fragment shader. 

​

Object and 'Camera' manipulation is done using 3D matrix mathematics.

Death By Lagrange (Midstone)

2023 - Programmer & Project Lead

Custom 2D SDL engine

Team Management

2D rotation & orbital math

Game Design & Prototyping

C++ Programming

​

​

As project lead, I was responsible for keeping deadlines, disseminating tasks, keeping colleagues on track, and communicating with our mentor. I also was the lead programmer on the project, and implemented all the 2D orbital math. It is not real orbital calculations, as for this project we wanted a more predictable motion. So instead I went with a trigonometry based approach, so that when the player clicks on a planet, the ships trajectory is calculated. once it becomes perpendicular with the planet, it begins to rotate. The linear velocity is converted to rotational velocity, and upon release of the mouse the velocity is translated back.

​

​

bottom of page