Rhythm Quest Devlog 49 — New Promo Art, Other Random Updates

Working on Rhythm Quest off and on (~2–3 days per week) makes it harder to find time to do these devlogs, but I’ve still got a bunch of updates to report on nonetheless.

New Promo Art

You’ll now see this new art replacing the old pixel drawing in various places, such as on the Steam and itch.io pages, as well as the main Rhythm Quest website. I also went ahead and made a bunch of other versions of the image, such as this tall one which is used for the Steam library view:

The new art turned out amazingly well, and looks really cute and warm. It’s almost a little =too= bubbly for what the actual gameplay looks like, but in coming up with the original pink/purple/yellow color palette I intentionally wanted something that would stand out brightly in a Steam listing against the dark blue background:

It’s maybe not quite as bright as the images that use full yellow backgrounds, but it distinguishes itself pretty well, I think!

Sayuri Sprite Updates

I don’t know why I didn’t just do this originally — they really weren’t hard to draw at all, and I even threw in some minor subpixel animation to give them a little bit of bounce. I’m glad I got around to this; the old version of the sprites just looks weird to me now…

I also got around to fixing up her crouching frame, which I knew was sort of sub-par but hadn’t fixed since it only shows for a split second in actual gameplay. Same silhouette and sizing, but now it looks like she’s actually crouching down instead of being squished by her hair…

New Demo Level

I had to spend a little bit of time reworking some code to make sure levels 3–2 and 3–3 could correctly be skipped in the demo without breaking anything, but that’s all working now. Level 3–1 averages 1.7 actions per second with a peak of 2.4, whereas level 3–4 averages 2.2 with a peak of 3.0, so it’s quite a step up! Hopefully that will be enough to keep everyone satisfied until I can manage to finish the rest of the game…

OSX Text To Speech

The TTS implementation that the UI Accessibility Plugin uses is platform dependent, and on OSX it functions by simply spawning a process to invoke the built-in system “say” command. “say” actually comes with a number of different voices, many of which are designed to be used for different languages/regional dialects:

> say -v \?
Albert en_US # I have a frog in my throat. No, I mean a real frog!
Alice it_IT # Salve, mi chiamo Alice e sono una voce italiana.
Alva sv_SE # Hej, jag heter Alva. Jag är en svensk röst.
Amélie fr_CA # Bonjour, je m'appelle Amélie. Ma voix est en français canadien.
Amira ms_MY # Helo, nama saya Amira. Saya bercakap Bahasa Melayu.
Anna de_DE # Hallo, ich heiße Anna und ich bin eine deutsche Stimme.
Bad News en_US # I sure like being inside this fancy computer
Bahh en_US # Do not pull the wool over my eyes.
Bells en_US # Time flies when you are having fun.
Boing en_US # Spring has sprung, fall has fell, winter's here and it's colder than usual.
Bubbles en_US # I sure like being inside this fancy computer
Carmit he_IL # שלום. קוראים לי כרמית, ואני קול בשפה העברית.

Given that, it was pretty simple to add some logic to map the currently-selected language to a voice to use, and pass it as an argument to the “say” command. Here’s that all in action:

Of course, if your particular installation of OSX doesn’t have the particular voices that I chose, this will fail…but hey, at least it’s something? Unfortunately, I couldn’t find any easy way to get foreign language TTS working for the Windows implementation, so that one is still basically nonfunctional for other languages for now…

Other Fixes

The funny part is that I already had some code that was meant to handle this (I frequently ran into this issue when the standalone build lost focus and stopped updating, but the music kept on playing) — I make sure that when advancing the player’s x position, I do it in fine-grained intervals rather than all at once, checking for interactions along the way, to prevent you from skipping across major parts of the level.

The issue here was that if you had y-axis movement going on, I didn’t do any such thing for your vertical velocity, so you’d easily skip past any spikes or flooring collision boxes with a large enough timestep.

I reworked this code so that instead of chunking out each movement axis separately, I just take the overall time difference and chunk =that= into fine-grained intervals, which works just fine.

Ludum Dare 52

Our narrative-based game “A Day in the Life of Death” ended up taking the gold medal overall out of 1,144 entries, also placing 2nd in graphics, 1st in audio, and 2nd in mood. You can check out the game here, if you’d like to give it a try!

That’s going to do it for this update! Hopefully next time around I’ll be able to report some progress on starting up level design for world 5!

Learn more about Rhythm Quest and play the free demo at https://rhythmquestgame.com/



9-bit chiptune artist and indie game developer — http://ddrkirby.com/

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store