1. Rhythm Quest
  2. News

Rhythm Quest News

Devlog 68 - Rhythm Quest x Mozart, Assist Features

New levels! In addition to charting out "Song of the Sea (Expert Mix)" from Melody Muncher, I've added two Mozart compositions to Rhythm Quest. Here's the video showing off some excerpts from those levels:

[previewyoutube][/previewyoutube]

[h2]Mozart[/h2]

The two Mozart pieces that I added are the first (Allegro) movements from Piano Sonata No. 16 in C Major, K. 545, and Eine kleine Nachtmusik (Serenade No. 13 for strings in G Major), K. 525. (whew, that was a mouthful)

Various classical pieces have been featured in other games (see: Pop'n Music, Taiko no Tatsujin, etc etc) and I wanted to see how they might work in Rhythm Quest too (given that I could find some public domain recordings or simply take a MIDI arrangement and create my own).



Overall, they're pretty energetic and make for a fun playthrough! The rhythms aren't necessarily perfect for charting in the Rhythm Quest system, but they work well enough and there are a few phrases that came out particularly nice-feeling. The trickiest part about charting them was making sure that for all of the repeated sections were charted slightly differently so that it doesn't get stale. I don't want to just have the exact same sequence repeated a bunch of times over and over again! (looking at you, Rock Band...)

Probably the best aspect of these songs is that they're pretty widely known to a general audience, so that factor of "hey, I know this song!" is nice to have. Perhaps I can look into some other public domain compositions in the future...

[h2]Song of the Sea (Expert Mix)[/h2]

Like with "Beneath the Surface", this one is at a slower tempo of 90 BPM (the two are very similar actually), so I wanted to focus on more complex rhythms in the chart, including 16th note patterns!



In the above gif you can see a couple different trickier rhythms being used. The sixteenth-note flying enemy patterns are something that I haven't actually used in the main game (yet??), as I've only done that grouping in the middle of a water zone. However, it's actually quite easy to read once you're familiar with it, so that might end up showing up in World 6 at some point (?).

The trickier patterns is the one with the yellow ghost intermixed with red basic enemies. Fortunately, the tempo is slow enough here that even if you're just visually reacting to the spacing, you can kind of get it even if you don't parse it ahead of time. It's very satisfying to hit, though! This makes me think that maybe when I work on level 6-3, it should be one that's at a slow tempo like this, so that I can introduce some (maybe not all) of these more complex rhythms.

One last note is that currently these types of 16th-note based patterns are impossible to create in the level editor, which obviously isn't ideal given that they're actually quite fun to work with when used tastefully. I'll have to make a note to see if I can add a setting for snapping to 16th-note placements, which I'm sure will also involve a bunch of work on validation and bugfixing, haha...

[h2]Assist Features[/h2]

Feature-wise, I've actually been doing a bunch of work on game assists -- functionality to make the game temporarily (or permanently) easier, for players who are struggling or get stuck on a certain song but want to continue to progress.

First off, I've added a dialog that shows up if you fail the same section of a track enough times (currently, after your 30th attempt). Because this is an unexpected prompt that happens in the middle of gameplay (I try to avoid those!), I made sure to fade it in and disallow input during the fade, to prevent you from accidentally selecting something without having the chance to read the prompt.



One of the options here is a "track preview" feature, inspired by the "binoculars" in Celeste, which let you view upcoming sections of the level in case you want to get them into your head and see what's coming up:



There's also "practice mode" (UI still being worked on) which will let you repeatedly practice the current section on the fly (while controlling the speed, etc.) until you're ready to attempt it for real. "Temporary cheats" just contains settings for slowing down the music speed, lengthening timing windows, and enabling autoplay, but they automatically disable themselves once you reach the next checkpoint.

[h2]Track Freezing[/h2]

The new assist feature that I've just developed is something I'm calling "track freezing". When this is enabled, the level scrolling will automatically pause and wait for you to make the correct input, if you haven't already done it in time:



The music keeps playing even during this pause (trust me, it would be wayyy too complex to try and pause the music and reschedule it on the fly), so after you make the input, the scrolling tries to speed up to "catch back up" to the music.

The end result is actually pretty cool! If you aren't missing any inputs, then the track freezing doesn't kick in at all and you just play normally. But if you miss some notes or press something too late, you'll be able to just correct it on the fly and have the music keep playing instead of having to restart the section.

[h2]Life...[/h2]

...happens. I'm happy that I was able to put together a progress update for y'all this month, but I honestly wasn't sure it was going to happen as I had some tough stuff that I had to handle in my personal life over the past weeks. This is kinda just the way that things go (I'm a normal human being just like the rest of you), but it's also kind of tough to account for the in the grand scheme of things.

