Keeping things moving

RPG combat can be a big complicated system of buffs, debuffs, resistances and counters for a player to understand and solve. It can also end up being two bags of hit-points, standing in front of each other repeating animations until one of them falls over.

One of the best ways to break up combat and make it feel alive is to have the characters move around the battlefield.

I’ve been working on movement powers this weekend.

What’s the gold standard for super-movement in combat? Maybe the opening scene in X2 with Nightcrawler invading the White House? Quicksilver’s fighting style in Age of Ultron? Have any game systems managed to capture this yet?

Lunge powers are melee attacks that move the caster towards the target before delivering the attack. I had them working with a number of options, such a teleport attack that positions you exactly behind your target.

For speedsters, I wanted to extend this so you ran past your target delivering the attack on the way. I added “Lunge Past” option that leave you 10m past your target for these “drive-by” attacks.

If you have a target, you move towards them (or past them). If you don’t, you move forwards in a straight line. I also have wanted for a long time to make a defensive movement powerset with the simple act that each sprint or teleport gives you a short-lived dodge bonus. Stand still and you’re easy to hit, but keep moving and you’re hard to track and connect with. This seemed to cover both teleporters and speedsters well, but also a great way to avoid combat devolving into a stand still.

I needed “kiting” behaviour for the AI. I want to specify on a per-character basis a desired minimum range. If the target is too close, they back away. This works well for ranged characters in standard enemy groups – the melee units come forwards to attack the player and the ranged or support units try to stay at range.

Then add some code so that they can move away using a lunge power, eg teleport away or superspeed sprint away if the player gets too close, rather than just walking.

What about fliers? I have them moving away but sticking to a ceiling height of 4m above the player when they kite.

My code for flight movement and lunges was sometimes pushing characters through buildings and other undesirable behaviour, so I added raycasts to avoid that.

Last on my list was leaping – I did this differently by making the character actually jump, and avoiding the raycast, as its a perfectly viable tactic to jump over an obstacle for a surprise attack.

I made a number of general-purpose villains to test these powers under AI control, and smoothed out a lot of rough edges.

Gold has Leaping abilities, Thunderbody’s a speedster, Tiger Wasp flies and Z Hole can teleport himself, enemies and throwable props. Max Leonus has Acrobatics. You can see them all in action here.

I now have the following, all working nicely for both players and AI

  • Superspeed sprint to target, that can also be used for kiting and following. Provides a stacking dodge bonus, so moving around makes you hard to hit, standing still doesn’t.
  • Superspeed “lunge past” attacks where you run past your target and overshoot them while delivering a punch or disarm
  • Teleport behind the target, or teleport away for kiting or closing. Also provides a stacking dodge bonus per use
  • A fly-by punch attack
  • Flying ram attacks that do damage to yourself as well as to any targets you hit along the way. You may want to pair this with a force field or some other defence if you plan on using it a lot.
  • Leaping kick that knocks the target back from a distance.
  • Leaping high jump for repositioning, and stacking dodge buffs.
  • A “heavy landing” that knocks everyone over when you land.

As a result, combat is feeling much more kinetic with units moving around rather than just standing still and fighting.

I still need to work on counters to these abilities. Currently if you’re playing a purely melee character with no ranged attacks, you have to lure fliers back down to ground level by running around a corner so they approach you again.

You can of course buy a simple ranged attack, maybe with some knockback or crowd control to turn off flight. Or perhaps throw environmental props at them? I’m now planning to make everyone capable of throwing objects, with Amazing Strength providing options to throw bigger objects.

This buys into a more general question for gameplay. You choose your two heroes, and get confronted after that choice with a random supervillain or two while on patrol. There are some good and bad matches regardless of travel powers, eg Gold is bad news for anyone who relies on Crushing damage, but is vulnerable to electrical attacks.


Possible solutions:

  • I forewarn the player back at base as to who they are likely to face on patrol, so they can make an informed choice.
  • I provide a rich environment for the player to improvise when they face an unlucky pick, eg electrical hazards in the city that they can use against Gold, or small props that can be used to bring down fliers.

Sounds like something to think about for next weekend!

Comments

Leave a comment