
Serving Somnia
Serving Somnia is a 2D game that I developed utilizing Construct's visual scripting tools to build an infrastructure supporting gameplay from start to finish. The game showcases a character that moves based on control scheme triggers, time-based events determining win/loss conditions, and AI that follow orders depending on their required behavior.​
Software: Construct 3




Listen
Listen is a game that was developed using C# in Unity. It utilizes both 2D and 3D elements to create a cohesive gameplay experience from start to finish.
​
In Listen, the player has a multitude of choices to trigger unique gameplay. There are several Pawn classes that change the state of the game, such as the PawnPriest and the PawnYokai scripts. Both scripts can be controlled by either a PlayerController or an AIController class, which also have children based on the Pawn class that was determined at the start of the game.
​
Lastly, the player has two maps to choose from. One map choice is one determined by level designers, while the other is a procedurally created map that is built by randomly selecting level segments.
​
Software: Unity C#




Tank Game
For this project, I developed a full 3D prototype meant for split-screen multiplayer using Unity. In this prototype, you roll around as a tank that has a limited amount of health and lives, and unlimited ammo. Not only is there multiplayer, but there are also enemy tanks that utilize the finite state machine approach to travelling throughout the map. Lastly, there is procedural generation of the map involved which allows for consistent replayability.
​
Software: Unity C#





Game Programming
Objective 2
Design, develop and implement the architecture and infrastructure needed to support a complete game project.

Game Programming
Objective 3
Implement and analyze fundamental data structures and algorithms associated with game applications supporting gameplay mechanics.
Brick by Brick
Brick by Brick is a single player adventure roguelite where you "doom scroll" to cater to the game's algorithm. When coming up with this idea for the GMTK game jam, my team and I made sure we catered as much as possible to our target audience. Since the game's mechanics relies a lot on current events and pop culture, we had to make sure we stuck with the humor that our target audience can connect with.
​
For this game, I helped develop the 2D systems involving the posts and users, which are constructed based on the gameplay loop from the start to the game-over screens. The system currently supports a main menu, settings menu, game over screens (with multiple endings), and a credits menu.
​
Software: Unity C#




Lantern Maze
This Lantern Maze was a project created using Unreal Engine Blueprint which was intended for PC. For this project, I started with writing a health system that slowly trickles down the longer the player is in the darkness. When the player enters a sphere collider around the "lanterns," their health does not deplete.
The game starts from a start menu which can trigger the start of the game when clicking play. There are​ tutorial widget blueprints that spawn based on timers and triggers to communicate with the player on how to play. This adds to the overall user experience, and it is all tied together by a win/game over screen that cycles back to the start or main menu.
Software: Unreal Engine Blueprint




Infinite Reach.Eye O
Inifinite Reach.Eye O is a game that was developed in Unity for a 48-hour game jam. It contains of a start menu, roguelite gameplay, settings menu, credits, and a game over screen. In this game, there is AI that spawns randomly and moves toward the player. There is also a health bar, music, and random game object instantiation that allows for a full, polished gameplay loop.
​
Software: Unity C#




Tank Game
For this project, I developed a full game prototype meant for split-screen multiplayer using Unity. In this prototype, you roll around as a tank that has a limited amount of health and lives, and unlimited ammo. Not only is there multiplayer, but there are also enemy tanks that utilize the finite state machine approach to travelling throughout the map. Lastly, there is procedural generation of the map involved which allows for consistent replayability.
​
This Tank Game supports full gameplay from start to finish. Upon opening the game, the player can choose the type of gameplay they'd like, such as single player and the map seed. There is also a main menu, a settings menu (for sound and video), and a game over screen for when the player wins or loses.
​
Software: Unity C#




Somnia
For my student innovation project, I created a prototype of my game "Somnia." In Somnia, random "chatters" react to the player's gameplay and attempt to sell to that player that they are forming a community around the player's actions. To execute this, I wrote a system to generate random chat names and bring in random chat reactions based on a tagged algorithm.
​
The Chatter class contains several arrays, such as prefixes/affixes/suffixes, to randomly generate a username for the user. It also contains other information, such as the user type, which determines how the chatter responds in the chatbox widget.
​
Software: Unreal Engine Blueprint & C++