Now that we're at the end of June, 2024 is officially halfway over! (gulp) Looking back over the past six months, it seems like I mainly worked on a bunch of bonus levels and custom level import/publish flows, but there were also some other great features added such as the companions, plus the eighth-note ghosts (a new core mechanic!). If we're being totally realistic, it's probably inevitable that I won't be able to do a full release by the end of the year =(...but part of me wants to keep that deadline fixed because I think it's good to have a goal to shoot for!

Honestly, though, I've always been in "marathon mode" for this project -- as long as I'm continuing to progress forward at a steady pace, that's going to be considered a success for me. Hopefully seeing more and more levels and features is also enjoyable for you guys, even though I know y'all just want to hurry up and play the game already. I guess part of the reason I wanted to call out the whole "real life" stuff is that recent events have reminded to step back a bit in terms of perspective on what is important to me. At the end of the day, as much as I wish I could say that releasing Rhythm Quest is going to be something that brings lasting happiness into my life, it kind of isn't, in the grand scheme of things.

...which is not to say that it's not important to me or that I won't keep working on it! I'm still having fun working on the project and every now and then (usually when I'm charting new levels) I'm reminded of just how fun the gameplay actually is, and of COURSE I'm going to finish it, guys, I'm very committed to that. But at the same time, it's something I'm trying not to get too worked up about, because it's only one part of my life. I hope whoever ends up reading this will also keep in mind what the "the real important stuff" is as they go through their day to day struggles and efforts.

Anyways, personal segment over, I'll see you back here next month with some more updates!

Rhythm Quest Demo v0.31.0 Released

The Rhythm Quest Demo has been updated to version 0.31.0! This patch includes bugfixes and some new mod options, including the ability to switch the color mapping for obstacles in levels.

Full changelog:


Version 0.31.0
- Added color skinning visual mod settings to aid readability
- Added visual mod to adjust horizontal placement of enemies
- Added timing mod to scale timing windows by music speed setting
- Added visual mod to re-show collected coins after respawn
- Tweaked respawn timings, especially across different music speeds
- Fixed not being able to buffer jumps out of pause
- Fixed ghost enemies not respawning quickly enough when offscreen
- Fixed some level select logic when levels are played out of order
- Fixed flight paths jumps pulsing with incorrect beat offset
- Minor backdrop scrolling tweaks
- Fixed mis-sized character shop graphics
- Fixed checkpoint activation sounds sometimes replaying on respawn
- Fixed missing coin animation frame

Devlog 67 - New Level 6-1, Level Publishing

Well, first things first -- I've got a new level to show off! I decided to move the speed zone level (formerly 6-1) to become level 6-2, and instead have this new level 6-1 which introduces the yellow ghost enemies in their basic state. Here's the video:

[previewyoutube][/previewyoutube]

[h2]Visual Design[/h2]

I've been a bit worried about all of the world 6 backdrops looking similar since there's a space theme and it's really easy to just do dark backgrounds and stars over and over again. At least this backdrop set has different focal elements (rim-lit planets vs. a spiral galaxy) than the other one I did, but I think I'm going to have to change it up a little more in the future.



Besides lots of little point stars, a lot of the "nebula" texture here is achieved by layering rough transparent splotches of color -- I'm just using the spray tool here so it makes more of a textured/fuzzy cloud rather than smooth shapes. I build up the "glow" effect on the large sun and planet using multiple layers, which seems to work well!

Of course, in action all of the different layers are scrolling around, which makes things look even nicer:



[h2]Music Design[/h2]

