Looking to contact me?
For the curious, a record of every completed game project I've worked on
Displayed in reverse-chronological order
Defeat waves of enemies taking over your living room with this mobile AR tower defense game inspired by The Clone Wars
Roles: Gameplay Programmer, UI Programmer, Systems Designer
Using Google's ARCore SDK for Unity, I helped develop an Android app that allows the user to create and play a tower defense level in AR space. The user can place enemy spawn points and different tower types to populate the level, as well as waypoints to create paths for enemies to follow. New towers are available as players earn credits from defeating waves of enemies.
My Responsibilities Included
Learning and utilizing Google's ARCore SDK for Unity to use real-world planes in AR simulation and allow the user to select a desired plane
Designing an adaptable system for making new AR objects
Creating tower objects with different mechanics, such as ones that deal AOE damage, slow down enemies, or target the furthest enemy
Designing particle systems for tower radii and spawn selection
Creating UI elements that allow the user to select AR objects to place
Spring 2020 - Spring 2021
Teaching club members how to utilize game development tools such as Unity, C#, and GitHub throughout three semesters
Roles: Instructor
As a General Officer, and eventually President, of the Video Game Development Club at NCSU, I conducted workshops to teach our members skills for using Unity and GitHub. These workshops included beginner tutorials on setting up a work environment, introductions to Unity features such as the input system and UI, and examples of how to create different 3D and 2D game mechanics.
My Responsibilities Included
Preparing and conducting 2-hour workshops once per month, each with an average attendance of 20 members
Assisting club members outside of workshops if they ran into issues while developing their own projects
Creating written outlines detailing everything covered in the workshop
August 2020 - November 2020
Networked game engine built from the ground-up in C++
Roles: Sole Developer
I learned the fundamentals of game engines by developing my own with C++ in CSC 481 - Game Engine Foundations. Concepts taught through this project included multithreaded loop architecture, networking, event handling, and scripting. My engine is designed for expansion and allows for the creation of different types of games.
My Responsibilities Included
Implementing a REQ-REP networking model with the 0MQ library to allow multiple clients to connect to a server's game instance
Designing and implementing a entity-component game object model for different object types within the engine
Implementing game time so that all movement-based actions in the engine can be sped up, slowed down, or replayed at will
Creating an event management system for various engine features
Utilizing the Duktape and Dukglue libraries to implement scripting capabilities with JavaScript
Developing two small games with the engine: a multiplayer side-scrolling platformer and a single-player arcade shooter
September 2020 - October 2020
Visualization of data from Sneakaway Studio's browser application Tally Saves the Internet! currently displayed across NCSU Libraries
Roles: Particle Systems and UI Designer, Physics Programmer
I was contracted through the NCSU Libraries to assist in developing a visualization of data from Sneakaway Studio's browser application "Tally Saves the Internet!" This visualization is displayed throughout the NCSU Libraries in locations such as the Immersion Theater, Game Lab, and Visualization Studio.
My Responsibilities Included
Creating particles systems to visualize different types of data
Manipulating character and particle physics in an existing wander algorithm to create the desired particle and trail effects
Implementing user input so the user can control characters or view statistics using a touchscreen, keyboard, or game controller
Creating UI to display character statistics
October 2020
Defeat skeletons, collect coins, and run from an approaching wall of doom in this 2D action-platformer with a procedurally generated endless mode
Roles: AI Programmer
Developed in a week for VGDC SPOOK Jam 2020, this 2D action-platformer has the player defeat skeletons, collect coins, and traverse over obstacles while running from an approaching wall of doom. Two game modes exist: a pre-designed set of levels, and a procedurally generated endless mode of my own design.
My Responsibilities Included
Programmatically assigning a sprite tilemap to environment objects
Designing and implementing a procedurally generated endless mode with varying elevation levels, coin amounts, and enemy locations
Debugging and restricting the endless mode algorithm to ensure it only creates possible levels
June 2020 - July 2020
Standalone party system visualized with a GUI
Roles: Sole Developer
The system works by itself, so it can be reused as the party system in a full game with minimal adjustments. The system allows for party members to have stats, attacks, and equipment, as well as for the party to have reserve members and equipment that can be moved at will.
My Responsibilities Included
Designing and creating the classes in the party system and their interactions with each other
Testing the party system with test cases for each function
Designing and creating a UI system that connects to the party system
Collect memes and prepare for battle in this funny mobile game
Roles: Gameplay Programmer, UI Developer
Developed in a week for VGDC Spring Jam 2020. The player partakes in rock-paper-scissors-esque "meme battles" to gain memes. As the player collects memes, they must engage in increasingly longer battles to unlock more memes for their arsenal. The game is themed as a messaging app and allows the player to "text" opponents for funny interactions.
My Responsibilities Included
Designing and implementing a system for earning and storing memes
Implementing all UI elements, such as the opponent selection screen, chat screen, and message bubbles
Debugging various UI-related issues
January 2020 - April 2020
Explore molecules and compounds in AR with this mobile app used as a companion to a physical card game
Roles: Sole Developer
This project is a companion app to a physical card game designed to teach chemistry concepts. Its primary function is to show players how certain ions (represented as cards) could combine to form compounds. The app uses the augmented reality platform EasyAR to detect cards and create visualizations in augmented reality space.
My Responsibilities Included
Utilizing an existing AR platform to trigger interactions with image recognition
Importing models from Jmol for use within the application
Working alongside a team on a physical card game to ensure AR compatibility
Creating links to online articles within the app so users can learn more about ions and compounds
Developers can use this open-source system alongside Oculus' SDK for Unity to detect and parse user hand gestures in VR
Roles: Sole Developer
I used the Oculus Quest's built-in hand tracking capabilities to detect and parse the user's hand gestures. Detectable gestures include letters from American Sign Language, rock-paper-scissors, and communicative gestures. The system is expandable and allows developers to create their own gesture libraries.
My Responsibilities Included
Utilizing the Oculus SDK for Unity to get real-world hand movement and pose data
Using vector math to parse hand data and translate it to gestures
Ensuring the system is expandable so other developers can create gesture libraries
Creating a tech demo to demonstrate the library's capabilities and show developers how the system can be used
January 2019 - Spring 2020
Beware this VR escape room where you have to escape while undergoing symptoms of psychosis
Roles: Programming Lead, Gameplay Programmer, Systems Designer
A virtual reality horror game where the player must solve problems while undergoing symptoms of psychosis. I was brought onto the project as a gameplay programmer and was later promoted to programming lead.
My Responsibilities Included
Creating "symptoms," which are various effects that plague the player
Restructuring the development of "symptoms" to be more efficient and designer-friendly to implement
Implementing shared functionality, such as destructibility, for objects that the player can grab
Creating interactive objects for the player to use, such as books, handles, cups that fill with water, and a fold-down bed
Organizing and delegating tasks for the programming team
Fulfill orders while putting out fires, fixing queso machines, and avoiding flying ingredients in this deteriorating VR taco truck
Roles: Gameplay Programmer
Developed in a weekend for Global Game Jam 2020. The player must fulfill taco and nacho orders while also repairing a deteriorating taco truck. Ingredients must be prepared before being combined, fires will have to be extinguished, and queso machines will require attention as the player frantically tries to complete the job. This game was developed for the Oculus Rift, Oculus Rift S, and Oculus Quest systems.
My Responsibilities Included
Programming the ability for players to create tacos and nachos with different ingredients
Modifying a refill system developed by another team member so the appropriate meshes appear
Managing the GitHub repository and merging feature branches
Follow the journey of an Aztec tlacotin to stop the apocalypse in this stealth-puzzle game
Roles: Gameplay Programmer, Level Designer
A puzzle-platformer following the journey of an Aztec tlacotin to stop the apocalypse of the Era of the Fifth Sun. In the end, it is revealed that the apocalypse is actually the Spanish Conquest, and the mythological beings and events encountered throughout the game are how the Aztecs perceived the atrocities.
My Responsibilities Included
Creating the four player characters' abilities
Creating three types of enemies, each with unique behaviors
Creating interactive elements that lure enemies and affect the environment
Creating a designer-friendly dialogue tree system that gives the player up to four branching choices for each line of dialogue
Using animation blend spaces to animate the player character
Designing and building levels
Video Game Development Club at NC State onboarding project for the Fall 2019 semester, designed and directed by myself
Roles: Project Director, Systems Designer
After being promoted to a General Officer in the Video Game Development Club at NC State, I designed this onboarding process for new members to encourage learning and involvement in the club. Members formed teams and created small minigames connected through the Byte-Sized Bonanza framework.
My Responsibilities Included
Designing and creating a minigame menu that includes a search bar, tag system, and sort orders
Designing and creating an easy-to-implement system for developers to create minigames
Overseeing production and keeping track of over 20 developers
Assisting in the learning process of using Unreal Engine, Visual Studio, and GitHub
Managing the GitHub repository
Use sketches of your targets to hunt them down as an assassin traffic cone
Roles: Sole Developer
The player must hunt down specified targets as an assassin traffic cone. Targets are identified solely by the hat they are wearing, and each one has their own path they walk along on the map that the player must memorize.
My Responsibilities Included
Creating a random target system to determine which character must be killed next
Creating simple AI that follows a path in the scene
Programmatically changing NPC appearances
Implementing aerial and ground attacks for the player
Implementing a score system that assigns points based on attack type
Designing three different endings based on the final score