Listen
Listen utilized several data structures to keep track of all of the randomly generated objects that would spawn upon start. I wanted this project to be as modular as possible, so I made sure to keep my code optimized while adding necessary game objects to arrays within separate managers.
​
To start, several arrays are being set by designers. These arrays hold the necessary information for player selection, such as playerPrefabs (Pawn types), spawnPoints, and AIControllers. Upon clicking start and selecting parameters in the game's settings, the player is assigned to a random class depending on their selection. For example, if the player wants to play as a survivor, they will be given a random survivor character instead of a Yokai.
​
Software: Unity C#




Brick by Brick
Brick by Brick is a single player adventure roguelite where you "doom scroll" to cater to the game's algorithm. When coming up with this idea for the GMTK game jam, my team and I made sure we catered as much as possible to our target audience. Since the game's mechanics relies a lot on current events and pop culture, we had to make sure we stuck with the humor that our target audience can connect with.
​
For this project, I was the sole developer behind the ScriptableObjects, such as the Post class and the Profile class. The base scripts contain arrays and structs needed to create a post and a user, which designers are capable of creating modularly due to how Unity handles the ScriptableObject data class.
​
The Post class creates a random post based on the tags designers set, while the Profile class generates a random username based on 3 arrays (prefix, affix, and suffix).
​
Software: Unity C#


To create a system where designers could implement as much data as possible without programmers needing to help them add/write components, I used Unity's Scriptable Object class to store data. The "Post" Scriptable Object contains all information necessary to link each post to the game's "algorithm." This script allowed designers to create 100 posts without the need to store anything more than a group of variables from this script.

To make the game feel more random and replayable, I wanted to write a script that accounted for random name generation. The Usernames Scriptable Object keeps track of prefixes, suffixes, and affixes to combine into a unique username each time the function is called.

Lantern Maze
This Lantern Maze was a project created using Unreal Engine Blueprint, which was intended for PC. For this project, I track several arrays with unique information that alter the gameplay state based on random encounters and scripted player events.
​
For instance, when the player approaches a chest in the game, they are prompted to press 'E' to open it. Upon doing so, the chest spawns an invisible sphere that collects all of the 3D "coin" actors within its vicinity and adds them to an array. Then, the array takes those coins and uses physics to launch them further depending on their distance from the chest.
​
The other data set in the project involves the main mechanic with the lanterns. The player is capable of lighting a random lantern actor in the scene by pressing 'P'. Additionally, when the player wants to find the nearest lantern, they can use a keypress to search for the nearest lantern in the array to trigger its light temporarily.
​
Software: Unreal Engine Blueprint





Game Programming
Objective 4
Use software development processes to analyze a project problem and to design, build and test a corresponding software solution.
Project: Katalyst
Project: Katalyst is a local multiplayer couch co-op game where players must combine efforts to control a singular ship pawn. There are two versions of our current build: PC and console. While I've had my hands less on the code for this project, I have been working as programming lead on the project.
​
My role as lead is to complete code reviews to bridge the gap between disciplines, compose a plan to deconstruct technical issues, and devise solutions to unique systems written specifically for the game. In my most recent code architecture document, I separated the Tutorial level's Mini Boss into two pawns: PawnBoss_Head_Tutorial and PawnBoss_Paws_Tutorial. This will allow the designers to set specific behaviors for each of the boss's pieces, such as the head and right/left paws, to allow for as much modularity as possible.
​
Lastly, I recognized that there were some bottlenecks with the lack of knowledge of what scripts existed where. I took the first few weeks to reorganize the file explorer while also logging what components were to be kept in a spreadsheet. While it doesn't involve much engineering, it was a temporary solution to a problem the team didn't even realize they had.
​
Software: Unity, C#




MedMicroMaps
To create a Whack-A-Mole level assigned to me by my supervisor, I wanted to twist it and develop a unique experience for our players. I started by developing a multiplayer architecture for my mini-game. This allows for there to be different scores for each player assigned when the scene is opened.
​
Another task I created for myself was writing a state machine that took the moles being spawned by the table and gave them personalities. Some of the AI would flee from the player's hammer, while others would try to find the player and attack their health component.
​
Software: Unity, C#, Meta Quest




