Devlog #11 - Menus Part 2


So this past month I continued working on the game's menus. I haven't talked much about them here, mostly because I've covered most of it on my video devlog. If you haven't seen it yet, you can watch it here! In this post I'll describe how these screens have evolved since then, as well as what I'm aiming for.

Making an enjoyable menu

When I made the video above, the only screens I had were a rough version of the title screen, and the settings screen. New screens have been added since: the mode selection, and the credits. The first one allows the player to chose  one of the 3 modes that will be available in the game: Discovery (the default one), Synesthestia, and Free. I'll talk more about them in a future update! In the long run, this screen will also serve as a level selection. Its design is now complete, but it lacks some functionalities: as there will be locked content and score, I'll have to update its display according to the save state, once it is implemented. The credits screen is much more straightforward: a scrollable content in which I list the assets used in the game. I hoped this would be displayable in a single screen, but it turns out there is just too much assets for that! It's a good thing I've kept them in a file so that I can write this list down. A useful tip when you're making a game: as soon as you start developing, keep a file somewhere to list all the tools and assets you used, as well as the people who helped making it. It'll way better to have it once you need to credit them rather than trying to remember all of them!


Another aspect of the menu I've worked on is its aesthetic. It's still not finished yet, I have to work on the visuals for the background. But I've implemented all the sounds that are triggered through navigation. Sound Horizons is focused on interactive music, so I wanted to put this aspect in front as early as possible, inside the menu itself! Each button focus and navigation creates a random musical note. The algorithm is less complex than in the game (the background music is an arrhythmic ambient on a single mode), but still provides a playful and nice sounding experience! Other sounds were created as well, like a jingle on the logo animation in the start screen, and a loading sound at the start of the level. I created both of these SFX with Bespoke Synth, a modular synth software. It's a pretty neat approach to create abstract sounds, although it can get laborious at time. It allowed me to fiddle with envelopes, synths, LFO, effects, to experiment and obtain virtual sounds with a bit of procedural aspect to them. I still have a lot to learn with it, mostly how to implement some effects I'm used to in other DAW. But I'm confident enough with it now to obtain satisfying results!

Okay, so the game's menu in almost done. It has all the screens, with a navigation between them, sounds and timings, it's responsive, usable with keyboard… It only needs background visuals and some animations before being finished! But this menu is not the only menu in the game. There is also the pause menu!

Pausing… without interrupting

I've never implemented any pause in my game because I didn't feel like they needed one. Most of them are just jam games anyway. Si the ESC key in my games usually closes the game directly. But I already received a complaint for one of my games, Line MomentumIt's a short but particularly challenging game, so when one of my player wanted to pause it shortly, only to see it close and lose all their progress, they weren't pleased! Sound Horizons aims to be a commercial game, so it definitely needs a proper pause. But then it rises the question: how can you pause a rhythm game?

Sure I could freeze the game entirely, along with the music, and resume it once it is un-paused. But on top of not sounding pleasant, it would create an unfair challenge when the player resume the game in the middle of the action, without having time to get back into the rhythm. Instead, I opted for taking advantage of the procedural nature of the game and interrupt only the game's events while in pause. The music is still playing, with a low pass filter, and even the background is scrolling. We just stop playing new notes during the pause. The lanes are cleared, so that the player can't lose points when in pause. When they exit the pause, we wait for a bar before playing new notes again. With the modular architecture already in place, where every event is managed by a common store, it was easy to implement!


It wasn't without its challenge though. There were some catches, notably the pause during the final layer. This layer has a particularity: it runs on a closed sequence instead of a loop. So we can't just keep playing the music here, otherwise the player would win in pause without doing anything! Some extra logic was needed to reset the layer's timing and set it to an "idle" state so that pause can still be triggered without breaking the game.


Most importantly, this pause menu now allows the player to exit the level and go back to the main menu! In the long run, this main menu will be the hub between Sound Horizons' levels. But how will it link them together?

Sound Horizons deep lore

Sound Horizons is an abstract rhythm game without any story. But it still need an aesthetic identity. In order to have a variety of levels, both in term of music than visuals, I decided to present it as a simulation engine.

The main menu will be an abstract 3D plane of some kind of simulation program or matrix. It sound-design already uses mostly synthetic sounds, whether it is from the background music, or the various dynamic sounds played. Each level will be presented as virtual worlds that the player can explore and transform. The in-game UI was designed with this intention in mind.

This is also transcribed through the level loading, which is almost continuous: once the player selects a level and mode, the abstract background starts an animation, and a whirling sound starts. After a fade to white, the sound slow down until it stops. It's as if a machine is actually computing the level's vertex one by one and accelerate some kind of virtual rotor. This transition is once again inspired by Panoramical, which also has short loading times between its levels, but present them in such a way that it seems part of a cohesive ensemble.


This is still an early work in progress though! It's the next big thing I have to work on. Then, the next steps before the September release will be the savea score systemextra modes, and most importantly, bug fixing and polishing. It should be doable, as long as I manage to get some free time this summer!

Leave a comment

Log in with itch.io to leave a comment.