Musigon Devlog #1 - It Begins...


[v0.1.0] 3/30/24 -  This seems like a nice place to store my thoughts through the process of making my first rhythm game. I suppose I'll make one of these each time I release a build.

This build contains the barest bones of this game (with minor exceptions). After much brainstorming regarding how I could make a unique and compelling rhythm-based movement system, I ended up just borrowing the tile-based movement from Crypt of the NecroDancer. As a result of that decision, I had unintentionally solved my level design problem since the entire game would be played on a grid essentially. It became a matter of creating tiles for the player to traverse.

Instead of fiddling with Unity's tile-map system, I decided to take a different approach to making tiles. I took some basic square sprites and attached triggers to each side (I'll call those triggers Connectors throughout this). A tile's Connectors would detect the Connectors of adjacent tiles, so that each tile would know which tiles were directly above, below, to the left, and to the right of it. 

Though it seems unnecessarily convoluted at the moment, this turned out to be a solid modular system that allowed me to make many types of tiles. As long as the tiles had Connectors (and an appropriate script attached) they could link up with any other adjacent tile. Naturally, I made a simple player character that could hop from tile to tile using the information the Connectors provided. The only downside of this is that I need to align the tiles manually within the editor, but 'tis a small price to pay in my opinion. 

A few tile types and their variants

At the moment, I have  6 distinct tile types, although some have alternate versions. For example, the Home and Finish Tiles serve as start and endpoints for a level, but use the same script as a regular Movement Tile. It's the same idea with the Laser Tiles since all that changes between the variants are the count and orientation of the lasers. I should mention that before I made any tiles beyond the one, basic Movement Tile, I had to find a way to restrict the player's movements to a beat. This is where the BeatKeeper comes into play.

The BeatKeeper is a UI element that flashes a white border around the screen on every beat. The way I set it up, I can change the BPM to whatever I want, and it will adapt accordingly. I also included a little accuracy indicator at the bottom of the screen to let players know how on/off-beat their inputs are. To keep things playable, players aren't required to press their inputs 100% perfectly since that's neigh impossible for even the most accurate of rhythm-gamers. There is a 1/8-1/9 second window before and after a beat where the player's input will still register (an almost 1/4 second window in total to account for not only human error, but also input processing time and things of that nature). This took a lot of trial and error to get right as the BeatKeeper is already on its 2nd iteration, but thankfully it functions well enough to be playable now. (NOTE: I completely forgot to include an adjustable audio offset option in this first build, but I'll be sure to add that soon.)

Once the actual rhythm aspect of things was locked in and working, I got to work building fleshing out the UI a little and made a simple title screen and level select. Then, I put those tiles I had made earlier to work as I cobbled together a tutorial level. I quickly established a steady workflow that involved building large level sections under a single parent GameObject and having the chunks link together through the level when a player hits a Button Tile. It seemed to be a great way to introduce players to each tile type in isolation before hitting them with a challenge section at the end. This also reminded me that I needed a way for the player to die if they managed to hit a hazard, so that was implemented as well.


Tutorial Challenge Section

Finally, let's talk about MUSIC. I am not a great musician by any means, but I threw some simple sounds together in LMMS to work for a tutorial level. (It was better than the metronome I had been using till this point.) I did come across an interesting design issue at this point where I had to figure out how exactly I'd go about implementing songs in the game. I really liked the idea of having a song evolve due to progression or certain events in a level, so I ended up making giant trigger areas I call "Audio Zones". Each Audio Zone plays a different version of the same song, so as a player travels from one part of a level to another, the current version will fade out, and the next one will fade in. They'll need some slight tweaking to ensure that the songs loop seamlessly within a single Audio Zone when stretched over an entire level, but I'll tune that up later on.

That's about it for this Devlog. I did fiddle with the idea of making a dynamic camera, but I ended up keeping it really simple for now. I'll go into more detail about that once it gets more advanced.

To anyone reading this: Feel free to give the current build a shot. It'll likely be slightly out of sync depending on the headphones/speakers you use, but heck it won't hurt to try. I'll appreciate any and all feedback. Thanks for taking the time to read this. Cheers! :)

-Chidori

Files

v0.1.0 WebGL Build.zip Play in browser
47 days ago

Leave a comment

Log in with itch.io to leave a comment.