Devlog 40 - Particles and Menu Tweaks

Published: July 9, 2022

I'm continuing to polish up things here and there in preparation for the demo build!

Steam Next Fest

I also recently received an email invitation to Steam Next Fest, where upcoming Steam games can show off their demos and host livestreams. This will be happening October 3-10, which works out pretty nicely for me in terms of timing, so hopefully it'll be a chance to get a bunch more eyes on Rhythm Quest :)

Particle Effects

For quite a long time now I've had a bunch of placeholder "white square" particles in the game:

These show up everywhere, including on the ground when you jump/cross a beat, when you attack an enemy, when you use an airjump, etc. I've always planned to replace these at some point but never got around to it before since it doesn't really affect gameplay or anything. I've finally gone ahead and drawn some new particle sprites this week to replace them:

I've also redrawn the "slash" effect, which was fine before but was being scaled up by 1.5x (yuck) because the original sprite I had wasn't big enough. I've also added a Kirby Super Star-style "blue circle flash" to give it a little more color and impact:

The coin collection effect has also been tweaked, now looking more crisp and with some black outlines to help it show even against lighter backgrounds:

Here's all of those working in action:

There's still a couple of effects which need redrawn sprites -- such as the speed zone and water zone entry/exit effects -- but this should do it for everything that's featured in the demo.

Shop Tweaks

The shop coin count and icon in the upper-right now animate whenever you clear a level or beat your previous high score:

This is a pretty small thing but I'm hoping that having some motion here will help make sure the shop button doesn't go totally unnoticed (plus it's fun to see!).

The shop menus now have their own background as well. I was initially wondering if I should go with some sort of indoor aesthetic with this, but I was...admittedly feeling lazy, and also didn't think that would work out with the parallax scrolling effect that I currently have going on (which I like since it offers some movement in the background). I ended up just doing a very plan starfield background, which is not particularly exciting but actually sort of strangely makes sense since you scroll upwards to get to the shop menu:

I've also locked some characters for the demo (decided to still let you unlock the ever-popular Ducky and Furball though...). The price of unlocking each character has gone up, from 100 coins to 250 coins. There's something like 800-1000 coins in the demo (and much more in the full game), so I want to make sure you at least work a little bit for these unlocks!

These prices may end up changing later (which would be a little bit of a headache...), particularly if I end up implementing unlockable alternate costumes, but that's something I haven't quite figured out (I may also have other bonus unlockable content like lore / artwork). Hard to balance out the economy when you don't quite know how much stuff is going to be for sale!

Menu Tweaks

I've restructured a lot of the settings menus -- I decided to use more of a hierarchy and put a lot of settings into submenus that you can drill down into. This makes it a little more unwieldy in terms of having more screens that you need to go through (in particular I'm sad that lag calibration is no longer a primary menu item) but cleans up the initial menu a bit and I think is more logical, without creating a ton of additional work for me.

There's also a new menu item for resetting data and settings (which you can now do separately from each other). Previously this was under the "Cheats" menu, but I think it makes more sense under "Settings":

For scale/zoom settings, I've always wanted to have some sort of visual preview of what the scaling looks like, but wasn't sure how to structure the UI in a simple way to handle that (without creating a ton of work for myself). I ended up just breaking apart the UI overlay and making it partially transparent so you can see the player in the background:

Screen Filters

This probably wasn't necessary for me to implement right here and now, but since I was already working on a bunch of setting stuff, I went ahead and knocked out a todo item that I had for implementing backdrop filters for increasing readability if you find the backgrounds too colorful / distracting:

This is completely shader-based, so all I had to do was add an additional parameter or two to my existing two palette shaders and then implement the different filter effects based on that.

The Fade filter works by moving all colors closer to the primary background color, so for a level with a light sky background, everything will be lightened, and for a level with a dark night backdrop, everything will be darkened. Of course, in order for this to work, the shader needs to know what the "primary background color" is, and I currently don't have a "rule" for what palette index this occupies. I could specify (per-level) which palette index to look up, but I happen to have an unused palette slot, so I just made it so that palette index 9 is the background color lookup, and then copied the appropriate colors into the per-level palette data.

Darken is as simple as you can get -- it just multiplies each color component by 50% so that you get only half of the brightness. Nice if you want something that's a little easier on the eyes in terms of overall screen luminance.

Desaturate uses a quick calculation to try and push the colors a little closer to their grayscale equivalents (without going all the way to gray). I'm not sure whether anybody will like this one but I decided to include it for completeness anyways, since often when backgrounds are too visually busy it's because they're oversaturated with color.

This was a short week for me (had one or two days where I didn't really work) but I'm glad I still managed to have some stuff to show off anyways!

<< Back: Devlog 39 - Demo Build Work
>> Next: Devlog 41 - More Demo Polish