Hello everyone. You may remember me from such blogs as:
It turns out “Dodging in the Callisto Protocol Doesn’t Work” was the first entry in my own dodge-themed blogging universe - my Tom Cruise’s The Mummy.
Welcome to Part 2.
Player suggestions are often bad and their observations often wrong, but player impressions are never wrong. When players feel a certain way it’s important to understand why, and you can’t just ask them because they usually don’t know.
Many thought the dodging in The Callisto Protocol felt off. When I looked into it I found that I didn’t like the design, but the design also wasn’t well-implemented.
I see a lot of people panning the dodging in Lies of P and it’s similar story. I don’t think the dodging in Lies of P is broken, but there’s ample room for improvement.
One of the most important skills of a game developer is the ability to go beyond “this feels bad” and into “for these specific reasons”, as that naturally leads to “and here’s how we fix it.”
I agree that the dodge feels bad, for specific reasons I’ll lay out in the rest of this post.
Dodge is on Button Press, Not Release
A move like Ryu’s charged Denjin Hadoken using button release makes sense - you hold the button to charge up and release the button to unleash the move. Testament in Guilty Gear and Carl Clover in BlazBlue both use button releases to control a second character as their central gimmick. But if you’re making a game with a punch - just a plain-old nothing-fancy punch - it should probably activate on button press. This is even more true of dodging in an action game as dodging is extremely time-sensitive.
In Lies of P if you hold dodge your run, and if you press and quickly release you get a dodge. I’m not a fan of dodge and run on the same button but maybe they just ran out of buttons. In some games holding the button would transition the dodge animation into a run, but maybe that didn’t work due to the animations and properties of the dodge. So I get it, even if I don’t love it.
At first I thought dodge being on release was the main issue, but someone pointed out that in Dark Souls dodge is also on button release. I don’t remember ever having a problem dodging in Dark Souls, and honestly I didn’t even remember that dodge was on button release. So while dodge on release isn’t ideal it’s clearly not a deal-breaker.
With that in mind I decided to compare dodging in Dark Souls 2 (because that’s the one I have installed) to the Lies of P demo.
Timing Dodges vs Attacks
I ran some standardized tests on both games, which I’ll get to shortly. In doing them I noticed some odds and ends I’ll call out here.
In Lies of P if you aren’t locked onto an enemy you get a dodge roll, but if you are locked on you get a dodge hop. The dodge roll goes farther and has a more recognizable animation so it’s not just a cosmetic difference. When you’re just running around the game world doing nothing in particular you have a dodge that that travels far with a very recognizable animation, but when you’re in combat (presuming the game wants you to lock on in combat) you have a dodge that’s less distinct and covers less distance.
The two dodges also control differently, which I’ll get to in-depth later and is very strange.
Comparing Dark Souls to Lies of P it’s a lot harder to time dodges in the latter; I’m not sure why that is exactly, though I suspect enemy animation style is one culprit.
Enemies in Lies of P do have wind-up tells, but the time between the wind up and the attack is highly variable. This is a good thing to include in moderation - otherwise the player can just dodge with the same timing whenever they see the enemy wind up. But the timing is probably too variable, especially for early-game enemies.
In Dark Souls 2 the starting enemies have pretty slow attack animations, and in particular they accelerate into the swing pretty slowly. In Lies of P the once the enemy starts to swing they accelerate into a full swing very quickly.
The two of these together means that you see a wind-up pose you know you should be ready to dodge, but that’s not actually when you should dodge. Once their attack starts in earnest it’s fast enough that it’s hard to dodge on reaction.
The wind-up poses aren’t very distinctive. The starting enemies in Lies of P have two attacks: a big vertical overhead swing and a small vertical overhead swing, that both begin with the same arm on the same side. You can tell them apart - for the big swing the enemy turns their back to you to wind up - but they look more similar than different.
There may be other factors as well. I’m not saying these are factors - just that they could be.
There could be a technical implementation issue where the opening frames of the dodge aren’t invincible - an order of operations issue perhaps
The hitboxes in Lies of P could have more aggressive leading edges. (I’ve handily illustrated this below)
The hitboxes might switch on earlier in the attack animation
The window where you can cancel an attack into a dodge may open later (for this post I’m mostly considering dodges from neutral)
Whatever the reasons I often react what feels like a few frames too late to an enemy attack, in a way that feels “unresponsive”. That’s in quotes because I don’t think it’s actually unresponsive - in my unscientific testing the input lag didn’t seem bad.
Now on to the tests.
Test #1: Buffered Dodges
This is the first test:
Dodge to the left, then while you’re still dodging to the left:
Press the left stick to the right
Press and release dodge
Release the left stick
This is what happens in Dark Souls 2. I would consider this correct.
Maybe another time I’ll go in depth on input buffering, but in short you want to buffer the player intent.
As the player my thought process is “I’ll dodge to the left, then dodge to the right, then start walking again.” So I input a dodge left, then I input a dodge right, then I start moving the left stick. Because of input buffering I can input the right dodge while I’m still in the middle of the left dodge - without buffering I’d need frame-perfect timing to dodge twice in a row without a gap in between. The key point here is that my intent for the second dodge is to input a dodge right.
This is what happens in Lies of P
I dodge to the left twice! This type of thing is subjective but that said: this is wrong. I input a right dodge but the game gave me a left dodge.
When the buffered dodge fires in the video I’m not holding left on the stick, I’m in neutral. So even if the game didn’t remember my intended direction I would expect the second dodge to be neutral - in Lies of P neutral dodge is a backstep, so I would expect left dodge → backstep. But instead I get two left dodges.
At the end of the demo you can unlock the ability to turn your dodge into a longer distance dodge by pressing the button again, the way you can in God of War and Stranger of Paradise: Final Fantasy Origins. Maybe it makes sense that extending a dodge would make the extension continue in the same direction . But I don’t have that ability at this point - I don’t even know it exists. And I’m explicitly holding right on the stick when I input the buffered dodge, not left or neutral. And I’m not double tapping the input, I’m inputting the second dodge slowly. Maybe the code has to deal with a lot of different cases including optional unlocked abilities and got messy, but what it’s doing doesn’t make sense based on my input and my current abilities.
But that’s not all.
Here’s a second test. It’s very simple:
Dodge to the left
While in the middle of the dodge, input dodge again while the left stick is in neutral
Before watching the video what do we think will happen? In the first test the game didn’t really care what the left stick was doing when I input the second dodge - it seemed to act like the stick was in neutral. So now that the stick is in neutral I’m expecting the same behavior: I’ll dodge left twice.
Huh.
What actually happened is I dodged left then dodged right. Or really, I dodged left and then did a backstep (which is the neutral dodge) while facing left. At the tail end of the video you can see that if I input left dodge, neutral dodge, then hold the stick as the buffered backstep fires I do the backstep opposite the current direction of the left stick.
Maybe in theory it’s cool that you can roll left, buffer a backstep, and then choose the backstep direction later, but the way this works is getting awfully complicated. Here’s the rules as I understand them:
If you buffer a neutral dodge it comes out based on the direction you’re holding when the dodge fires
If you’re hold the left stick when you buffer a dodge the game buffers a directional dodge, but it doesn’t care what direction the left stick was in, merely that it was being pressed
If you’re holding the left stick when the directional dodge fires you dodge in the current left stick direction
If you aren’t holding the left stick when the dodge fires you continue in the direction you were moving
While I can explain this logic my fingers don’t grasp it in the moment. When I enter an input my brain moves on to the next input. If I enter left dodge, right dodge, special move, I don’t expect that I can revise my right dodge into a left dodge by holding left when the right dodge fires - I’m done with the right dodge I’ve moved on with my life. This breaks my mental model of how an input buffer works: I input moves then they fire off when available. Instead this system remembers only some details of the moves you input, and draws other details from when the move fires.
It’s ok for a system that “just works” to be opaque. You don’t have to understand the exact details of the system if it makes intuitive sense. But this is hard to explain and understand and it doesn’t “just work” - it just feels weird. There’s a muddy relationship between what I enter and how my character responds.
But wait that’s not all.
What if you’re locked onto an enemy? When you’re locked on you do hops instead of rolls. Take a guess what happens with various inputs then watch this video.
So…
Here if you input left dodge, then buffer a right dodge, you get a backstep. I wrote above that if you input a directional dodge while already dodging it’s buffered but with the direction TBD. It turns out that’s not right, or at least incomplete. If you do that while locked on it buffers a neutral dodge (a backstep), not a directional dodge. The same input that gave you two left dodges when not locked on gives you a left dodge then a backstep when you are locked on.
You shouldn’t need a PhD in dodge mechanics to dodge in a video game.
Something has gone wrong here. The implementation has technical bugs, or logical bugs, or the design is fundamentally misguided, or it’s accommodating future abilities I don’t have yet. Maybe the dev team got too used to the system and has grown blind to the quirks. But it just feels off.
To understand this section you don’t have to perfectly understand how the system works. The point is it’s hard to articulate and hard to make use of - it’s confusing to both brain and fingers.
In Dark Souls 2 I tried a bunch of different dodge timings and inputs and it “just worked.” If you pay close attention there are some oddities - it seemed easier to buffer a directional dodge than a neutral dodge. That’s interesting but not bad - it never felt wrong, my guy did what I wanted. That’s what an input buffering system should do: capture player intent. In Dark Souls 2 my guy does the right thing and in Lies of P my guy frequently does his own thing.
Test #2: IFrames
I promise these other tests are a lot simpler!
Test #2: roll into a guy as he’s attacking to see how much invincibility dodges have.
Dark Souls 2
Lies of P
Since Lies of P has different dodges while locked on I tested that was well:
My conclusion: whatever they all feel fine.
I was honestly surprised by Lies of P. The dodging “feels bad” and I’ve seen people complain about IFrames but they seem reasonable. Generous even. It’s visually well-communicated - when you dodge forward the part of the animation where you begin to stand back up is about when you become vulnerable, which is what you’d expect.
That said, something that came up in this test (and became a frequent issue) is the physics of dodging into enemies. In Dark Souls 2 when you dodge into an enemy the second half of your dodge slides off and to the side and you end up going around them. In Lies of P you get stuck on the enemy.
This isn’t necessarily a problem, and there might be reasons for it: later you unlock a post-dodge attack (or so I’ve read), so sliding past an enemy might make that attack awkward to use. But I frequently found myself hung up on enemies while trying to dodge past them rather than into them, which was a problem.
Test #3: Enemy Tracking
Tracking is how much the enemy rotates to face you during an attack.
Tracking is composed of three main elements:
How aggressively the enemy tracks, IE how many degrees per second they can rotate to face you
How much of the animation they track for - they might track only during the windup, or during both the windup and the attack, or somewhere in between
Any special caveats - for example not tracking at all if the target is doing something special like dodging or teleporting
Here’s a test of Dark Souls 2 tracking:
This enemy has very slow tracking, and maybe also the tracking is only during the windup. It’s hard to tell if they track you while you dodge but I’m leaning towards no.
Either way your dodge is very effective - it goes far, it slides past the enemy instead of getting stuck on them, and the enemy doesn’t track well at all.
Here’s Lies of P
There are a bunch of not-great things happening here.
One of my dodges gets stuck on the enemy’s head
I said before that not sliding past enemies when you dodge into them was fine in theory, but in practice this happened way too often by accident. In the video I was trying to dodge to the side and got stuck on the enemy’s big dumb hat.
The enemy tracking is pretty aggressive, lasts for a long duration, and it tracks well during a dodge. There are a couple points in the video, particularly at the end, where I roll and the enemy tracks me close to perfectly during the entire roll, then hits me. This is the first enemy in the game!
Here’s Lies of P while locked on:
The enemy tracking seems the same, with the hop subbed in for the roll.
The hop covering a short distance combined with the good tracking on the enemy attack means it’s easier to dodge if you dodge late, to take advantage of Iframes. But timing dodges at the last second is tough for reasons discussed earlier.
Enemies track well rotationally but they don’t seem to adjust for distance - the early enemies have short-ranged attacks and they don’t step into them much or appear to dynamically adjust if you’re farther away. So effectively they track side hops very well but backsteps not at all.
It’s perfectly valid for dodging to be more about creating space than abusing Iframes, but it feels unbalanced here in that only the backstep creates appreciable space, while also rendering the aggressive tracking moot and avoiding getting stuck on enemies.
A Last Weird Behavior of Note
There’s one other behavior I want to call out.
In this video I’m holding up on the controller and trying to dodge into the enemy. Instead of repeatedly dodging into the enemy I get trapped in a sort of negative feedback loop where I dodge more and more to the side - by the end it almost seems like I’m dodging away from the enemy.
I’m not sure what’s happening here - it may be a consequence of the camera movement. I hold towards the enemy and press dodge, and I slide off the enemy a bit to the side. As I do that the camera moves left and rotates. Now when I hold up on the stick I’m not holding exactly towards the enemy since they’ve drifted off to the right. So I dodge to their side even more, and as the process repeats and I become increasingly misaligned?
This may be exacerbated by how dodge direction is determined. (Oh no not this again!) I expect the game to remember my desired world-space dodge direction at the time I input it. (World space: translate the controller input into an absolute direction in the world, not relative to the player or camera) But the game determines the dodge direction at the time the dodge fires, not when input. Between the time the dodge was buffered and the time it fires the camera can move - in this case it moves a lot. So my original intent was to dodge towards the enemy (I was holding up AKA towards them), but by the time the dodge fires the camera has moved and “up” on the controller means something different?
Similar problems could arise for other in-combat camera movements - mini-cinematic events, manual camera adjustments, potentially even camera shake. Whenever the camera moves my directional dodge intent is distorted.
Pressing up on the controller and pressing towards an enemy aren’t precisely the same thing, since the enemy isn’t exactly centered on the screen. But with this lock on camera system, which keeps the enemy in front of you and largely centered, I expect “up” and “towards” to be roughly equivalent. In this weird case my character is moving what looks like 90 degrees or more off of what I intend. I’ve effectively lost the ability to dodge forward. Even if I pause a beat before dodging toward I still dodge to the side, as if the game itself got dizzy.
And it looks weird animation wise - it looks like my character begins to dodge forward then turns and goes to the left. I think this is just a quirk of the camera angle and animation.
I tried repeatedly dodging into an enemy in Dark Souls 2 and it seemed fine - you go off angle a bit but don’t end up in a negative feedback loop - you still dodge roughly into the enemy. It “just works.” (Though in fairness due to stamina limits I could only dodge 3 or 4 times in a row)
Nitpicking is the Job
All of this may seem rather nitpicky. But nitpicking is the job. Nobody is paying me to write this so it’s not my job exactly. But it’s the job of game developers to nitpick their own game.
When players say “this feels bad” you can respond with “they’re playing it wrong” or “what do they know?” but that’s not going to make the game better. (Or sell better) We should take common complaints seriously. If you want to increase game performance the first step is figuring out why it’s slow. If you want to fix “this feels bad” the first step is figuring out what that means exactly. That involves a lot of nitpicky detailed analysis but sweating the details is the job. Almost every game you love had team members who sweat the details.
Great breakdown. I think another part of it that I don't see mentioned here is how long attacks animations lock you in before you are allowed to dodge. It's a matter of frames, but Lies of P attacks take a little longer compared to Soulsborne games.
I think this interacts with the strange dodge buffering quite poorly. I found I often queued up a dodge too early during an attack, which led to the game doing something I wasn't expecting. I also found that especially with bosses, I could recognize that I needed to dodge far before an attack hit me, but I often couldn't break out of the attack animation quickly enough.
Mixed in with the character's slower movement speed, that led me to be super cautious during fights and only trying to go for big openings, because I felt like I couldn't rely on the dodge system. Maybe that's intentional, but seeing as the game seems to take a decent amount from Bloodborne, I would guess not.