As a recent graduate, the majority of my projects fall under the category of coursework. However, there are a couple exceptions. Browse them all below.
DuolBots
2021-2022
DuolBots is the GDD 450-451 capstone project developed by Team E.L.I.S.E. during my senior year at UW-Stout. I was one of eleven members that spent two semesters building this game from concept to completion, which ended with its showcase at SGX 2022 (Stout Game Expo). It was developed in Unity with C#.
The premise of DuolBots is a team of two players builds a robot together before facing off against another team of two in a head-to-head battle. The catch is that each of the robot’s parts must be controlled jointly between players; for example, if one player moves the right wheels, the other player controls the left wheels. The game was designed with a fun, party-game mentality in mind, as opposed to a strictly competitive mindset. The teams would battle each other until one was defeated or time ran out.
During the beginning stages of the game’s development, I was heavily involved in the design discussion. This included what parts would be available to build with, arena ideas, potential game modes, and deciding the general rules of the game. Once the majority of those ideas had been discussed and settled, my main focus shifted to the development, implementation, and testing of the movement system. During development, we iterated a number of times on the movement system, searching for the right feel for the game. Additionally, feedback from playtesting guided changes made to movement, as well as the game as a whole.
A team of two customizing the parts on the bot.
Split-screen combat allows for both players to control their own camera.
Buzz Digital
2021-2022
Buzz Digital is a professional project that I spent several months working on over my last two semesters at UW-Stout. I worked alongside UW-Stout’s Manufacturing Outreach Center and three other students during my time on the project. Buzz Digital was developed in Unity with C#.
Buzz Digital is a game/simulation meant to demonstrate the impacts of lean manufacturing principles on the productivity of manufacturing processes. There are three rounds in Buzz Digital, the first of which involves inefficient production methods that lead to few if any products being completed before time runs out. The second round takes a step towards lean manufacturing principles, while the third includes them completely. The simulation is meant to be led by a facilitator to guide discussion in between rounds to reach the conclusion that lean manufacturing improves overall productivity.
I was brought onto the Buzz Digital project approximately a year into its development. All the functionality for it to operate on a simple level already existed, and a number of systems were already built. Most of my contributions fell into one of two categories: adding quality of life changes to make gameplay easier to understand or fixing bugs in the existing systems. Both categories required me to familiarize myself with existing code, either to make integrating new features easier or to pinpoint the problematic section in a bug.
Part highlights, connecting line hints, and rotation mode symbols were all parts of what I worked on.
Updates to the objects allowed them to interact physically with each other and the table without issue.
NecroSiege
2020
NecroSiege is the GDD 325 game development project that I worked on during my junior year at UW-Stout. The development period for this game was one semester, and I worked on a team of five. The game was developed in JavaScript using the Phaser 3 framework. Due to the COVID-19 pandemic, rather than be presented at a live SGX (Stout Game Expo) event, NecroSiege was posted online to be played upon completion.
NecroSiege was based on a game pitch I had given that saw the player take the role of a necromancer conducting research before raiding villagers laid siege and forced them to flee. Gameplay took place on a grid of spaces that includes the necromancer, its thralls, and the attacking villagers. The player would use the bodies at their disposal as a resource to summon thralls and cast spells, and could even use their fallen foes as a resource as well. The goal is to make it all the way across the grid without being caught; this requires strategy on the player’s part, managing their thralls in battle and clearing a path to escape. Between levels, the player would be given two sets of four options to research, leading to new thralls, spells, or upgrades to existing abilities.
In addition to the initial pitch, involvement with the development of the game’s mechanics, and ideation for research options, I contributed a great deal to the combat system. I developed the code responsible for managing the grid and the waves of enemies, and I also implemented the ability for the player to control the necromancer and their thralls. Finally, I also developed the enemy’s AI, accounting for different types of enemies.
An example game state on the second level.
The grid displays different highlights to indicate movement or targeting.
Raumschach
2020
As a personal project a few summers ago, I decided to make a digital version of Raumschach, a variant of 3D chess. After poking around a small amount online and finding myself unsatisfied with what I saw, I decided to make a small prototype for myself, both as a challenge and as a way to play the game.
Over the course of a couple days, I created a digital version of the game that displayed the possible moves of a piece when clicked on and could recognize check and checkmate. I flattened the 5x5x5 cube that represents the board into five 5x5 grids to make displaying and interacting with it easier. The aforementioned inclusions were absent in other versions I had found while searching, which became the primary motivation for building my own version.
The black king is in check from the white queen. The highlighted spaces show the valid moves for the selected piece (black king).
AI Prototype
2020
As an independent research project for a Programming in Game Engines course during my sophomore year at UW-Stout, I chose to research the basics of AI implementation. This project was developed in Unity with C#.
This project started out with researching various ways to implement AI in a game, such as decision trees and state machines. From there, I needed to design a prototype with which I could display my learning. I decided on developing a simple grid-based semi turn-based combat system that had the player control a warrior, a mage, and a healer against a computer controlled team of the same composition. I implemented a set of decision trees for each character class and showed the output of the AI’s decision on a log on the side of the screen in addition to the character taking its turn on the grid.
Lighter colors represent the player and darker colors represent the AI. A scrolling log appears on the side to indicate the actions taken by the AI.
Eldritch Nights
2019
Eldritch Nights is the GDD 200 game development project that I worked on during my sophomore year at UW-Stout. The development period for this game was one semester, and I worked on a team of five. Additionally, games made for this course targeted play on a tablet, rather than a computer. The game was developed in Unity in C#, and represented my first serious venture with Unity.
Eldritch Nights was based on a game pitch I had given that was centered on the idea of a person whose dreams are controlled by eldritch horrors, forcing the player to survive nightmare after nightmare. With a number of different nightmares to choose from, the player would have to survive three nights without losing all their health, and while trying to prevent becoming stressed by the horrors, which would in turn increase the duration of the dreams. During development, challenges arose, including scheduling issues between group members, difficulty implementing certain design choices, and scope creep. In time, all of these were overcome or addressed to produce the final game, which was presented at SGX 2019 (Stout Game Expo).
Though I had grand ideas when I gave my initial pitch, this was my first real experience developing a digital game with a time constraint. As such, numerous cuts were needed to reign in the game and make it realistic that it be finished in one semester. That being said, five different nightmare levels were completed, allowing for some variety across playing the game multiple times. Each programmer--myself included--worked in some capacity on each of the five nightmares, though each of us did have a couple levels that we dedicated most of our time to.
The trailer made in preparation for SGX.
Vitality
2019
Vitality is the GDD 100 board game development project that I worked on during my freshman year at UW-Stout. The development for this game was approximately half a semester, and I worked on a team of four. The purpose for developing a board game was to allow for stepping away from the process of programming and running into implementation issues, allowing for the design of the game to be the primary concern. Vitality was presented at SGX 2019 (Stout Game Expo).
Vitality is a board game meant for up to four players, each assuming the role of a researcher--or more than one, if fewer than four players are playing--each with a slightly different ability. The goal of the game is to work together to preserve a number of samples from the world tree, Yggdrasil, before it dies. The players must travel up and down the massive tree, harvesting samples from its many organs before delivering them to the research station at the tree’s base. Every round, a calamity befalls the tree, damaging the tree’s organs or causing other difficulties for the players. As the game progresses, organs may die, but as long as a sample from that organ has been collected, the game continues. As organs die, the surrounding organs take extra damage at the beginning of each round, representing the cascading effect of a failing ecosystem.
As the focus of this project was to design a board game in a relatively short span of time, my time was dedicated to coming up with the calamities that would damage the tree and the technical difficulties that would plague the players. Additionally, I engaged in playtesting and balancing the game’s mechanics with my team.
Vitality poster art done by Maggie Butler.
2017-2018
Physics GraphTrack
Physics GraphTrack is an app developed as part of a research project during my senior year of high school. I, along with another classmate, partnered with the physics teacher to create a tool that he could use. He asked for a game/app to be used as part of the graphing motion unit in physics. We created the new app from scratch, using the previous app as an example. The app was made using JavaScript and HTML.
While my partner was primarily focused on the HTML and visual formatting, I programmed the game’s two modes in JavaScript. One mode asked the user to use puzzle pieces to create a graph that represented an object’s distance, velocity, or acceleration as it moved along a track. The other mode gave the user a graph to match and asked that a track be created that would yield the graph when the object was sent along the track.
The first mode uses puzzles pieces that fit together to make the correct graph.
The second mode allows the user to create a track to try to match an existing graph.