Somnia
For my student innovation project, I created a prototype of my game "Somnia." In Somnia, there are specific events that occur during gameplay that trigger multiple design mechanics related to my project's innovation.
​
To start, there is an "Interactable" class. This class encompasses all triggers that trigger a notification widget to spawn, and adds a chat to an existing array within the chatbox widget. The Interactable class has different functions for each type of Interactable. For example, if the player misses an InteractablePlatform, their viewer count component will be affected, and the chat will react negatively.
​
Software: Unreal Engine Blueprint & C++





Game Programming
Objective 5
Demonstrate development skills using multiple programming languages, development environments and platforms, including advanced and/or experimental topics in game programming.

Game Programming
Objective 6
Establish collaboration, mentorship and professional leadership skills by working with other disciplines to deliver highly polished and completed projects.
MedMicroMaps
MedMicroMaps is a VR/AR experience where the players learn about microbes and antibodies. It was developed in Unity using C#, however I used several the Meta SDK package to ensure the game worked on the Meta platform. For this project, I worked on the movement AI for Phage-I (the red character), linking it to an auto-generated learning software. I also took the work I did from writing Phage-I and applied it to a Whack-A-Mole mini-game in a hidden level.​
​
Throughout development, I constantly had to equip my VR headset and test how the gameplay felt. In all of my attempts at programming, the main priority was to
​
Software: Unity, C#, Meta Quest




Project: Katalyst
Project: Katalyst is a local multiplayer couch co-op game where players must combine efforts to control a singular ship pawn. There are two versions of our current build: PC and console. While I've had my hands less on the code for this project, I have been working as programming lead on the project.
​
For console development, the programming team and I have worked diligently to ensure that gameplay feels smooth for the controller. With that, we are continuously working to prototype gameplay depending on how the game feels to the player. One change we have made so far is taking the singular crosshair and assigning it to each player controller, allowing each player to shoot to improve the experience.
​
Software: Unity, C#


Tongue In Cheek productions LLC
Summer 2025 - Present
​
For Tongue In Cheek, I have been working as art lead, co-producer, and programming lead for our upcoming title, Project: Katalyst. Since I have experience with the 3 majors, I often bounce around between disciplines to ensure development is moving smoothly. While the project isn't completed (yet), we have developed several demo titles to show off the hard work we have done.​
​
Role: Art Lead & Programming Lead




Unite the Valley Game Jam
Fall 2025
​
The 2025 Unite the Valley Game Jam hosted by Unity was the first of its kind in Arizona. For this project, I worked with a team of 5 to develop a game that demonstrated our collaborative skills within rules and constraints for the competition.​
​
Role: C# Programmer & Designer


GMTK Game Jam
Summer 2025​
​
For the GMTK game jam hosted by the UAT IGDA, I worked on a team of 5 to develop a full game called "Brick by Brick." My role was to hold my weight as a designer, but also help program data structures for the innovative mechanics of a doom-scrolling roguelike.
​
Role: C# Programmer & Designer




UAT IGDA Chair
Summer 2025 - Present
​
As the Chairman of the UAT chapter of the IGDA, I host monthly meetings to help mentor students to be as successful as possible in the industry. We've done events for each discipline, such as hosted game jams and presentations for level design, but also helped students acquire networking skills to help land them a job in their desired fields.​
​
Role: Chair


Purgatory Board Game
Summer 2023
​
Purgatory is a 6-player board game where players must randomize & strategize to reach heaven whilst avoiding hell. On this team, I served as the primary product owner while helping with other pieces of the project, such as board art and mechanical design.​
​
Role: Product Owner, Artist, & Designer


Art Jam
Fall 2024
​
For an art jam, I got with a team of 3 to create a 2D art piece that fell within the thematic constraint of "Halloween." We collaborated by creating our characters, and I tied the whole piece together by rendering the artwork with a background and post-processing.​​


SIP - Somnia


Somnia aims to integrate a prototype that provides a unique experience inspired by previously existing adventure game titles through live-stream related mechanics.
These systems include a viewer count that changes depending on the player’s in-game actions, a chat that reacts to the player’s choices, and it will be a place where the player can have a live-streaming identity attached to a virtual world.
Somnia's goal is to reach a niche audience that is familiar with content creation and empower them in interactive and moral ways. The result of the innovation is to prove that the mechanic is fun and meaningful to the niche audience, live streamers, and fans of adventure games.

