Team Projects


Maple Wars

Local multiplayer sugar shack themed game, where you have to fight against your friend to make the most syrup cans into a given time. Defend yourself against animals and your opponent using some power-ups such as trampolines, ice balls, horns and more. Developed in a team of 3 using Iterative Development, and Agile Scrum with Jira.

The Last Root Standing

"The Last Root Standing" is a fun and comedic game developed as part of the Global Game Jam project at Unity Montreal offices. In this root-themed game, the player controls a root that must defend itself against an army of lumberjacks. The game was built using C#, Unity and WebGL.

Taco Truck Madness VR

"Taco Truck Madness" is a VR game that immerses players in the chaotic world of a taco truck cook, where rats will try to ruin your day. The objective of the game is to serve tacos in time to keep the dinosaurs happy. The project was built using C# and Unity and Unity's VR Interaction Toolkit. As a team we utilized agile/scrum methodology and time tracking software during development to stay organized.

OpenGL FPS

The project is a basic first-person shooter game developed as a final project for my Graphics Libraries course. Set in a procedurally generated city, the player must defend itself against cactuses. The game was developed using C++, OpenGL, and a top-down/manager style architecture.

Solo Projects


Plinko

This project is a remake of the classic game Plinko, developed as my first-ever game using the Unity engine. It serves as an introduction to Unity by exploring scene creation, prefab usage, scripting, and sound implementation. Players control a ball, moving it sideways and dropping it down the board, aiming to land in winning zones and experience the addictive gameplay of the original Plinko.

Cowboy Shoutout Game

Cowboy shoutout is a solo project created using Unity and C#. It is a game that challenges players to shoot it's opponent as quickly as possible. The game features a count down timer, sound effects, and a game reset function that allows the player to play multiple rounds.

Automated Pacman

Automated Pacman is a game that showcases the use of AI to control the movements of the player and the enemies. The game was developed using C# and Unity, and features a finite state machine for game logic, as well as A* pathfinding for the enemies to navigate the maze. The player's movement is automated as well, with the use of an algorithm that aims for pills while avoiding the enemies. When a pill is eaten, it will target the enemies.

Rocket Landing

Rocket Landing is a straightforward 2D game that challenges players to skillfully land a ship on platforms. The game incorporates physics-based mechanics, allowing the ship to move around and utilize a thruster that shoots fire. The primary objective of the game is to successfully land the ship on the platforms. However, the landing must be executed with precision and finesse. If the ship impacts the platform with excessive force or lands at a steep angle, it will result in a fiery explosion. Players must carefully control the ship's movement and use the thruster judiciously to achieve a controlled descent onto the platforms.

SDL Space Invaders

This project is a modern remake of the classic game Space Invaders, featuring several enhancements. It was developed using SDL2 and C++ programming language, utilizing a Top-Down/Manager architecture. The game incorporates a scrolling tile map, allowing for a dynamic and continuously changing game environment. The enemy ships in the game utilize flocking AI, enabling them to exhibit collective behavior while engaging the player. This adds an extra layer of challenge and strategic gameplay. Additionally, the game features a wrap-around system for both the enemy ships and the player. This means that when any of these entities reach the edge of the screen, they wrap around to the opposite side, allowing for seamless movement and engagement without any boundary restrictions.

Asteroid

The Asteroid 2D game is a solo project that is inspired by the classic game Asteroids. The game was built using C# and Unity, and does not use any MonoBehaviours. It features a top-down/manager style architecture, and circle collision detection. To add a sense of challenge and progression, the game implements a difficulty scaling system based on a timer. As time passes, the game enters different rounds, increasing the intensity and complexity of the gameplay. The objective is to survive as long as possible, as the game continues as long as the player has lives remaining. The player has the freedom to play the game as many times as they desire, allowing for repeated attempts to achieve a higher score or overcome previous challenges.

Finite State Machine

In this simple game, the player's objective is to escape from the enemy. The enemy's behavior is governed by a finite state machine, which controls its actions and decision-making process. Additionally, the enemy utilizes the A* algorithm for movement, enabling it to navigate the game environment effectively. The combination of the finite state machine and A* algorithm ensures that the enemy dynamically responds to the player's movements and attempts to capture them.

Flocking AI

This project serves as a demonstration of the flocking algorithm implementation. It was developed as part of an AI in video game class and features boids that exhibit flocking behavior based on three rules: cohesion, alignment, and separation. Each rule is assigned a weight, and the user has the ability to adjust these values within the editor to observe various behavioral outcomes.

AStar Path finding

This project focuses on implementing the A* pathfinding algorithm within an AI in video game class. The algorithm operates on a grid system consisting of ground and walls. Users can select two points on the grid, and the algorithm will determine the most efficient path between them. If there is no viable path, no path will be drawn or displayed.

Tools


Terrain tool

The Terrain Tool, developed for the Maple Wars project, is an editor window tool designed to facilitate the creation of diverse and customizable terrains. By utilizing Perlin Noise, this tool generates height variations on a terrain object, allowing for the quick and efficient creation of different map layouts. Users have the flexibility to adjust parameters and manipulate the terrain variations, providing a versatile tool for creating unique and immersive environments within the game.

Texture tool

During the development of the Maple Wars game, I created a custom tool to address the need for multiple color variations for our lumberjack character. Modifying the texture manually in GIMP proved to be a time-consuming process. To streamline this task, I developed a tool that enables color changes directly within the editor, while also adjusting the variations of the selected color. This tool proved invaluable in rapidly creating numerous unique variations of the original model, allowing us to incorporate the main character with different colors seamlessly into the game.

Sound implementation tool

I developed a set of editor tools specifically designed to streamline the implementation of sounds in the Maple Wars game. The first tool facilitates the creation of prefabs with an audio source component, allowing for easy attachment of audio clips. With the help of an editor window, the tool guides you through the process and swiftly generates all the desired prefabs in a matter of seconds, eliminating the need for manual creation. The second tool utilizes reflection to automatically write the names of all the sounds in the game into an enum file. This enables you to conveniently view and access all the available sound options directly within the editor. By leveraging this tool, you gain a comprehensive overview of the possible sounds that can be utilized in the game, simplifying the sound implementation process and enhancing efficiency.

Serialization tool

During my tools course in school, I developed a versatile tool capable of serializing data for multiple objects falling from the sky and saving them in various formats such as JSON, Binary, and XML. The tool also includes the functionality to load and display the serialized data on screen. With a user-friendly interface, you have full control over the saving process, allowing you to efficiently manage and manipulate the data as needed. This tool effectively addresses the challenge of data serialization and provides a convenient solution for handling object data in different formats.

Drawing tool

The drawing tool I developed is a straightforward editor window that allows users to create textures by coloring pixels represented as squares. With this tool, you can easily draw and design custom textures by coloring individual pixels. Once you have created your desired texture, you have the option to export it and apply it to objects within the scene. This tool provides a simple and intuitive interface for texture creation.

Custom Collection Manager

In this project, the focus was on modifying the editor to create a custom collection manager. By leveraging the flexibility of the editor, I implemented a drag-and-drop functionality that enables users to easily manage their collections. This custom collection manager provides an intuitive and efficient way to organize and manipulate items within the editor environment.