World 6's music style isn't =fully= fleshed out yet, but I have a few ideas that I've been trying to push in the two tracks that I've made so far. One of them is the use of more interesting bass synths -- here we have a plucked synth bass that gradually opens up using some filter automation over time:

https://rhythmquestgame.com/devlog/67-bassline.mp3

There's nothing too crazy or special going on with the drums, just a pretty basic pattern, though at one point I layer in some heavily-reverbed claps for some extra spice. The classic triangle-wave bassline comes in halfway here, along with some chiptune-style noise drums:

https://rhythmquestgame.com/devlog/67-drums.mp3

I only have so much leeway that I can get with lead melody sounds because I really need to make sure they cut through the mix effectively (usually means no massive detuned supersaws or anything like that), but even then, I'm still trying to push the variety a little bit. Here I'm using a square-whistley synth with a gratuitous amount of pitch bending/portamento so it's really bendy. There's two different patches layered on top of each other, which contributes to the slightly-detuned sound.

https://rhythmquestgame.com/devlog/67-bendylead.mp3

Later on in the chorus I try to introduce some thicker synth arp patterns. Here's a pretty classic detuned sound and a simple arpeggio pattern:

https://rhythmquestgame.com/devlog/67-arps.mp3

And here's that chorus drop, with everything playing:

https://rhythmquestgame.com/devlog/67-chorus.mp3

[h2]Chart Design[/h2]

As I mentioned, this is the level that introduces the yellow "dotted eighth-note" ghosts, so there's plenty of those thrown in by themselves, but I also wanted to be sure to mix in purple ghosts (to contrast the two). The most complicated yellow ghost pattern is this one where there's an air jump immediately before it:



I'm hoping to add a few very specific 16th-note patterns involving yellow ghosts in later levels here, but for now this will suffice.

[h2]mod.io Publishing Flow[/h2]

In addition to working on world 6, I also took some time hammering away at trying to build out a publishing/export flow for mod.io. Mostly this meant a lot of UI work as I integrated with the mod.io SDK/APIs. Here's what it looks like at the moment to login via email, submit a security code, and the publish a level:



If you launched the game through Steam you also have the option of using Steam as an authentication method -- it should automatically pull your steam ID and userinfo from the account you're playing with, and display the (localized) mod.io terms of service if needed.



It's not perfect, but it's a good start! The next major step here is to actually work on a "publishing checklist" where the editor will check to make sure your level is actually complete before letting you export (you need to fill out the tile/author information, decide whether the music will be distributed as part of the level export, probably also some copyright disclaimers, etc.).

[h2]20k Steam Wishlists[/h2]

Last, but not least, I created a little banner image to celebrate passing 20,000 wishlists on Steam (crazy!).



Everything has really come such a long way! Even my artwork has really leveled up since the last time I tried to make a banner image like this:



Hopefully Rhythm Quest will continue to get even better from here on out...

Thank you for 20k wishlists!

Incredible - Rhythm Quest now has over 20,000 wishlists on Steam!



I just wanted to take a moment to thank you so much for all of your support and interest...I'll continue doing my best as I work towards a full release!

Devlog 66 - New Characters, New Companions

Another month, another devlog. At least I'm consistent, if nothing else. That consistency is what I've relied on for the past 8 years of development (has it really been that long!?), so hopefully it'll continue to carry me through.

[h2]Rain Girl[/h2]

I shifted my focus (again!) this month, this time working mostly on new character graphics! First up is the girl from our Cocoa Moss game "Rain", released back in 2014:



This was a somewhat more complicated sprite set to put together since the umbrella adds an extra element of complexity. I tried to fit in some subpixel movement here and there to get across the side to side movement without seeming too distracting. The saturation is also upped a ton to make sure that she fits into the more colorful world of Rhythm Quest (which has a completely different aesthetic).



The jump animation was pretty simple, just removed the side to side motion and tried to retain some of the movement of her hoodie. As with some of the other characters, she has a very brief crouching frame that helps to provide a brief flash of movement when a jump starts.



Flying is just the same thing, with the wing graphics included.



