Prototype progress
I've gotten somewhere after about a week of intermittently plugging away at this!
Revisiting The Principles I Set
- Discovery over learning - intuitive spell language that encourages experimentation
- Allow for expressive execution - it's musical, so give people room to be expressive
- Players should feel they have a sacred knowledge - not gonna spell it out for you
Getting Started
I started out by refreshing myself on Graham Tattersall's post on coding to the beat. I had previously used this in conjunction with someone else's post to prototype a sort of DJing script that would change songs on-beat. It was part of an idea to have the battle music in an RPG blend in seamlessly from the overworld music but be like a really hype remix of it.
Anyways, that code got the basic beat-counting up and running and so all I had to do was decide how spells worked and how you cast them. I knew I wanted a button sequence, but for the button sequence to have a certain logic to it. That way, if a player familiarizes themselves with spells from a certain element or family, chances are, those same button sequences will have an expected outcome for a different element or family of spells.
Controls
I figured the easiest choice for the rhythmic input were the right side controller face buttons— the classic Parapa-the-rappa or Yakuza scheme. But, if those same buttons are going to be used for jumping or other actions (not sure if platforming is in this game's future...) then there would need to be a modifier button triggered or held to go into a spell-casting state. I overcomplicated it at first. Each shoulder and trigger would be a different magical element and then the face buttons would need to be tapped in a specific sequence with that specific shoulder / trigger button held to cast a spell.
For example: Want to create a fireball? Hold the right shoulder button and tap out a sequence of face buttons to the beat. Wind spell? Hold the right trigger and tap out a sequence of face buttons to the beat.
As I messed around with this control scheme it was tricky... like playing guitar and worrying about where your hands are on the frets and what rhythm you're strumming. Also a potential carpal-tunnel inducing amount of finger contortion.
To simplify, I came up with an idea that's kind of like playing scales. You only need to hold down the right shoulder button to go into a spell-casting state, but whichever face button you press first will determine what school of magic you're using.
- Fire = West Face Button (square on PS)
- Wind = North Face Button (triangle on PS)
- Water = East Face Button (circle on PS)
- ? = South Face Button (X on PS)
So on a PS controller, hold R1 and then press Square on beat and you'll begin doing a fire spell.
To make the "spell language" intuitive I then needed to develop a model for the next button presses and what they mean. I settled on thinking about the face buttons directionally. On PS Triangle is "up", X is "down", square is "left", and circle is "right".
The spell to create fire became Square, Triangle, X, Triangle or Fire, Up, Down, Up.
Up, Down, Up became shorthand for "create this element" so the spell to create water became Circle, Triangle, X, Triangle or Water, Up, Down, Up.
The hope is that if these patterns repeat and have an expected outcome, that experimentation will yield surprising, but logical, results.
So my shorthand for spell actions so far:
- Create = Up, Down, Up
- Spin = Right, Down, Left
- Push = Down, Down, Up
Not all elements can do all the spell actions currently. Only Wind can be spun or pushed, but in combination with the other spells, it gets interesting.
You can create fire and combine it with spinning wind to create a fire tornado! Doing so requires you to tap out two spell on-beat while holding the right shoulder button.
The Sound of Magic
I'm really enjoying the sound design aspect of this project. Exploring what audio queues make sense for this gameplay has just been a great forcing function for me to open up Reason and hammer out some ideas.
I started by just throwing a beat I made last year into the project to serve as the rhythm players cast spells by. There were a few issues:
- If you have a full song playing, what sound is made when players press the button correctly on beat? How does that not compete with the music?
- Syncopation and non-quantized notes are hard to deal with when your script is mathematically precise about where beats hit. I would play to the groove and not the metronome and that was really frustrating.
- If the overworld music is lush and full, then that doesn't leave much room for your spells to add to the experience sound-wise. And if you're tapping out a rhythm, shouldn't it sound like music?
So I ditched the beat I made and instead just created a quick 4 bar metronome click and used that for testing. Spells were much easier to pull off, so I decided anything from that point on would need to be quantized until (if and when) I figure out how to program a groove into the script.
The initial "success" and "miss" sounds I used for any spell input were just sample UI sounds and they got real old real fast. It felt like the feedback for doing something rhythmic should be musical. So I thought about musically, what your spell input could be and tested a few things:
- Drum fill - each button is a different drum sound (all toms was my first experiment) and so when you do a spell, you syncopate the rhythm however you want to create a drum fill and when you're successful the result is fire or something.
- Melody lead-in - each button is a different note in-key with a melody that plays if you successfully cast your spell. I made a quick melody in Reason and then sounds for three of the notes in the melody. This was sort of cool at first, but then the player could start another spell and hit notes that just sounded awful with the melody that was playing. But, a successful spell triggering a piece of music... now that was kind of fun...
So I did a quick little "what would a fire melody be?" exercise in Reason and rather than notes of a melody being assigned to the buttons, I just assigned a simple clap sound. Now you clapped in a melody when creating fire. That was fun, but the melody came in abruptly.
What if the melody fades in more and more as you get closer to completing the spell? That's where I landed for now. Each successful button press adds 25% volume to the melody and if you finish the spell successfully, the melody stays playing as long as you hold the spell.
So then I did my musical exercise with water and wind and came up with three complementary melodies (water is more of a texture really). Now if you mix elements e.g. cast a fire tornado, you'll hear the fire and wind melodies together. The more complex your spell, the more full the music will become.
As I layered these melodies in and play-tested, I felt like at some point a beat had to drop, so I switched the tick sound in the overworld to a bass kick. It's the beating rhythm of nature that you cast your spells to and it sounds a lot better with the music.
My next test will be to make the bass kick only play when you have the spell button held down. Maybe it's not something your character is always in-tune with and requires focus? Maybe it'll keep players from being fatigued over hearing quarter-note bass kicks on loop?
On Rhythm
My testing has all been done with music at 90bpm which is where I'm most comfortable. The quarter notes feel slow and deliberate and the eighth notes don't feel too aggressively fast. Originally players had to land their spell button presses on the quarter note. That just felt too slow and not aligned with my expressive execution principle. So I expanded that to allow players to land their button presses on any eighth note. I had thought about forcing certain rhythms with certain spells e.g. press-wait-press-press-press, but that felt too rigid and punishing. So right now you can rest for any number of beats you want— hell, rest whole measures and cast the slowest fire spell ever. Or you can tap out 8 successive eighth notes and cast the fastest possible fire tornado.
There are a few fail states for casting spells, but right now I'm leaning towards being forgiving when attempting combinations. If you cast a fireball and start the wind component of the fire tornado and fail that, you don't lose all your progress on the spell— just start the wind component over. But if you already have an element in play like fire and you attempt an additional fire spell and fail, you lose everything.
Next Steps
Time to start thinking about interactions with the environment and continue to play test and try and find the fun. I have a few scattered ideas to try:
- Spells that change the player's mobility - cast a tornado and ride it or use it to launch yourself.
- Timed challenges - light fires within a timeframe to unlock a door
- Spells as protection - walk through fire if you surround yourself with a water shield (like in Sonic)
- Spells that change reality - connect with the spirit world and talk to any lingering ghosts
Playing The Prototype
Controls (PS controller given):
- Spell-casting mode: R1 (hold)
- Spell helper screen: R2 (hold)
- Fire spells: Square (first button pressed)
- Wind spells: Triangle (first button pressed)
- Water spells: Circle (first button pressed)
- Move: Left Stick
- Rotate camera: Right Stick
Things to try:
- Toss a fireball at a torch: Cast fireball and then wind push to toss a fireball
- Make a steam ball: The current ultimate spell which combines a fire tornado with a water ball or a water tornado with a fireball
- Toss any other spell
- Put out the torches once you light them
- Dry out the torches with some wind if they get wet
Files
Get Working Title: Rhythmagic
Working Title: Rhythmagic
Casting spells to a beat
Status | In development |
Author | bmanmakesgames |
Genre | Rhythm |
Tags | Magic |
More posts
- Magical UI UpgradesApr 13, 2021
- Starting to feel like a wizard, or a DJ, or bothApr 03, 2021
- Where to start...Feb 02, 2021
Leave a comment
Log in with itch.io to leave a comment.