Momentus Game - University of Chicago Game Design Club
Autumn 2022 - Present
Note: This project is still in progress and is far from completion. If you would like to see code segments, such as my implementation of a raycast-based 2D physics engine, please contact me at email@example.com.
What is it?
Momentus is a Metroidvania precision-platformer game I am developing through the University Game Design Club. The game's purpose is to combine the exploration and combat of Metroidvanias with precise, fast-paced movement to create an experience unlike any other on the market. This game is programmed using the Unity game engine, though nearly all of the logic is programmed from scratch in C#.
What do I do?
As a lead developer of the game, I have a pivotal role in designing game mechanics and helping our team function. I've spent many hours programming our game's systems (detailed below) and composing music for the various regions in the game. In addition to working on the game myself, I also organize the duties of each of the four members of our team and help keep the development cycle running.
Below are a few of the large accomplishments we have made so far. Note that this is only a small portion of what we have completed. Every feature listed below is something I have worked on.
Instead of using Unity's Rigidbody2D physics system, we opted to create our own to allow more precise control over every aspect of movement across our game. After some research, we decided to implement a raycast-based physics system. Essentially, whenever a physics object wants to move, raycasts are shot along the movement path to simulate moving from one position to the next which helps detect any collisions along the path. This simulation prior to movement is necessary to prevent collision issues when moving at high speeds (such as teleporting past objects Mario 64 style).
Games that require precision often feel terrible without countless behind-the-scenes mechanics to tip the scales in favor of the player. Here are a few mechanics we implemented to make the game more forgiving:
Input Buffer System: Inputs can be pressed a couple of frames early while maintaining proper functionality.
Coyote Time: Inputs can be pressed a couple of frames late while maintaining proper functionality (note that this term typically refers only to jump inputs, but we applied this concept to all inputs).
Edge Detection: If the player is moving past a wall or ceiling and misses by only a few pixels, the game will teleport them those few pixels to correct the positioning error.
Other Notable Features
Simple enemy AI + combat system
Collision callback functions
Allows for easy creation of new objects and new object types, such as triggers
Moving platforms + velocity preservation when jumping off