Current Project
After graduating from DigiPen in 2024, I wanted to continue making games while looking for work. I started a longer form project as both a means to keep my skills sharp and show potential employers what I could do! All I needed was a proper muse, and I ultimately chose The Amazing Digital Circus after a pan-out of the environment in episode 2.
What was initially poised to be a short technical demo quickly grew into something much more as I continued pouring myself into it, and now I have a unique, rich, and full-featured demo complete with ~45 minutes of content, with systems built to scale!
The Amazing Digital Circus - Tribute Game
Without question, this is my most ambitious project to date. Getting to go through every part of the game making process (both in my discipline and out) has given me such a great appreciation for everything that goes into making games, as well as how connected the pieces are to one another.
*This is an unofficial tribute project. The Amazing Digital Circus and all related characters and content are © Glitch Productions. This project is not affiliated with, endorsed by, or sponsored by Glitch Productions.
Character Controller Architecture
From the beginning, the character controller was built to support change from the ground up. I wanted to be able to rapidly iterate and test different features, variables, and ideas without having to refactor large amounts of code. I built the controller as a modular finite state machine supporting inheritance. This allowed for any state to build off of the characteristics of another, or exist as its own wholly unique entity.
This setup deliberately sacrifices small amounts of performance ‘under the hood’. In exchange, it is incredibly easy to iterate upon, change, and save at runtime. Thanks to the ScriptableObject pipeline, designers are able to create brand new sets of variables for movement and hotswap them without having to wait for recompiles or touch any code.
Movement Design
As a 3D platformer, one of the most important things to get right is movement. Without a good foundation, anything tied to the player feels unresponsive, sluggish, or worst of all, unfun. This is largely why the first few months of the project were spent creating and playtesting movement that fit the game’s needs. I implemented and removed several ideas that, while fun, did not fit the vision of the final game. Several more ideas changed or disappeared after playtesting, and as a result, the movement feels cohesive and true to the world!
I implemented a great number of small quality of life mechanics for the player, including but not limited to: coyote time, input buffering, bonus acceleration based on input direction vs. velocity, jump apex anti gravity, step height, and more.
However, beyond those small inclusions, I also focused greatly on how the player’s abilities connected to one another. I wanted to make sure that the moves felt intuitive and easy to use in isolation, but also combined in unique ways that allowed for players to express their mastery. The arm stretch dash flows into the rolling state, allowing the player to gain a lot of momentum for smartly combining their moves. Conversely, the arm stretch can be used to grab surfaces in the air which can only be accessed by gaining speed and rolling up to them.
These interactions make the player feel in control and creative at any stage of the game, whether they are just learning how to use their moves, or are combining them in novel ways.
Style and Presentation
While my main focus was making sure the 'feel' and technical foundation of the game were sound, I wanted to go the extra mile and make it look authentic for a PS1 style game. I chose the retro style largely because a lot of the work to sell the look was technical. Dithering to blend added color quantization, low resolution upscaling, vertex wobbling and affine texture mapping, even dynamic animation framerates, all of which can be disabled in the options menu with a toggle.
Prototyping to me means getting as close to a game's 'feel' and form as cheaply as possible, which also means dipping my hand into multiple disciplines to achieve a more full experience. This project has given me great insight into what goes into other areas of game making outside of my comfort zone, and how to better integrate them within my own work.