This one was where I really had fun! I feel like I've really started to get the hang of how to build this sort of attack animation. Using Sayuri's attack as a reference, I made sure to make ample use of motion smears, and a little bit of stretch on impact before she settles into her main "recovery" pose. She also turns her entire body into the attack, which helps give it a feeling of weight.



Here's the winged version, this time played at a faster speed. You can start to see how the smears carry a lot of the information in those quick first two frames.

[h2]Companions[/h2]

Of course, adding the girl from Rain wouldn't feel right without also being able to add the black meowmie from Rain, too:



While I could have just added this as another element in the girl's spriteset, that would probably feel too static -- I wanted there to be a bit of visual lag between you and meowmie, so you can feel like they are following you around like a little companion. I ended up building a system to accomplish just that, so now you can have a companion that follows you around, tracking and matching your movement:



Of course, now that I have this system in place, I can use it to add other little cute companions, too. Here's a little chicky that I made, perfect for following around Ducky:



[h2]Meowmie Princess[/h2]

As I was thinking about other games that I've worked on, I realized that the princess from "Watch for Falling Rocks" might also be a nice fit to put into the game:



I wasn't exactly sure how her attack animation (?) was going to work, but I decided to just see what I could do with her run/walk cycle and go from there.



Here's my initial draft. The thing I really wanted to nail here was the floppy feeling of her arms, as I felt like that was a key component of her design. I actually ended up needing some extra frames of animation to express that here, so princess actually has 8 frames in her run cycle as opposed to 6 for most of the other characters!



Here's the touched-up version. Her head felt a little too static/robotic since it was fixed in place, and her dress is basically a cone so it doesn't really express the side-to-side-movement as well, so I worked on a bunch of subpixel movement to give her face some very light side-to-side motion. Having the extra animation frame helps it feel more fluid; it's nice!



For the longest time I wasn't sure what to do with her jumping and flying animations. I initially tried having her arms and feet just stay static, like with the girl from Rain, but it felt a little too stiff, especially compared to her run cycle, so I instead stumbled upon this idea where I have her flapping her arms and bicycling like she's trying to fly...I love it, haha. Part of what sells this animation is that her head is positioned an extra bit forward, like she's just really trying to lean into it. Playing the animation at a faster rate than the run cycle also helps the "flailing" feeling:



Flying has the same arm-flapping motion, but more relaxed now since she actually has wings. The wing animation cycle only has 3 frames and I needed 4 frames for the arm flaps to look good, so there's a little bit of a mismatch there, but I think it ends up looking pretty ok despite that.



The attack animation needed like a dozen different passes before I settled on something that I was happy with. This was my very first initial attempt, which honestly sucked (haha). I wasn't even sure if the idea of hurling a spiky ball would make sense visually at all, so I mostly just wanted to get something rogh in place to test with. The idea was to actually spawn a spinning ball that bounces off screen after hitting an enemy. I liked how fun the spinning projectile looked (even if it's somewhat unusual), but the throwing animation wasn't reading that well; it just looked like princess was headbutting the enemies.



For attempt #2 I tried to go for more of a baseball pitch type of motion and make it read more clearly. I made an effort to have her head not bend over so far to the right so it doesn't look like she's headbutting anymore. This was a definite improvement, but I felt like it still read kinda weirdly, the whole concept of throwing a projectile didn't seem to be making sense at such a close range. (also, if she could throw the balls like this, why can't she just attack the enemies from further away...??)



Based on the previous drafts I decided to go a different direction and just have her do an overhead slam. This both made more sense as it's a close-ranged attack (not a projectile toss), and also read better as I'm able to get a nice big 180-degree motion arc above her head. The animation definitely needed to be cleaned up, but I was happy with this new concept.



Here's the final version! I swapped out the spiky ball graphic (initially was based on the colors in Watch for Falling Rocks) to something more immediately recognizable, and made sure to add some generous motion smears so the arc above her head is obvious even though it only appears for a couple of frames.

When the animation reaches the appropriate point, the ball projectile is spawned as a separate object, positioned correctly, and given some random parameters so it starts spinning and traveling through the air. It took a lot of work to get here, but I'm happy with the results!