I wasn't happy with the current spellcasting system, so I tried something totally different.
You stack perks and the combination of perks determines what spell gets cast.
It's just a prototype, but you can do some neat things with it already.
Spellcasting Problems
My original game pitch called for a "sweet magic system" to use for attacks, and I've had 2 cracks at that:
- v1: an old lookup-table-based approach, where a choice of any 2 elements select the spell that will be cast from a sort of 2D grid. 1
- v2: the current elemental-mixing approach, where you summon up to 5 elements that combine with a priority system to determine the spell, with leftover elements being imbued into the spell as secondary effects. 2
But I am still not happy with that v2, because:
- It's too slow to swap spells in the heat of combat. 3
- Most people summon one spell and stick with it - which leads to boring gameplay.
- There's no "progression": you can use all the elements from the start - so there's little motivation to keep playing. 4
Spellcasting 3.0
My mind kept wandering back to the game feel from just before I implemented spellcasting v2:
That's the fast pace I'm aiming for! Why did I scrap that and then spend 9 months doing other stuff!?
Well, because click to shoot seemed repetitive and uninteresting. But maybe spellcasting could be fast-paced like that, without those negatives?
Inspired by my favourite number-go-up perk-stacker games,5 I added a "Perk system": a standard mechanic in rogue-like games6 where you collect upgrades that change your character's innate abilities or attacks in some way.
And then I made a new click-to-shoot spell that was affected by those perks:
That felt like great fun!
But just running around spamming one attack is gonna get old, so I wanted to add a right click spell too.
Only... having each perk apply to both left and right click would be very same-y, so I decided to let acquired perks be assigned to different buttons.
Getting blasted around by your own explosions is a fun way to move around, but maybe it'd be better if your explosion could be triggered by your projectile hitting an enemy.
That sounded dangerously like Noita's insanely baroque spell-casting mechanic, which I am a little wary of. But I figured: why not, let's try it and see what happens:
This isn't really like Noita: perks increase their effects as they are leveled up and you can assign a perk to an ability as many times as you want.
Aside: in fact, the implementation of how perks modify each other is not like Noita's approach at all; instead I designed a new system inspired by stack-oriented programming languages and my existing element-mixing spellcasting. I might write more about it later, but the gist of it is that some Perks do things (like shoot a bullet) and other Perks just modify a doing-things Perk placed to their left.
And, inspired by the earlier explosion-powered locomotion, I realized that I could go further and have abilities triggered by any event!
Now that is interesting!
Players could maybe collect perks as they progress in the game, and maybe also collect different abilities, then use those perks in each of those abilities.
Open Questions
This is only just over a week of prototyping,7 so I still need to figure a lot of things out:
- How do you actually collect a perk? Or gain an ability? Or assign a perk to an ability? (all in a controller friendly way!)
- Are these abilities even spells? They feel like guns.
- How do I make a system like this pick-up-and-play-compatible, so you don't need a PhD to understand it? (that's a must for good local-coop play)
- How do I deal with passive perks, like "Resist Fire Damage" - are they also assigned to abilities?
- How the heck am I going to balance this? Right now you can just add infinite instances of the same Big Shot perk to get an enormous projectile.
- Can I somehow incorporate the "water and fire makes steam" reaction mechanic from spellcasting v2? (because I like it)
And, most importantly, how do I stop your mate Tim from spending forever optimizing his abilities when you just want to play this damn game with him?
Still, I'm excited!
Playable web build
Here you can use the (placeholder) loadout-editor window to customize your abilities:
- Drag and drop a Perk from the Perk list onto the list of perks in an Ability to add it there.
- You can also drag the number to the right of each Perk to change the perk's level.
Here's how you use the abilities:
- Click the little ▼ arrow on the top left of the loadout window to minimize it and actually see your character.
- Shoot Ability 0
Gatling Gun
by holding left click (it has a small windup period). - Shoot Ability 1
Revolver
by right clicking (it has a small cooldown). - Abilities 2, 3 and 4 are triggered automatically: every 3 seconds (
Autotimer
), when you get damaged (On Damage
), and when you die (On Death
).
Known issues:
- The whole implementation of projectiles is half done - for example if you make an overly big projectile, only the middle of it will collide with terrain (Collision with characters should be okay though.)
- Sound and visual feedback in general is entirely missing - you can't tell when you've gotten healed, for example.
- You can't use
Duplicate
to duplicate an on-hit effect. I'm not even sure if it makes sense to allow that?
Obviously it'd also be nice to have more than like 10 perks to play with.
Sure, this isn't a rogue-like game today, but maybe it will end up one? Who knows.
(Though I think making it a rogue-lite is more plausible, where some form of progression persists even when you die, since indirect friendly fire will always be a thing).
It was (unintentionally) a lot like how DOTA2's Invoker casts spells, except instead of choosing two elements from three elements, I had planned for choosing from five or six elements.
(My original inspiration was actually the Gauntlet Wizard's spellcasting system, but more people know DOTA.)
It is (intentionally) a lot like how Magicka's spellcasting works, though I never got around to implementing casting spells on yourself.
Unlike the games that inspired these spell systems, in this game (when playing with mouse and keyboard) you move with your left hand and also select spells with your left hand - so it's hard to move while casting a spell.
I could slow enemies down, but I want this to be a fast-paced game - not a tactical shooter experience like Noita.
I considered slowly drip feeding content, like limiting to only 2 elements at the start (boring), granting new spell elements over time (too limiting - part of the fun is in reactions between spell elements), or adding a bunch of new elements (too much work - new elements cause a combinatorial explosion because they need an interesting effect in each spell) - but none of those options seemed great.
Risk of Rain 2 and Crab Champions are my personal favourites. I wish there was an agreed-upon sub-genre to refer to these? They're sort of "action-roguelikes" but gamers interpret that as "Vampire Survivors clone", so I'm just calling them "perk stackers".
You might think it should have been 2 full weeks of prototyping based on last week's words, but unfortunately I spent a good chunk of this week recovering from a certain daycare's latest bio-experiment.