About Me:
I'm a game developer, storyteller, and college student. I like making fun, engaging games that utilize player interaction to create emergent stories. I'm primarily a programmer, but I also dabble in sound design and pixel art.
Check out some of my favorite games I've made! Beneath each game is a box labelled 'reflection' - click on these to see a detailed description of my development process, the challenges I faced, and what I learned from each project.
Independently developed a replica of the tower defense game 'Plants Vs. Zombies' using the Godot game engine.
Created over 60 hand-drawn sprites, 9 of which were rigged and animated.
Created over 15 unique sound effects using only originally sourced recording material processed in DAW.
Focused on writing clean, object-oriented code, using the principles inheritance and composition to ensure the game could be easily extended in the future.
Produced a polished, bug-free, visually appealing game with a well-populated soundscape.
Crafted a fun and visually engaging scrolling credits sequence.
Developed part-time over 10 weeks as a self-directed educational exercise.
My goal going into this project was to hone my game development skills by creating a finished, polished product. I chose to recreate an existing game because it would allow me to practice my technical game development skills without the additional burden of needing to experiment with the game's design.
I found myself spending the bulk of development time on asset creation. I wanted to make sure everything looked finished and presentable, so I revised sprites multiple times and made unique sprites for every user interface element. This is also the first project in which I've rigged and animated sprites. Every plant and zombie is animated, often with several layers of animation that overlap. This was difficult to do, but I'm happy with the result. I think it really adds a lot of life to the game, makes it significantly more visually appealing.
I began work on this project shortly after completing a college-level sound design course, so this is one of the first games in which I crafted all of the sound effects by myself. This was a lot of work, but I'm glad I did it. The sounds make interacting with the game a lot more satisfying.
While programming this project, I focused on creating clean, readable, extendable code using object-oriented design techniques. This ended up making the programming overall easier, especially later in the project, where I could reuse more of my already written code. I don't intend to return to this project, but if I did, I'm certain that programming new plants, zombies, and levels would be easy due to the high-quality code I already have in place.
Overall, I think I achieved my goal of creating a finished, polished product. The core game has good visuals with no real rough edges, a well-populated soundscape, and high-quality, well-organized code. Having completed this game, I feel much more confident in my technical abilities as a game developer.
This is the first game I've fully completed in the Godot engine. Building it made me more confident in the engine's strengths, but also made me aware of some of its weaknesses (particularly its lack of support for many object-oriented features, such as interfaces).
Independently developed a general-purpose ASCII graphics game engine in 5 weeks using C++ and SFML.
Created a testing framework for the engine and a rigorous test suite.
Built a polished arcade game in the custom engine to demonstrate engine functionality.
Worked with 1 other WPI student over a period of 1 week to develop a thrilling, strategic arcade game where you play as a spider trying to protect your web from oncoming threats.
Programmed grid-based player movement, state-driven enemy AI, and the player's 'attack' ability.
Developing the game engine was by far the most difficult part of this project, as it's something I've never done before. But I'm really glad I got the chance to try it, because it taught me so much about how game engines work on a fundamental level. Additionally, this is the largest project I've ever built in C++, so it allowed me to improve my C++ coding abilities a lot. I now understand C++ quite a bit better and feel more comfortable working in it, which is great.
The actual game of Spider Shoot was a lot of fun to design. I especially like that the player's 'silk shot' ability is capable of both killing enemies and repairing the grid - it's a nice piece of dual-purpose design that makes the game a lot more interesting. Overall, I think the game is a ton of fun and very polished for a week-long project. I'm very proud of how it came out.
Worked on a team of three game development students at WPI to develop a boat-themed, romantic matchmaking puzzle game.
The team collaboratively designed a prototype game with a novel concept during a one-week game jam. Development on the prototype continued as a side project for several months, until the game was polished enough to release.
Collaboratively wrote over 100 lines of dialogue for 11 unique boat characters.
Acted as a secondary programmer, creating core gameplay systems such as boat data management and dialogue management.
Recorded and edited voice lines from 10 unique voice actors.
Created several sprite assets, including 6 boats and the main dock area.
The game has one of the most unique concepts out of anything I've worked on. You play by learning about the boat characters through clues in their dialogue, and then use your romantic intuition to help them find their soulmate. Designing such a unique concept with my team was a lot of fun, and it helped me practice my skills at designing unique gameplay systems. The core of this game rests heavily on writing and character design, which is an aspect of game development I haven't explored much in my other projects, so it was a lot of fun to try it out here. This game is also the largest collaborative effort out of any of my projects; while there were only 3 core developers, assets were contributed by 10 voice actors and 4 artists (see the in-game credits for more details).
Independently developed a lemmings-style real time strategy game about leading ants back to their anthill with pheromone trails using the Unity game engine.
Rigorously planned development with game design document, Gantt chart, and project timeline.
Produced a largely bug-free prototype featuring unique pheromone-based gameplay, 4 unique enemy types, a level select, an in-depth tutorial, a currency system, persistent player save data, and roughly 30 minutes of playtime.
Game design, placeholder art, and all programming done by me.
Developed over roughly 100 hours during one high school semester.
Delivered a game launch speech, which can be found here: https://youtu.be/JFn4npqTsFc
Antline is the first game I’ve developed that is both self-directed and thoroughly planned. I spent several weeks simply finalizing a game design document and planning out achievable deadlines. Because of this, Antline boasts a tightly focused design and clean, bug-free code. My development of Antline has been heavily focused on the ‘background mechanics’ of the game (UI, currency system, persistent player data, etc), which I had mostly neglected in my past projects. As a result of this focus, the game feels much more like a full release. I see Antline as an enormous success in that I was able to make a realistic plan and stick to it, and also in that the final product is both fleshed out and genuinely enjoyable to play.
Worked on a team of 6 game developers from both WPI and Clark university in a 48 hour game jam
Built a unique game about protecting overly curious sentient forks from dangerous kitchen appliances
Designed and programmed a complex finite state machine for fork AI, adhering to the State design pattern and supporting collaboration and communication between AI agents.
Built several core gameplay systems such as fork movement and the toaster.
6 people is the largest team I've worked on for a game jam, and I was amazed at how much we could get done. I especially appreciated the excellent work of our dedicated artists, who produced a great selection of 2D sprites and 3D models, which gives the game a unique 2D/3D blended aesthetic. Working with 2 other programmers on the same project was somewhat difficult, but it allowed me to learn a lot about how to use version control for game development. Having so many people to design core gameplay systems allowed us to organize our code really effectively - this is definitely the highest quality code I've ever written for a game jam. I'm especially proud of the Fork AI system, which was built on a finite state machine and rigorously designed and outlined beforehand. I extended the system to allow forks to 'collaborate' by requesting that nearby forks join them for a group activity (like pushing the toaster). Forks that receive these requests can choose to deny or accept them based on various aspects of their current state. The system is elegant, clean, and works very well. It's definitely my favorite part of this project.
Worked on a team of 2 game developers at WPI to complete a 48-hour game jam
Built a 4-player local co-op game in which two teams of scarecrows battle over a hot potato.
Performed early playtesting and adapted game based on playtester feedback.
Programmed physics-based 3D player movement, including a directional dash-attack and the ability to pick up, throw, and drop a hot potato.
Programmed the core behavior for the hot potato, allowing it to change color and gain fire particle effects as it heats up.
Added juice effects such as explosion particles, sound effects, and slow-motion.
This was the first 48-hour game jam where I've been able to get external playtester feedback before the game was finished, mostly because of how fast I've gotten at coding physics-based movement. This feedback was really helpful, as it guided us to add several key gameplay systems, including hay bales and teams. Designing a local co-op minigame was a very interesting challenge - we wanted to strike the right balance of approachability, skillful gameplay, and chaos. In the end, I'm very happy with how the final game plays. It has a unique, chaotic gameplay loop that always gets players excited.