Using virtual reality, immerse yourself into a toon-styled daycare! With weird and wacky elements, embark on a fantastic experience with adorable-yet-monstrous creatures! Given a bestiary as a guide, explore the daycare for tools and toys required to appease your whimsical wards. From normal objectives like feeding and bathing, to outlandish tasks like rituals and witchcraft, every chaotic creature will have unique demands, attitudes, sizes, and challenges. As their caretaker, your main goal is to keep the creatures happy. Unfortunately, this is easier said than done, as they don’t always play nice. These creatures are dangerous, and if you can’t keep up with their demands, you may have to pay the ultimate price...
Deadly Daycare VR is a virtual reality experience created in Unity as a capstone project by a group of 12 students from the University of Utah where I was one of three engineers.
My Contributions
Implemented all features of the floating bestiary book (movement, animations, UI, and interaction with laser/hand).
Built the bathing system including scrubbing, rinsing, drying mechanics, particle collisions, material state transitions.
Developed ritual systems including the cauldron, candle ignition chaining, toy summoning logic, and fire extinguisher behavior.
Created flexible gameplay systems supporting modular activities.
After sneaking into the viking museum late at night you fall through a trapdoor and find yourself stuck in a locked room. With the help of the displays surrounding you and your brother, Mel, you will have to solve some tricky puzzles in order to escape.
8th Century Breakout is a 2D escape game created in GameMaker by a group of 4 students from the University of Utah for the Serious Game Development course where I was one of two engineers.
My Contributions
Coded the gameplay systems for the lock, rune, and tile puzzles:
Allowed puzzles to accept multiple solutions
Rune tile pairing and decoding system
Particles, animations, and sprite effects for puzzle feedback
Iron Maiden is a 2D action platformer all about earning your hero stripes. You’ll have a lot to learn and a lot to prove as you fight the corrupted forces of nature in a quest to save the world! You go from random zero to legendary hero, as you unlock the full power of the Iron Maiden to fight, jump and fly through a world in peril!
Iron Maiden is a 2D Unity game created by a group of 6 students at the University of Utah for the Traditional Game Development course where I was one of two engineers.
My Contributions
Implemented the enemy AI:
Flying enemy - Dives towards the player
Stationary enemy - Thrusts its vines out towards the player
Turret enemy - Throws projectiles
Rolling enemy - Rolls into the player
Flower boss - Jumps on top of the player and performs a ballerina spin attack
Implemented the combat system to feel accurate and reactive:
Light and heavy attacks
Collisions
Animations
Game Feedback (Apply forces, Particles, Sounds, Sprite effects, etc.)
Implemented modular assets such as moving platforms and falling hazards
Headlights (In development)
Role: Project Lead / Software Engineer
Description
Headlights is a relentless atmospheric horror experience where isolation and fear collide on an empty, desolate road. Late at night, miles from civilization, the only other vehicle on the road suddenly veers into you—an intentional, violent crash. As their twisted headlights spin back toward you, you realize this isn’t an accident. It’s a hunt.
With your engine sputtering and adrenaline surging, you have no choice but to outrun them. They won’t stop. If they catch you again, they’ll ram into you over and over, crushing the cabin around you until there’s nothing left. Your only hope is to keep moving, keep your car alive, and survive until sunrise.
Can you last the night? Or will the darkness close in for good?
This is a solo project I started in Fall 2024 primarily as a portfolio piece.
My Contributions
Implemented new Unreal Engine 5 features such as Enhanced Input and MetaSounds.
Developed the driving/crash functionality:
Utilized collision events to detect hits and performed a box trace to get the hit point.
Implemented several vehicles with unique handling and damage effects.
Implemented animations, IK systems, IK retargeting between skeleton meshes, animation blueprints, and animation montages.
Implemented the AI for the enemy car capable of patrolling, following and attacking the player and other pawns.
Utilized a combination of C++ and Blueprints to build all of the gameplay systems.
Optimized and maintained a crash pipeline processing 10,000+ crashes daily across PC, PS4, PS5, Switch, XB1, and XSX ensuring efficient analysis and stability.
Designed and developed a real-time monitoring dashboard for crash analyzer servers to track status and detect missing symbols/callstacks.
Built a MySQL backend and wrote queries to store and track 1M+ crash analysis records efficiently.
Debugged code and asset changes causing compilation/build failures.
Developed code submission tools, validation checks, and backend systems.
Managed symbol storage for master and recent builds.
Created a Windows Service (Crash Agent) for automating startup/monitoring of crash analyzers, improving uptime.
Enhanced UnrealGameSync with custom features, upstream integration, and bug fixes.
Wrote detailed documentation for internal tools and workflows.
Dev QA (Apr 2022 - Sep 2023)
Wrote detailed bug reports in Jira providing debugging information to streamline troubleshooting for engineers.
Executed comprehensive regression testing to ensure stability across builds and platforms.
Collaborated with other QA teams to validate game mechanics and playability on all supported platforms.
This section showcases different AI concepts implemented through interactive visualizations and projects.
1. Search Algorithms
I implemented various search algorithms to help Pacman navigate through the different maps. The goal for all of the agents is to eat all of the dots. (Note: All of the spaces that were visited by the search algorithm are highlighted in pink. The brighter pink, the earlier the space was visited.)
Depth First Search: In DFS, Pacman will explore the maze by going as far as it can in a particular direction before turning back to explore other paths. If a path to the goal exists, DFS will find it.
Breadth First Search: In BFS, Pacman will explore the maze by visiting all its immediate neighbor spaces, then their neighbors, and so on until a path to the goal is found. This is slower than DFS, but will always find the shortest path to the goal.
Uniform Cost Search: In UCS, Pacman will consider the value of the spaces it visits where spaces with dots have a positive value, and spaces with ghosts have a negative value. UCS will always find the 'cheapest' path or the path that results in the greatest value.
A*/Astar Search: Pacman will use an equation called a heuristic defined by me to find an ideal solution to the goal. It will also consider the costs of eating a dot or walking into a ghost. A* will not always find the cheapest path to the goal, but it is faster than UCS and more likely to find an ideal solution than DFS when a good heuristic is used.
2. Multi-Agents
Multi-Agent Systems try to make ideal decisions on what action it should take based on the current state of the world around it. In these examples Pacman will have to eat all of the dots without touching a ghost.
Reflex Agent: A Reflex Agent Pacman will only look at the current state of the game and will use an evaluation function defined by me to find which action would result in the highest value. It does not consider future game states.
Minimax Agent: A Minimax Agent Pacman will also consider future game states to try and find the action that results in the highest value X number of moves down the line. It will always assume that the enemies (or ghosts) will choose the action that results in the lowest value for Pacman.
Expectimax Agent: An Expectimax Agent Pacman will work similarly to the Minimax Agent, however, instead of assuming the ghosts will always make the best action possible, it will consider the probability that the ghosts are likely to move in any given direction. This is ideal when facing enemies that are not programmed to always make the ideal decision.
3. Reinforcement Learning
A Reinforcement Learning agent learns to make decisions by interacting with an environment and receiving rewards or penalties for its actions.
Value Iteration
Q-Learning
Computer Graphics
Using GLSL, JavaScript and HTML I implemented three separate programs that demonstrate real-time 3D rendering, animation, and raytracing techniques on triangular meshes.
Rendering 3D Meshes: Displays textured and shaded 3D triangular models using GLSL.
Physics-based Animation: Simulates movement using a mass spring system to model physical interactions.
Raytracing: Renders realistic lighting effects and shadows by simulating rays of light intersecting 3D surfaces.
Nintendo DS Parts Inventory Management System
This custom-built inventory management system was developed to efficiently track component quantities across various Nintendo DS console models. It features a MySQL database backend, which I designed and implemented to support scalable and reliable data storage.
Add Items: Users can seamlessly add new part entries to the database through an intuitive user interface, ensuring data accuracy and ease of input.
Edit Items: All item fields are fully editable using the built-in Edit function, enabling quick adjustments and updates as inventory changes.
Advanced Search: Includes dynamic filtering capabilities that allow users to refine the inventory view by any column for fast and precise lookup.