Devlog 32 - Jump+Attack Enemies, Too Early/Late Detection

Published: May 6, 2022

Steam Page Now Live

First thing's first: the Steam page for Rhythm Quest is now live!

Please go ahead and give it a wishlist if you haven't already -- really helps out for metrics and visibility!

Jump+Attack Enemies

This week I worked on two new levels for world 3! The existing level 3-2 that I had was too difficult, so I've pushed that aside for now and come up with a new one, this time featuring a new mechanic:

As you can see in the above video, I've now got teal-colored flying enemies that signify jumping and attacking simultaneously. This is technically not a new enemy type, but I thought it would be good to differentiate these from the regular flying enemies visually to help key you in to the combo button press.

I had actually already coded these enemies in a couple weeks ago, but hadn't gotten around to trying them out yet...I'm glad I finally did! The jump+attack enemies open up a lot of interesting charting possibilities when combined with other mechanics, such as flight paths:


The backdrops for this new level came out pretty nicely, despite being relatively simple. I started with the "brick" pattern on the wall (just tiled rectangles...) and then added in the archways. I wasn't quite sure what to put in the archways at first, but ended up putting a dithered waterline, along with some stars in the background.

If you look closely, I'm using the same "shimmer" effect on the top pixels of the water as in prior stages -- it's just two layers of lighter translucent pixel segments that scroll at different speeds, giving a nice effect. I also added a dithered fade on the top and bottom of the wall. The final touch was to add the torches on the walls for some added interest.

Too Early/Too Late Tips

I worked on this feature last month but forgot to write about it. The game now detects when you press a button too early or late and shows a quick message on screen:


I wanted to try adding this feature since it might be difficult at higher speeds to know exactly what went wrong, especially because of prescheduled (not dynamic) audio hit sfx.

How do you think you would go about implementing this? You could try to have an extra collider/zone in front of the player to detect "too early" presses, but that's potentially inaccurate and doesn't help for "too late" presses.

The way I ended up coding this is a little more intricate and involves keeping track of actions and button presses across multiple frames rather than trying to "predict" what could be coming ahead:

For "too early" presses, I detect these by keeping track of the last time at which the player performs a "dud" jump or attack that didn't correspond to an obstacle. When the player collider intersects with any new interaction point, I check to see if the player's most recent "dud" input matches the obstacle, and was within 0.25 seconds. If so, I show the "Too Early" message.

For "too late" presses, it's essentially the same thing in reverse. First, I needed to restructure my code to allow input processing even during respawns, since that's often when "too late" button presses happen (after you already ran into an enemy). For this, I continually keep track of the most recent interactable jump point and attack point that overlapped the player collider, as well as the time at which it last overlapped. If the player presses a button that doesn't correspond to something, or if the player is already respawning, then I check against these "most recent interactables" to see if I should show a "Too Late" press.


That's it for this week! I also worked on a new (easier) level 3-3 for introducing the multi-hit ghost enemies, which is almost done. I'm pretty happy with the rate at which I'm able to make new levels (when I'm actually focusing on them) -- I generally take one day to write the music and chart, and then another day for the backdrops and any additional tweaks. At this rate I should be able to finish world 3 next week, unless I get sidetracked by something else. That's only halfway (?) through all of the world, so I really have to get cranking through these!

One other thing I have in the back of my mind is how to approach world 4. I already have speed zones implemented, but I might consider taking another stab at the underwater section mechanic. I also have to solidify my musical style for that world, still...

<< Back: Devlog 31 - Steam Page
>> Next: Devlog 33 - World 3 Complete