Design ARPG combat system feel

G

Guest User

Guest
I was making a combat system for a action rpg game, but I noticed that it doesn't feel very good. How would I make it feel better? Should I use physics? Knockback or not? (Currently I'm not using physics and have a simple knockback).

I wasn't sure if I should post this in the programming thread or here.
 
...If you think your ARPG feels bad, what ARPGs feel good to you? You have thirty years of examples to look at - why are you asking us? Haha! It's not as simple as "knockback or no knockback?" Everything in a game works together to make a good experience. Study the games you love and figure out why they work! =)
 
G

Guest User

Guest
Do you have any footage/gifs of your current combat system?
There is not much to show because I don't have any animations yet. But here is something:


Study the games you love and figure out why they work!
Hmm... Ok. :cool:

It's a broad question - one thing to really consider is whether or not you want realistic combat or arcade like combat. If you're not going for full realizm, then make it vibrant, bloody, explosive, loud, and extreme.
Ok, I'm starting now understand what I want to make.
 

Yal

🐧 *penguin noises*
GMC Elder
There definitely are TONS of stuff you should add to make that combat system remotely enjoyable...
  • Attack animations. The easiest way to draw them is to make a chargeup image, a cooldown image, and then have the attack itself just be a blurry arc connecting the weapon in those two (which is shown for just 1-2 frames, while the chargeup and cooldown are displayed for longer)
  • Make the knockback MOVE the enemy over time, not TELEPORT it.
  • Hit animations when the attack hits (blood, shockwaves, damage numbers popping up, dust etc). Bonus points if the enemy enters a special "ouch!" animation for the duration of the knockback, or flashes a different color. The player wants to know not only that the attack hit, but also that they're dealing damage.
  • Aural feedback also helps. You want a metallic clang or "ting!" sound for attacks that dealt no damage, and a meaty, crunchy sound for attacks that dealt damage. Attacks themselves probably should be a whoosh-y sound, no matter if they hit or not.
There's a bunch of other stuff worth considering:
  • whether attacking should stop your movement or let you move,
  • whether the player mostly will fight a single strong enemy or tons of weak ones, and what quirks in the combat system will work best for the approach you choose,
  • whether you can cancel attacks by doing other moves (e.g. dodgerolling),
  • how many different directions you can attack in and whether there's any difference in them,
  • whether you want a stamina system to stop the player from spamming attacks and stunlocking everything or will balance the combat system in other ways...
 
G

Guest User

Guest
There definitely are TONS of stuff you should add to make that combat system remotely enjoyable...
  • Attack animations. The easiest way to draw them is to make a chargeup image, a cooldown image, and then have the attack itself just be a blurry arc connecting the weapon in those two (which is shown for just 1-2 frames, while the chargeup and cooldown are displayed for longer)
  • Make the knockback MOVE the enemy over time, not TELEPORT it.
  • Hit animations when the attack hits (blood, shockwaves, damage numbers popping up, dust etc). Bonus points if the enemy enters a special "ouch!" animation for the duration of the knockback, or flashes a different color. The player wants to know not only that the attack hit, but also that they're dealing damage.
  • Aural feedback also helps. You want a metallic clang or "ting!" sound for attacks that dealt no damage, and a meaty, crunchy sound for attacks that dealt damage. Attacks themselves probably should be a whoosh-y sound, no matter if they hit or not.
There's a bunch of other stuff worth considering:
  • whether attacking should stop your movement or let you move,
  • whether the player mostly will fight a single strong enemy or tons of weak ones, and what quirks in the combat system will work best for the approach you choose,
  • whether you can cancel attacks by doing other moves (e.g. dodgerolling),
  • how many different directions you can attack in and whether there's any difference in them,
  • whether you want a stamina system to stop the player from spamming attacks and stunlocking everything or will balance the combat system in other ways...
Thanks for taking time to make this kind of list. Now I can just use this as a checklist. :p

Make the knockback MOVE the enemy over time, not TELEPORT it.
So you noticed it...:eek: Is it possible to do this without physics? If so, how?
 

Simon Gust

Member
So you noticed it...:eek: Is it possible to do this without physics? If so, how?
instead of changing their x and y, change their hspd and vspd or whatever you've named your horizontal and vertical speed variables.
This usually works by making either a seperate state that handles knockback or actual knockback that requires an implementation of friction inside your movement code.
 
G

Guest User

Guest
instead of changing their x and y, change their hspd and vspd or whatever you've named your horizontal and vertical speed variables.
This usually works by making either a seperate state that handles knockback or actual knockback that requires an implementation of friction inside your movement code.
Ok, thanks.
 

Yal

🐧 *penguin noises*
GMC Elder
So you noticed it...:eek:
Duh, the only way that could get more obvious would be if you added a big neon sign saying "DID YOU SEE THAT?!" :p
Game feel is a big thing, expect to spend like 25-30% of your dev time fixing 'feel' issues you discovered in test playing. (Feel issues can arise from tons of sources, too... everything between physics, level design, and music choice can cause things to feel kinda off)

instead of changing their x and y, change their hspd and vspd or whatever you've named your horizontal and vertical speed variables.
This usually works by making either a seperate state that handles knockback or actual knockback that requires an implementation of friction inside your movement code.
I'd recommend having a separate pair of speed variables just for knockback, then you can knock enemies back without messing with the direction their AI is making them move in. (Proper use of parenting makes this more manageable - the parent would handle everything, but run an "my_ai_script" using script_execute() when it's not in a special state like being knocked back; that script is set in the create event of the child objects, and thus different between each enemy type... this lets you make the behaviour of special states like knockback and status ailment be the same for each enemy without duplicating code in thousands of places)
 
G

Guest User

Guest
I'd recommend having a separate pair of speed variables just for knockback, then you can knock enemies back without messing with the direction their AI is making them move in. (Proper use of parenting makes this more manageable - the parent would handle everything, but run an "my_ai_script" using script_execute() when it's not in a special state like being knocked back; that script is set in the create event of the child objects, and thus different between each enemy type... this lets you make the behaviour of special states like knockback and status ailment be the same for each enemy without duplicating code in thousands of places)
I have improved a little bit the code, but I'm stuck making the animations. I just can't make them.:confused:
 
Top