Rhyzinus

Game client: View on GitHub
Level editor: View on GitHub

A mobile rhythm game and its accompanying level editor, both developed using the Godot game engine.

Summary

As an avid rhythm gamer, I wanted to learn the key concepts and techniques behind developing rhythm games. Rhyzinus is a rhythm game I developed while learning to do so. It is a 3D rhythm game that challenges the player by having notes simultaneously approach the player via the bottom, side, and upper lanes. Creating tooling for level creation in a rhythm game is often harder than creating the game itself, so I challenged myself to see how far I could take the level editor as a GUI application developed purely in Godot.

Technical Details

The most important part of a rhythm game is, of course, syncing the gameplay to audio. This involves two key metrics: minimizing perceived latency, and ensuring that the visuals consistently line up with the audio.

This is where using Godot immediately ran into a snag. On Android devices, the audio latency was high enough (upwards of 30 milliseconds) that the sound effect meant to serve as feedback upon hitting a note was actively hindering the player's timing. It turned out that this was a known issue , and that low latency wasn't a main focus of Godot's audio engine. Thankfully, there are existing rhythm games that were able to find success while using Godot. When looking into them, most of them used modules that wrapped specialized audio libraries, such as FMOD or MiniAudio. I opted to go with the approach that the developer of Project Heartbeat used - a custom build of the Godot engine called Shinobu. This engine provides native support for low-latency audio playback via MiniAudio.