Other Projects
Goostory (Action Arcade Game)
I made this game in high school. It was a relatively big project, but I, like many other students, had plenty of free time in our final months of high school to do whatever. So I did this. I eventually got some friends to help with the art and finished it over the summer.
Since this was made so long ago, I don't remember much about how it was made or what interesting problems arose. But, the one thing I can say, playing through it now, is that I am quite impressed with the amount of content I had developed. Past me seems quite creative with the way he spun a few goose sprites into a variety of combat scenarios. I am also seeing how games like Touhou and Starcraft 2 influenced the design of this game. Those were games that I watched or played a lot back then.
With that said, past me also made certain boss phases where the boss would just fly around and never came down to interact with you, which was cringe 😠.
Shooter-Platformer Minigame + AI
For my university capstone project, my project group decided to prototype some tools to help Unity game developers integrate and take advantage of reinforcement learning, a branch of AI that likes to use games as a sandbox or training environment. Our tools were built on top of Unity's ML-Agents. For the purpose of testing out our tools and investigating the usefulness of reinforcement learning, I made this simple minigame where the player has to setup a beacon and then protect it from incoming enemies with a gun.
Using the tools we developed, I trained an AI that to play this game and try to achieve the highest scores. Here is the AI after about 24 hours of training on my Ryzen 3700x:
I added an aim assist feature for the AI to use, so it did not need to learn how to aim. Learning to aim would have been possible, but time consuming (we didn't have the time). So instead, I gave the AI heavy aim assist to allow it to focus more on other factors like movement, positioning, and target selection.
Here is a few more clips of the AI playing:
It's clear that the AI doesn't play as well as a human, but we found that it can still provide value. When we invited other people to come try the game and then watch the AI play, they said that the AI taught them new ideas and gave them "alternative perspectives" about how the game works. For example, after watching the AI play, some players:
- discovered that shooting backwards helps get around faster than just walking.
- realized that jumping can be used to bait or misdirect enemies to shoot into the air, which reduces the density of incoming fire and makes it easier to survive.
- reconsidered their dislike of the aim assist feature and started appreciating how it focuses the game towards moving, dodging, and other types of decisions.
- commented that the AI had developed a strategy that is pretty good but unrealistically difficult for a human player. And, it was a strategy they would discourage if they were the developers.
Our tools also had the ability to generate heatmaps from the AI training sessions, which helped players find areas that were easy to exploit.
Overall, it was a fun project. I'll be curious to see how well reinforcement learning can be integrated into the game development process as the technology develops.
Custom Uno Cards
I made a custom deck of Uno cards for playing Uno with my friends on Tabletop Simulator.
This originally happened because we found someone else's "anime waifu" themed uno deck, and I thought I could improve on the visual aesthetics of the cards, but halfway through, I started adding and trying out some new cards of my own, some of which were well-liked by my friends and stayed in until the end.
Sorting Algorithm Visualizations
This is an old highschool assignment where we had to implement several sorting algorithms we learned in class. The assignment was meant to be done with a purely command line interface. But, having extra time, I decided to make something a little more animated and fancy using Unity.
Custom MTG Life Counter
Magic: The Gathering (MTG) is a card game. Its Standard format features a 1v1 battle where each player starts with 20 life points. There are several ways players track their current life total as the game progresses, like with pen and paper, some 20-sided die, or a phone app. I made a custom phone app when for tracking life points when I used to play frequently at an old office.
This Website
I built this website with Next.js.
I designed this website by combining the best parts I've seen of other people's websites with some personal elements and aesthetic choices.