1. Rhythm Quest
  2. News

Rhythm Quest News

Demo Soundtrack Release

[p]The official soundtrack release for the demo version of Rhythm Quest is now available![/p][p][/p][p]Purchase/Download Link (Bandcamp): https://ddrkirbyisq.bandcamp.com/album/rhythm-quest-demo-soundtrack[/p][p][/p][p]The demo soundtrack is also available as a YouTube playlist, with accompanying visuals: [dynamiclink][/dynamiclink][/p]

Devlog 82 - More Companions

[p]I took a break from working on level charting to turn my attention to something that's been on my to-do list for a while -- adding new companions and followers that you can purchase in the in-game shop! I've added 5 new ones, for a total of 7:[/p][p][/p][p]
[/p][h2]Animation Notes[/h2][p]First off we've got this cute green turtle![/p][p][/p][p]
[/p][p]It's a simple animation, but took some fiddling to get the feet to read smoothly. There's a small little bob in the motion, but most of it is expressed through subpixel motion.[/p][p]The jump animation is a fun one where we have the limbs flapping about like it's trying to fly:[/p][p][/p][p]
[/p][p]So far none of the companions have separate animations for flight paths, but I also wanted to give turtle a chance to do the classic turtle thing and hide in its shell, so I used that for the flying animation, along with the standard green wings:[/p][p][/p][p]
[/p][p]The above concepts are combined together for when you respawn after making a mistake, which I think is a fun touch:[/p][p][/p][p]
[/p][p]Next we have a little red fox! The running animation is the most fluid one I've made so far -- it has 10 frames, more than any of the actual playable characters (ha ha...):[/p][p][/p][p]
[/p][p]I was initially going to look at some references to draw up a graceful running animation, but I pivoted to this happy-go-lucky trot instead, which I think is more fun. Getting the height of the "bounce" to feel right is really the main reason why this animation is 10 frames. There's also a bit of secondary motion with the head bob and the ears flopping around, but otherwise the main challenge here was animating the limbs to seem natural instead of robotic. Notice how they spend more time tucked back and less time contacting the ground, so the timing is more snappy.[/p][p]For now I'm again just using my normal cop-out animation of "just play the running animation, but faster" for jumping and flying:[/p][p][/p][p]
[/p][p]I could maybe spend some more time here and use motion smears instead, but this'll do for now.[/p][p]Last but not least, there's also this dude:[/p][p][/p][p]
[/p][p]I did look up some references of capybaras running around, but...it seemed more appropriate for it to just be sitting and napping, so I went with this kind of nonsensical wagon that it sits in. It's weird, but if it gets a chuckle out of someone then that's good enough for me![/p][p]The "mini ghost" was a really low-effort one since there's no animation, just a single image that floats up and down in the same way as the enemy ghosts. The sprite is just a smaller version of the enemy ghosts, with a little cute bow on top. Here's that one in action:[/p][p][/p][p]
[/p][p]And finally, another low-effort one, I decided to transfer over the player character sprites from Ripple Runner into the game. Wow, this was drawn over 10 years ago...it's really quite shoddy by my standards now, but there's a certain charm in keeping it exactly as it is instead of reworking it, perhaps.[/p][p][/p][p]
[/p][p]This one has a special feature where for flight paths it flips upside down, as a reference to the gameplay in Ripple Runner:[/p][p][/p][p]
[/p][p]Since I was already examining the followers a bit, I also gave the black cat from rain more of a gray tint and outlined it in dark black, to hopefully make it show a little more clearly in dark stages like this one:[/p][p][/p][p]
[/p][p]I do think that levels 3-3, 3-4, and 3-5 are generally just too dark though, so perhaps that needs tweaking as well (some of the other levels are also too bright...)[/p][p]I know the companions aren't really an "important" feature for Rhythm Quest, but working on these animations has been a really fun break from the other types of work that I've been doing, and it's nice to have the roster a little more fleshed out now.[/p][h2]Discord Changes and Onwards[/h2][p]I'm also finally knocking off another long-time to-do item and changing the Rhythm Quest Discord server to be announcements-only instead of a forum for general discussion. I could probably make an entire separate devlog post about community management (and how I don't want to do it anymore), but the long and short of it is that there is not that much to discuss there since the design of the game has been complete for quite some time, and I've decided that it's not worth the extra energy and time to maintain a public discussion server when I have other things that I should be prioritizing (like, you know, actually working on development).[/p][p]I am also personally getting a little bit tired of people asking me when the game is going to be finished, people demanding that I release extra levels to them early, people telling me to release the game for free and then announcing to my server that they will pirate it, people asking me to help them with their coding homework (!? These are all real things that happened...). I just wanna make my game in peace...[/p][p]As we go into the holidays I'm not sure whether I'll be throwing a ton of time into working on the game, probably just keeping up a steady pace like always. I hope everyone is staying safe and taking care of themselves during this time. Here's to another year of steady development and progress...the past few years have ALL had some rough IRL stuff happen to me midway through the year, so I am hoping to maybe have better luck with that next year.[/p]

Devlog 81 - Clematis

[p]Another bonus level, huzzah! I'm really excited to show this one off since I'm a big fan of how the track came out -- lots of energy, and fills in a niche that isn't quite covered by any of the existing tracks. As I continue to churn out bonus tracks here and there, I've been thinking more about trying to inject some more variety in the type of songs that I add to Rhythm Quest. I've already added some drum and bass music, classical songs, and even a track inspired by synthwave sounds, but I could probably have some fun exploring other genres, too. Stay tuned for the upcoming Gregoriant chant level? Haha, just kidding...[/p][p]Here's the video of "Clematis", with its normal mode chart. The song is quite fast at 180BPM, and the chart is pretty dense and challenging![/p][previewyoutube][/previewyoutube][p][/p][h2]Charting Notes[/h2][p]At this point I have pretty established patterns for how I like to chart my songs in Rhythm Quest. As I noted above, this song is quite difficult, reaching well above 300 effective inputs per minute at some points. You can tell from the obstacle counts that I tend to chart harder songs primarily with air jumps, flight paths, and flying enemies...[/p][p][/p][p]
[/p][p]One notable aspect of the chart design is that this is one of the rare occasions where I actually drafted up the entire music track first and then charted it afterwards. For the main levels in worlds 1-6 it was important that I sequence the music according to the specific gameplay mechanics that I wanted to highlight, but for these bonus tracks (especially the more difficult ones) it's more okay for me to just let myself run free with my melodic and rhythmic content and worry about the charting afterwards. That's especially true for songs at a higher tempo as at that speed I generally don't compose using syncopated rhythms that would be difficult to chart anyways.[/p][p]There were some segments where there was a lot of emphasis on offbeats and I had to spend some time reworking them until I came up with something that felt "intuitive" to read. I have some general rules of thumb that I try to follow as I'm charting, but this is the kind of thing that's tough to really check without just doing some trial and error to see if a section flows well or not.[/p][p][/p][p]
[/p][p]Something that I ended up changing my mind on while doing the charting for this song was the charting of flight paths with flying enemies in the middle of them. I have an especially common pattern where I use a one-beat flight path with a flying enemy on the offbeat since it's an intuitive and satisfying "grouping" of inputs to parse.[/p][p][/p][p]
[/p][p]Previously I actually favored keeping these flight patterns horizontally flat, so that everything is in one line, but I've backtracked on that decision and I think I'm instead going to lean toward adding ramped height changes to these flight paths, as the vertical position of the enemy can then help you parse out where in the beat it's placed in relation to the beginning and end. This was already something you could distinguish based on the fact that the enemy was a red one instead of a green one, but I think the additional visual clarity can potentially be good here.[/p][h2]Music Design[/h2][p]As I mentioned earlier, I've been trying to think about greater diversity in the (bonus) tracks I create for Rhythm Quest. To that end, I've been referencing some other rhythm game tracks to give me ideas of what kinds of sounds I could be exploring. For Clematis, the intro section is pretty heavily inspired by Sota Fujimori - Phlox, even going so far as to use the same chords (the flower-related name of the track is a nod to this inspiration). I also used a faster tempo, as I feel like most of the existing Rhythm Quest tunes are more in the realm of 120BPM.[/p][p]https://rhythmquestgame.com/devlog/81-intro.mp3
[/p][p]Like the song I was inspired by, I wanted the drums in this section to be sparse, but feature some quick hi-hat and percussion fills for rhythmic interest. Since there's not a ton of density going on in the soundscape, I dialed up the reverb to add extra "spaciousness" to the sound:[/p][p]https://rhythmquestgame.com/devlog/81-introdrums.mp3
[/p][p]Going into the chorus drop, there's a chorded "supersaw" synth which opens up using a lowpass filter, and then the main bassline filters in using a highpass filter. It's a pretty tried-and-true technique of holding back the low frequencies until the downbeat, at which point you can open everything up and kick into a full sound.[/p][p]https://rhythmquestgame.com/devlog/81-introbuild.mp3
[/p][p]The chorus is really full and energetic...I really like this song, haha. Here's that whole section -- note the changeups in the drum rhythm that coordinate with the lead melody, as well as the "mini drop" / beat freeze (is there a name for this?) halfway through where everything cuts out except for a big impact sound. Toward the very end I use a phaser effect for some added spice in the transition out of the chorus.[/p][p]https://rhythmquestgame.com/devlog/81-chorus.mp3
[/p][p]The snare sound here and the drums in general are more full when compared to the intro. As noted before, there are some rhythmic changeups dictated by the melody, and I also layer in some of my favorite triangle-wave based tom drums, though they're a bit understated because there is so much else that needs to be heard in this section.[/p][p]https://rhythmquestgame.com/devlog/81-chorusdrums.mp3
[/p][p]The main "meat" of the sound here is provided by the thick supersaw chord synth, and then a thick bassline layer that plays mostly with the same rhythm. (There's also an extra mid-bass pulse wave layer thrown in for good measure to fill things out) The sidechain "pumping" against the kick drum is pretty aggressive here...it sounds almost overdone out of context, but when you listen to it with all of the other sounds going on, it's not so bad and helps give room for everything else to breathe and balance.[/p][p]https://rhythmquestgame.com/devlog/81-choruschords.mp3
[/p][p]The delicious icing on top here is the sparkly echoed arp sounds that fill out the soundspace. There's a few different layers going on here, including a dialed-back version of the riff from the beginning of the song, but the main element here is the bell-like sound (a patch based on FM synthesis) that washes over everything with a nice sparkly reverb (courtesy of Valhalla Supermassive).[/p][p]https://rhythmquestgame.com/devlog/81-chorusarps.mp3
[/p][p]I still need to chart out the easy and hard versions of this chart (maybe I'll dial back the normal one a bit depending on how those turn out), but for now I'm happy to have another cool song added into the game. I'm almost nearing the point where I'll have just as many bonus tracks as normal ones, but I have no real gripes about that! In some aspects, you could consider the "main" levels to be the "extended tutorial" that guides you through all of the mechanics in the game as well as how to parse different canonical charting patterns, which will then equip you to tackle all of these bonus songs...[/p]

Rhythm Quest Demo v0.39.0 Released

[p]The Rhythm Quest Demo has been updated to version 0.39.0.  This update includes a rework to the audio latency calibration flow, as well as some screenreader and gamepad fixes. The Mac App bundle has also been notarized.[/p][p]Full changelog:[/p]
Version 0.39.0
- Changed audio calibration flow
- Audio calibration now set in increments of 25ms
- Screenreader: support different Windows TTS voices if corresponding language pack is installed
- Fixed pause music playing at wrong rate after practice mode speed changes
- Fixed Accessibility menu not working in game
- Fixed broken tutorial when screenreader active
- Fixed some missing readouts when screenreader set to "Read Only"
- Fixed issue causing screenreader support to fail when NVDA is detected
- Fixed (inconsistent) doubled input on steamdeck / using gamepads
- Added new toggle for "Alternate" gamepad input to avoid doubled inputs
- Normalized scroll wheel / trackpad scroll behavior for Windows vs Mac
- Apply screen filters to water effects in level 1-3
- Notarize Mac builds

Devlog 80 - Calibration Rework

[p]Progress continues on doing the easy/hard charts for the remaining levels that I've made so far, but I took a detour for a bit to work on something more important that I've been putting off for a while -- redoing the audio latency calibration flow.[/p][h2]The Story So Far[/h2][p]Rhythm Quest is a music game that does its best to Do Things Right when it comes to audio synchronization, even doing things like prescheduling jump/hit sounds by default instead of playing them in response to player actions. Of course, some sort of audio latency calibration system is needed to measure the difference in the delay of input/video display versus the audio output that is being used by any given player.[/p][p]The calibration has gone through a number of different forms over time. Here's a really early version that was needlessly confusing and had the player set the audio offset manually for no good reason:[/p][p][/p][p]
[/p][p]I realized at some point that =that= wasn't really going to work well, so I fell back to something simpler:[/p][p][/p][p]
[/p][p]And then there's this "rotating circle path" visual that has been in the demo for a while:[/p][p][/p][p]
[/p][p]I've known for a while that this needed a rework (honestly, the earlier/simpler version was probably better). I had various issues that I needed to solve...for example, I had the "beeps" create a melody to go along with the background music, but players were getting confused at which beeps they were supposed to be following. The whole circle path thing was "cool" but visually confusing and I don't think it actually helped many people understand what they were supposed to do. When I watched some people go through the flow, they were off-beat to the point that it would have been better if they =hadn't= gone through any sort of calibration process.[/p][p]This was something that I had been mulling over for a while (user experience design is hard!) thinking about how to do it effectively. I also did some research into how this is handled in other rhythm games -- unfortunately, a lot of it ranges from bad to worse. The flows I saw were either really bad (even for experienced users), or at the very least not easy to understand for the average layperson. I was beginning to wonder whether I should just not even prompt people for calibration at all and let only advanced users do it by drilling into the settings menus? That didn't feel right, though...[/p][h2]Opt-in Calibration[/h2][p]Thinking about this, the first thing I wanted was to give people a good and intuitive litmus test for whether they =should= recalibrate their audio latency or not. Before I was using flashing squares for this, but I wanted something less abstract and easier for people to see, so I built out this screen using an animation of a drum being hit:[/p][p][/p][p]
[/p][p]Hopefully this is much more clear, as it provides a snappy visual and also illustrates what the player should be looking/listening for to see if they care to change things.[/p][h2]Drum Animation[/h2][p]Drawing the drum animation was a fun little project. I obviously wanted something that clearly looked like a drum being hit, but it was also important to make sure that the exact moment of impact was highlighted. There's a brief flash that happens with the outline and other colors to demarcate this:[/p][p][/p][p]
[/p][p]I used a big motion smear, because there can't really be anticipation frames for this animation (I'm using it for the auto calibration flow as well) -- the drum stick needs to hit immediately on the first frame. And then the squash + stretch of the drum itself not only makes the animation more "lively", but also serves to create a visual "moment" that your eyes can distinguish for the moment that the drum is getting hit.[/p][p]Next, I needed to build the automatic calibration flow for if you say that the sound seems too early/late. This one is relatively straightforward -- this time the drum reacts to your input. There's a little progress meter on the bottom to solve a problem with the old calibration flow (it wasn't clear when it was going to be finished), and I even try to give you a rough indication of how consistent you were at the end.[/p][p][/p][p]
[/p][p]One little interesting quip you might have about this screen is that every system has not only some amount of audio output delay, but also a delay inherent in receiving and processing input, and having the result of that input become visible on the display. If you watch the animation of the drum as you tap, you might actually time your taps slightly earlier, so that the drum animation matches the audio, instead of tapping exactly when you =hear= the audio.[/p][p]I think this is okay, though. If players unconsciously (or consciously?) time their taps a little early in this way, that will probably be a tendency that they carry over into the game as well. And experienced rhythm game players who want to rely primarily on the exact audio timings may already know that the most accurate way to do this sort of test to achieve that outcome is to close your eyes or not look at any visuals at all...[/p][p]After calibrating, you get this screen where you can check your work, and the option to adjust it manually:[/p][p][/p][p]
[/p][p]I like this "choose the drum animation that looks best" approach as it provides a simultaneous side by side view of what different calibration settings look like, as opposed to most other flows I've seen (including my own) where you kind of just have to adjust a number while looking at one thing.[/p][p]
[/p][p]That's it for this update! There was a little more work involved in getting this all fleshed out, and getting the drum audio (it's just a pre-mixed separate version of the music loop, I don't schedule each drum hit on the fly) to play correctly; for example there's a completely different set of audio that plays in-game when you're in the pause menu and I needed to add the drum-sounded versions of that, too. But it's all working properly and this should be going out with my next patch release! I'm excited to finally be checking this one off (for now...) because first-time user experience is always important and this was definitely something I needed to address and iterate on at some point.[/p]