
Meowmentum is a first-person speedrunning platformer in which you must finish magical trials in a pocket universe as fast as possible to become a full-fledged catmage! 🐈🧙♂️
This was originally a Unity Award-winning student project called 'Meowmentum Mori,' but as a team we decided to see it to the end - we use Meowmentum to keep growing and learning as developers.
Project Base
Unity 2022 [HDRP]
Role
Technical Designer | Project Manager
Development Status
Ongoing
Download
Contribution Summary
More Fluid Movement

Though movement was enjoyable (ref: Meowmentum Mori), we noticed a few issues that could be improved upon. Our primary focus was to address the sometimes-erratic loss of speed that failed to fully deliver on the sense of momentum we had envisioned.

Different forms of locomotion temporarily add to player speed - this has not changed. However, the method of increasing speed and consistency of speed-falloff has improved dramatically.

Where the old system would handle different sources of added speed separately, the new system centralizes that functionality - thus ensuring a smoother, faster, and overall better experience.
Cleaner Data Structure
Previously, we used 2 ScriptableObjects to handle player values - 'PlayerData' & 'PlayerComponents'. Now, we have added a 3rd SO: 'PlayerFields'. All 3 serve the same purpose: easy, decoupled referencing of components and fields to avoid spaghetti code and ensure future scalability.

PlayerData stores read-only realtime values such as the current velocity, grounded state, etc. PlayerComponents stores references to individual components on the player gameObject. PlayerFields stores values for all the separate movement components/states and allows for easy adjustments by designers.

One use-case is the OnWin event. At the end of a level, the game state is changed and many different objects/components are enabled, modified, or disabled. The PlayerSOs make it incredibly easy to facilitate this - with the added bonus of not needing to reconnect references when building out new levels.

Various Optimzations

By closely examining different gameplay features, many optimizations were discovered and implemented. One such example was to remove as many Update (Tick) callbacks as possible, replacing them with event calls instead. Functions are only called when needed.

Targeting and dashing to orbs, being one of our core mechanics, was a high priority amongst these optimizations. All dashing functionality was completely refactored using better math, cleaner code, and more reliable physics queries.

In order to optimize rendering, we took a closer look at the HDRP Global and Lighting settings. By trimming certain expensive lighting effects and overrides, performance has been improved dramatically.
Updated Feedback Systems
Core shader graphs were revisited to be cleaned up and optimized as best as possible, to reduce any graphical overhead. Creating the same effects visually with fewer nodes has had the cumulative effect of improved graphical performance.

VFX graphs were similarly revisited and cleaned up. Collaborating with the artists, we updated several textures for VFX in Meowmentum to take everything a step closer to our own unique aesthetic.

Hue shifts were made in several VFX to add contrast and character. For example, orbs now have a light/dark tone between the different VFX/materials. This helps with visibility and therefore enables better gameplay.

Additional Notes
Other major changes by the team include:
- New & updated levels!
- Optimized frontend flow
- Art asset optimizations
- Better baked lighting
- Updated Music tracks
- Updated SFX & Ambience
...and more!
All audio in the game is created and modified by an external team of 4 collaborators, all of whom willingly volunteer their time to help us. I'm honored enough to be the point of contact/direct them towards the project's needs, and they're amazing enough to always go above and beyond what I ask of them.
Curious about the rest of the team? Check them out here!
Core Team
Ivan Restrepo | Technical Game Designer | LinkedIn | Portfolio
Pablo Moctezuma | Level Designer | LinkedIn | Portfolio
Ivonne Medina | 3D/2D Artist | LinkedIn | ArtStation
John Santana | 3D/UI Artist | LinkedIn | ArtStation
Audio Collaborators
Hojune Kwak | Technical Sound Design/SFX | LinkedIn
Pedro Campos | SFX/Ambience | LinkedIn
Jenny Shim | Composition | LinkedIn
Benji Ruiz | Composition | LinkedIn