So far we have had spell casting based on a lookup table, and it worked but felt a little lackluster.
So this week I experimented with some twists and alternatives, including a Magicka-style spell casting based on mixing elements together.
Spell Lookup Table
To recap, the original spell lookup table approach worked like this:
- Each key or button is assigned to an element.
- Press any 2 keys (or buttons) to choose elements.
- Your chosen two elements select a spell from a 2D lookup table.1
- The spell is cast automatically.
I made spells get cast automatically because I wanted both fast-paced action and to encourage players to use a wide selection of spells.
But it was awkward on a gamepad: you use your right thumb to press element-buttons, so you can't use it to aim with the right thumbstick!
Spell Memory
Now the spell is only cast when you press the Right Trigger ("RT") button and the button remembers the last spell cast:
I made a similar change for mouse and keyboard: cast with left or right click.
I was worried it would be too overpowered, but actually it's quite easy to kill yourself so that's a nice balancing effect.
Custom Spells
Still, the lookup table approach felt less like "I am a powerful wizard making my own spells" and more like "I am indirectly selecting abilities from a list".
My gold standard for cool spell casting is Magicka,2 so how about I try a similar system?
- You press buttons to summon up to five elements.
- Some elements combine or cancel each other out: fire + water -> steam, for example.
- The shape and effects of the spell are all determined by the elements plus the "cast button" you press.
For example, if you summon Arcane
+ Water
+ Fire
then "offensive cast" you'll make an Arcane + Steam Beam that damages and wets enemies:
Spraying
I implemented the spray spell first:
Elemental combinations are similar to Magicka but expanded: Oil is a new element, and you can make Acid too. 3
Atoms are created in proportion to how many of the corresponding elements were summoned, and summoning more elements causes the spray to be bigger and faster.
Unfortunately you can really see the weaknesses in the liquid simulation if you try spraying 5x water:
Beaming
If you summon Life or Arcane, then you'll get a partly implemented4 "beam" spell:
Some elements that get added are created as atoms when the beam hits terrain or an enemy (or friend).
And some elements have effects on the spell itself: adding more Arcane makes the beam's hit-area bigger, and adding more Acid makes the beam eat through terrain faster.
I'm still working out what effects other elements (like lightning) should have!
Pushing
If you don't summon any elements, you can cast a 'push' spell as the default spell:
Come to think of it, maybe I should make Push be what happens when you try spraying Steam on its own?
Give feedback!
I want to hear from you!
- is this cooler than the lookup-table spell-casting?
- what effects should different elements have on spells?
- ideas for new elements, particularly ones that would have cool interactions with the world.
- new spell "shape" ideas: lightning, projectiles and mines are obvious ones, but what else?
Join Discord and let me know.
(And yes, element summoning, beam-spell and push-spell are all using placeholder art.)
Playable web build
To summon elements, you hold Shift, then press random keys until you've worked out what is what. 5
Release Shift and press left or right mouse button to cast the spell.
- Aiming with mouse isn't a thing right now, but that would be necessary in this control scheme. (God help keyboard player number 2.)
- I've mostly been testing with a Gamepad - hold LB to summon elements, then release and press LT/RT/RB to cast.
- I've also kept the "spell memory", so you can just cast the same spell again without having to summon the elements again.
- Yeah, I know it's super hard to tell which buttons are what, and which elements are cancelling each other out. I haven't gotten around to making a better feedback mechanism for that, but it's obviously required.
Like a spreadsheet. In fact, I designed the spell combinations on a spreadsheet.
Noita's spellcasting is cool too - in fact I'm confident it was inspired by Magicka's system. But you need a PhD to understand Noita's spellcasting.
Maybe later I'll have a crack at adapting it to something dummies like me can work with, but I also don't want this game to end up as just "multiplayer Noita".
I have more elements planned but I'll save them for another update!
Beams that cross each other should create a combined beam (or, in the case of Life crossing Arcane, should explode).. And beams should directly apply status effects to characters they hit. Also eating through terrain and spawning atoms is a bit glitchy.
Or you know, press F1 to read the controls. Like a NEEERRRRD.