Developing Melody Flow

Melody Flow is my first game, and it is about music, not just using music as a background.
I started by laying the diatonic scale on 2D space: pitches on the X-axis, time on the Y-axis. What you get is a vertically scrolling track, much like Guitar Hero or other rhythm games but with real pitches, not just random or approximated events.
I was not interested in the rhythm gameplay. Instead I created a character that catches notes. It has to be in the right column at the right time, but it’s smooth – you have to glide towards the next note.
I immediately ditched the usual bitmap textures and went for generative shaders. They are much cooler and dynamic than static textures. The math behind shaders is fascinating and I really had a great time learning about glows, SDFs, vertexes and stuff.
After two PoC levels, I realized that I hate creating levels. Moreover I hate playing fixed level games. Where’s the fun if you already know the level? The game would only remain interesting for a week. And I want to play my game FOREVER.
So I started writing a melody and chords generator. I’m a long time musician so I poured all my knowledge into this. This was mind-blowing and a project in itself. Never had so much fun in my whole dev life (which started long ago in the 90s).
Levels also needed obstacles and enemies, so based on the generated music, I wrote code to lay out these elements on the track. And of course I developed enemies and obstacles themselves, randomized using the same seed that governs music generation.
Godot proved to be a fantastic platform. I loved GDScript (apart from typed array hell). I loved the very good deployment to various platforms. I didn’t use much of the editor UI. I prefer code.
Lots of tweaking and striving brought me to the current stage and a demo on Steam. The menu is still basic and will be expanded for the final release. Then I plan to publish on mobile – I kept the game simple enough from the start to be a mobile game.
So here’s Melody Flow on Steam. Please try it and tell me what you think. I still have time to make it better before the final release.