Since this is my first public post and because we’re going to be doing these weekly, I thought it might be a good idea to include a bit more than just the last week on this one. This post will go through what each character needs just be able to be included in the game.
Setting the standard
For the new project, we needed to establish a baseline set of animations for all characters.
We had previously been swapping animation requirements in and out as we ran into problems or removing huge batches when we found more procedural workarounds. We ended up with tons of duplicate files, duplicate master animation files.
So we needed a final list of animations that each character needed bare minimum to be able to work in the game.
So, first things first, we need some guidelines.
All characters should be able to walk around and such, so what do we need for that?
Well, we need to be able to walk forward always, and then back, left, and right when you’re locked on to an enemy.
Then we need to same thing for jogging.
Sprinting only needs forward, since you can only sprint forwards. You can be locked on while sprinting, but we let you turn your character and only lock your camera.
So our standard movement ends up being :
- Idle (we cant just hold perfectly still like some kind of weirdo)
- Walk Forwards
- Walk Backwards
- Walk Left
- Walk Right
- Jog Forwards
- Jog Backwards
- Jog Left
- Jog Right
That seems simple enough, but when we tested it, the immediate transition into walking had the feet sliding around, which didn’t look great.
We added starts and stops to all directions, but that added way too many animations and ended up overcomplicating everything, so we ended up with only forward starts and stops.
Fast forward a bit and we ran into a problem where the system couldn’t tell which stop we should play if the character suddenly stopped. Ended up prototyping a bunch of different ways to handle it, but ended up just using the walk forward stop because that looked good enough on pretty much everything.
So we add those to our list:
- Walk Start
- Walk End
- Jog Start
- Sprint Start
Turn in Place
So that covers that basics of movement, so now to finish up the lockon portion, we need to add “turn in place” animations so your character turns towards the enemy if you’re not moving.
For these, its possible to get really specific with how much each turn should be, but we found that overall 90 degree turns covers 90% of the turns you would ever do, and players arent really going to be standing still much. So this is a good compromise.
So we add to our list:
- Turn Right 90
- Turn Left 90
The last basic locmotion that any character should be able to do is be able to jump. Not all enemies NEED to jump, but they do need to be able to fall, and falling is built into jumping. So we may as well include that for everyone, just in case we need it.
Jumping is made up of 5 animations:
- Jump Start (squat down and start leaving the ground)
- Jump Apex (Transition from jumping to falling)
- Jump Loop (Falling – really important )
- Jump End (Landing – only seen if you don’t move)
- Jump Compression (Weird looking additive animation that makes it look like you bent your legs a bit if you landed while moving)
All of these are pretty simple to see in the animation above except Jump Compression.
It looks weird and it doesn’t exactly look amazing on its own, but it does help in motion. The idea is to add the motion of only the bones that are moving in this animation above, on top of whatever the character is already doing. We can also scale it, so we apply more or less of it to show landings from high up or small hops.
So our final set of movement animations is now sitting at 21:
So that covers the basics of movement. Now we move on to more advanced topics like :
Hit Reaction Categories
So in the old project we had to make every hit reaction by hand, which was incredibly time consuming. There was a post about how time consuming it was on TikTok which got mixed reactions.
On one hand, we don’t want to spend the rest of our lives making hit reactions for every possible direction a player or enemy could be hit, in addition to how hard they’re hit. ON THE OTHER HAND, we kind of want enemies to react to the players hits, but time isn’t infinite.
WHAT DO WE DO?
Well a compromise is in order. We began experimenting a bit and settled on having small hit reactions be handled by the physics system. Not final at all, but seems promising.
Larger hit reactions still turn the enemy towards the player (or vice versa if the enemy gives you a beatdown) and then play a hand-made hit reaction just like before. In the future we hope to expand this system a bit to have the hit reactions maybe blend a bit of both together.
Physically simulated Hit Reactions are truly the life blood of modern science.Albert Einstein
So the Hit Reactions that we now need for every character are:
- Falter (Small hit – one step back)
- Stagger (Medium Hit – one or more steps back)
- Pushback (Large Hit – sent back significant distance )
- Knockdown ( Largest hit – Knocked back a large distance and grounded for a bit)
- Rebound (Reaction to being parried)
- Block (blocking any hit)
- Guard Break (If you were blocking, but ran out of stamina)
- Death (final hit – can be used to pick situational deaths, like the ghoul exploding )
With those, we’ve added 8 additional animations for a total of 29.
Now we move on to the final set of aniamtions:
So now that the character can move around in any direction, and respond to damage, the only thing they’re missing is, you know, THE WHOLE DRAW TO THE GAME.
So this is the actual bulk of the animations. To start, we need to decide whether or not this character can block or parry. For this example we’ll stick with block.
Its also made up of three animations: Start -> Loop -> End
Since its also made up of modular parts, it can also be layered on top of locomotion, so they can walk, jog, sprint, and jump while blocking.
So that adds 3 animations to our list depending on which one we choose
- Block Loop
- Block Start
- Block End
- Parry Loop (More like a cooldown for mistiming the parry – only plays if the parry misses)
- Parry Start
- Parry End
Next up is combos. Combos come in Light and Heavy flavors.
Light attacks are generally quick and Heavy are a little slower with increased damage. In addition, all heavy attacks can be charged, which means that they need a windup animation if you charge it AND they need a charged release animation if you make it to the end of the charge.
The eagle-eyed among you may have noticed that on the fully charged animation also has the arm grow unnaturally large during the fully charged animation. This is to reward the player with a bit of extra range for fully committing to the attack. (This is comically exaggerated in this screenshot, but helps to get the point across)
- Light set (Typically 3-5 in a combo)
- Heavy Set(Typically 2-3 in a combo depending on how complex they are)
- Heavy Begin
- Heavy Release
- Heavy Charge
- Heavy Charge Release
So this adds about 16 Animations.
To avoid damage, we need to be able to dodge in any of 8 UNIQUE DIRECTIONS.
- Dodge Start
- Dodge F
- Dodge B
- Dodge L
- Dodge R
- Dodge FL
- Dodge FR
- Dodge BL
- Dodge BR
Can’t forget about our good friend ROLL. Cant be dashing when not locked on.
But if you attack during a dodge/roll, we should account for that and add melee attacks that only happen right after you dodge.
- Dodge Light
- Dodge Heavy
Wait, we should also do that for Sprinting.
- Sprinting Light
- Sprinting Heavy
- Air Light
- Air Heavy
This adds 17 more animations.
Then we need to account for multiplayer, and make sure that you can be downed instead of dying, revive your teammate, and play your revive animation if you were revived.
- Revive Teammate
Another 3 animations.
SO FINALLY our total to make any playable character/enemy is:
Wow that’s a lot. Good thing we now have a UNIFIED SKELETON.
While this isn’t a replacement for hand-made animations across all characters, it serves as a good starting point for making similar animations, or sharing move-sets with similar weapons. So those 65 animations can be tweaked to fit each character rather than starting from scratch.
This was one of the biggest benefits we got from switching to UE5’s Lyra project, but also why its taking so long to switch.
See y’all next week.