Witcher 3 Combat System Issues
Introduction
Despite its popularity and favourable opinion amongst players, Witcher 3 is not without its faults. The world, lore, narrative, aesthetics and attention to detail have players generally praising it as one of the best games ever made – having Witcher 3 won several awards.
However, the combat system is much more divisive, with players frequently describing it as “boring”, “clunky” and “unresponsive”.
In this breakdown, I’ll analyze some of the issues that emerged as I was playing the game and examining its combat system.
- Firstly, I will analyze the nature of Geralt’s abilities, enemy behaviours and combat encounters, attempting to establish some of the system’s underlying rules and patterns.
- I will then examine about how the combat content fails to challenge the player, and how these rules and patterns can be often confusing and inconsistent.
The combat encounters I analyzed were mostly located in the game’s first major region (Velen) amounting to approximately 16 hours of gameplay. In terms of difficulty, I played on “Blood and Broken Bones!” which the game describes as “You’re a Seasoned, Demanding Gamer”.
About Frame Data
Throughout the article I’ll analyze the animation frames of certain player and enemy behaviours. This frame data are rough estimates based on analyzing gameplay footage at 60 fps.
In the case of attacks, these have startup frames, active frames and recovery frames:
- Through observation alone, it is impossible to determine the exact active frames of an attack, so I will default them to a single frame when the attack visually hits.
- When discussing player abilities, recovery frames refers to the canceled recovery: canceling an attack’s recovery into another attack or a defensive ability.
Geralt's Abilities Overview
Melee Combat
Geralt is our sword-wielding hero ready to chop down some monsters with either the steel sword (for humanoids and beasts) and the silver sword (for monsters). Melee attacks do not consume any sort of resource. This means that players can keep melee attacking indefinitely. This may also have influenced some decisions in enemy design, which we will take a look at later.
Light Attack
Light Attacks come in two forms:
Light Close Attack
An attack that plays when the enemy is at close range.
Light Lunge Attack
These attacks play automatically when the player is far away from the enemy.
- Startup → ~20 frames
- Recovery → ~18 frames
- Startup → ~40 frames
- Recovery → ~18 frames
Heavy Attack
Heavy attacks take a different input combination, take longer but hit harder. Similarly, they also have a close and lunge variation.
Heavy Close Attack
An attack that plays when the enemy is at close range.
Heavy Lunge Attack
Similarly, the Heavy Lunge Attack helps close distance towards the enemy and keep the player engaged in battle.
- Startup → ~40 frames
- Recovery → ~30 frames
- Startup → ~50 frames
- Recovery → ~30 frames
Dodge and Roll
In terms of defensive options, the player could dodge or roll out of the way of enemy attacks. The duration here refers to how many frames with the player is without control.
Dodge
The Dodge has the player do a quick side-step.
- Duration → ~40 frames
- Distance → Short
Roll
Roll had players rolling towards a given direction.
- Duration → ~60 frames
- Distance → Medium
Parry
Parry allowed the player to counter some enemy attacks.
- Duration → ~60 frames.
- Parry can be used to parry attacks from any direction.
- However, it does not work against all types of attacks.
- It doesn’t deal damage, just nullifies the attack and pushes enemies back.
- It opens enemy defenses for a riposte action.
- Geralt doesn’t become immune nor does parry prevent other enemies to attack while stuck in the parry animation.
Signs, Bombs and Crossbow
Beyond melee combat, the player had access to an array of witcher tools to further enhance combat.
Signs
Signs are a form of magic used by the character – it expands the player’s toolkit with options that attempt to increase the depth of combat.
On their base form these abilities are the following:
- Aard → A shockwave that staggers opponents.
- Igni → A spell that ignites enemies on fire.
- Yrden → A magic circle that slows enemies down or makes incorporeal enemies attackable.
- Quen → A personal magic shield that blocks damage.
- Axii → An ability that muddles enemy minds, allowing player to break through their defenses.
Bombs
Geralt also has access to crafted bombs.
AoE Damage Bombs:
- Dancing Star – Fiery explosion.
- Dragon’s Dream – Cloud of gas that explodes when ignited.
- Grapeshot – Sharpnel explosion.
Utility Bombs:
- Dimeritium Bomb – Blocks magic abilities.
- Moon Dust – Prevents monsters from transforming.
- Samum – Blinds opponents.
- Northern Wind – Freezes enemies.
Crossbow
The crossbow is another tool that allows players to damage enemies from afar. It also brings flying enemies to the ground.
Input Queueing vs Animation-Locked
So how does the player chain all their abilities into each other?
When testing the player character, I have found that, for the most part, players are animation-locked when using abilities. There are some instances of Input Queueing in the following cases:
- Melee Attack → Dodge/Roll.
- Dodge/Roll → Melee Attack.
- Melee Attack → Signs.
Input queueing means that players will have their inputs more reliably read and can expect the game to feel more responsive.
Yet, since the player is animation-locked, this requires the combat system rules to be clear, so that players can take meaningful decisions with expected consequences.
❗Unfortunately, this is not the case, as we will see later.
Enemy Design Overview
Enemy Melee Combat
Virtually, all enemies in my analysis use melee attacks to strike the player. The distance from the player and startup frames challenge the player’ reaction times to varying degrees.
From observation, I roughly sorted these attacks into 4 main categories:
1 – Lunge Attacks
Similarly to player attacks, enemies lunge at Geralt, if they sit at a certain distance.
2 – Close Attacks
When enemies are in melee range, they often use a faster, snappier attack.
- Startup → ~25 to ~35 frames
- Startup → ~15 to ~25 frames
3 – Wide Sweeps
Bulkier enemies also make use of sweeping attacks. These occur close to the player, cover a larger area but generally have more startup frames.
4 – Charge Attacks
Bigger enemies also seem to have charge attacks with even longer startup frames – but generally hit harder.
- Startup → ~30 to ~40 frames
- Startup → ~40 to ~60 frames
Hit Reactions
Some smaller enemies play a hit reaction animation when struck by Geralt’s attacks, signaling players to maintain the offensive.
The animation duration depends on the enemy, but from observation, it seems to range between approximately ~30 to ~60 frames.
Large enemies seem more resistant to attacks and sometimes do not have hit reactions. However, since their attacks have more startup frames, it gives players more time to react.
Melee Combat Dynamics
Firstly, let’s take a look at the combat dynamics between player melee attacks and enemy hit reactions.
As mentioned, it is a bit impossible to gauge exactly the number of active frames of an attack – however they should sit up somewhere between the startup and recovery, with the total perceived frames of the animation being unaltered.
Case #01 – Player Close Attack
- Startup → ~20 frames
- Recovery → ~18 frames
In the case of a Light Close Attack, since it has a total of ~38 frames, players can safely use it against enemies. For example against an enemy with ~30 frames hit reaction:
- The player hits the enemy, triggering its ~30 frame hit reaction.
- The player is able to finish their ~18 frame recovery and initiate another attack with ~20 frame startup.
- The enemy might be able to start an attack after recovering from the hit, but the player’s attack will still hit first again.
- This results in players being able to keep chaining attacks.
It’s even more pronounced if enemies have longer hit reaction timings.
- With ~60 frames hit reaction, the player has more than enough time to recover from their previous attack and land the next one while the enemy is still in their hit reaction animation.
Case #02 – Player Lunge Attack
- Startup → ~40 frames
- Recovery → ~18 frames
Now, in the case of the Player Lunge Attack with a total of ~58 frames, things could play out a bit differently.
- The player hits the enemy, triggering its ~30 frames hit reaction.
- The player is able to finish their ~18 frame recovery, but now they have a whole of ~40 frame startup before the next attack hits.
- The enemy is able to recover, but now it heavily depends on their response.
- A Wide Sweep or a Charge Attack are generally fine since the player is able to finish their attack.
- A Lunge Attack (~25 to ~30 frame startup) could effectively allow the enemy to win the trade – recovering and then striking back.
- A Close Attack is a similar case, with its quick ~15 to ~25 frame startup catching players offguard.
However, the enemy’s Lunge Attack and Close Attack shouldn’t be a problem in the first place:
- The player shouldn’t be able to use the Light Lunge Attack when already within close range. Its purpose is precisely to cover the distance between the player and the enemy.
Finally, the longer the enemy hit reactions are, the safer it is for the player to keep attacking, even when repeatedly using Light Lunge Attacks one after the other.
If enemies take ~60 frames hit reaction, the attack is safe and the player keeps its frame advantage.
Case #03 – Player Heavy Attacks
In terms of heavy attacks, it again depends on the type of player attack (Lunge vs Close) and the enemy’s hit reaction time.
Heavy Close Attack
- Startup → ~40 frames
- Recovery → ~30 frames
- The attack hits and players have now ~30 frame recovery, and ~40 frame startup if they decide to use another Heavy Attack.
- Enemies with ~30 frames hit reaction, will recover quickly enough to punish the player.
- On the other end, ~60 frames hit reaction, still leaves enough time for the player to keep chaining these attacks.
Heavy Lunge Attack
- Startup → ~50 frames
- Recovery → ~30 frames
Regarding the Heavy Lunge Attack, there are more than enough frames for enemies to regain control and act before the player can land another hit, discouraging the player from chaining this attack. Once again, however, the player has little control over this, as Geralt continues to use the lunge variations even when already within close range.
Frame Race
What if both player and enemy start their attack at the same time?
In some cases, where the enemies are in the middle of an attack, if the player’s attack hits first, the enemy is interrupted and goes into hit reaction state.
This applies in sword attacks – both Geralt and the Drowner do a lunge attack. But Geralt wins the trade since he started first with a Light Attack.
It also applies when using signs like Igni – the Rotfiend lunges towards Geralt but is pushed back by a wave of fire.
But again, it always depends on the type of attack and the corresponding animation timing. For example:
Player Light Close Attack (~20 frame startup) VS Enemy Close Attack (~15 to 25 frame startup)
If both start roughly around the same frame, there is a high chance that the enemy wins the trade. Since the player is animation-locked, this could be very frustrating.
In the case of Player Heavy Attacks, things are even riskier, as the enemy is set to mathematically win most trades:
Even if we consider the Player Heavy Close Attack with ~40 frame startup, all kinds of enemy attacks are very likely to hit the player first.
So, these seem like some rules on the combat system and they work in most cases. There are already some glimpses of potential points of frustration, but it will get worse.
As we will see later, many of these perceived rules seem to apply in many cases, but in others… they don’t, even against the same enemy and same attack. Combat rules can get inconsistent and seem arbitrary.
Enemy Defensive Behaviours
The nature of player and enemy combat dynamics raises an important question.
- We have a player character that has no resource costs to his melee abilities, meaning players can infinitely attack.
- Enemies have hit react animations that disable any aggressive action.
Jumping Back
This is one of the most common behaviours and it is found on most feral enemies that try to overpower the player with their numbers.
Enemies are usually struck ocne or twice before they jump back, causing the player to fail their next sword swing.
Incorporeal
This defensive is less tied to active actions from the player or the enemy and more about the enemy nature and encounter space.
To be attackable, these enemies have to be inside the Yrden sign circle, so when pushing the enemy outside, the player must be on their guard.
As we can see in the video, I wasn’t.
Vanishing
Some enemies just simply disappear for a while.
- In the first example, the Wraith disappears to appear far away from the magical circle so the player has to bring it back.
- Afterwards, we have an example of the Foglet disappearing into the fog and then attempting to ambush the player.
Defender
Some bigger creatures tend to protect themselves and become immune to damage.
Both the Golem and the Cockatrice recoil, becoming immune to damage.
Flying
Flying creatures can also leave the player’s range of attacks by taking up to the skies. This is the case for boss battles like the Griffin or the Cockatrice.
In addition, there are also harpies as we can see in the video. These circle the player character from above and can even attack him.
All these require the player to bring them down with the crossbow.
Teleport
Another behaviour that I found was on Ekimaras that dodge attacks by teleporting behind the player, and quickly strike back.
Auto-Riposte
Some enemies immediately counter-attack the player on being attacked. Forgoing any hit reaction these enemies strike back. At times these attacks can be snappy and unpredictable.
I don’t want to get ahead of myself, but these can feel a bit inconsistent and unfair.
Parry
Humanoid enemies often parry player attacks and I have found two types of parry behaviours:
- Enemies that parry, but the player can just keep attacking until their defenses are broken.
- Enemies that parry and stagger the player.
Enemy Archetypes?
Could all these distinct enemy defensive behaviours be considered archetypes, shaping a challenging, memorable combat experience?
There are a couple of distinctions between them, but they don’t really differ all that much in terms of how they change the player’s approach to combat, as we will see later.
Combat Encounters Overview
In this section, I’ll make some general considerations on how the Combat Encounters work in the game.
Arena Focused Combat
Level Design
While the player roams a beautiful, fantasy-rich world, the combat itself is handled in open spaces in open spaces, with an ocasional obstacle (tree/house) that allows players to block projectiles, or attempt to channel enemies to face them in a specific order.
But overall, it doesn’t seem to have much impact in the combat encounters.
Level Design
While the player roams a beautiful, fantasy-rich world, the combat itself is handled in open spaces in open spaces, with an ocasional obstacle (tree/house) that allows players to block projectiles, or attempt to channel enemies to face them in a specific order.
But overall, it doesn’t seem to have much impact in the combat encounters.
Encounter Types
From what I have experienced there seem to be 2 major types of encounters:
- Single Attacker – usually stronger enemies.
- Multiple Attackers – enemies that hang areas in groups and then attack the player, all at the same time. Usually between 3-7 enemies.
Camera
Some games have combat managers that discourage attacks from enemies outside the camera.
It doesn’t seem to be the case here, since enemies will attack the player from any direction.
This forces the player to be on their guard and take into account their surroundings.
Attack Concurrency
In terms of concurrency – how many enemies can attack simultaneously – I was unable to pinpoint exactly if there was any system in place.
Free Attacks
At times, enemies seem to have no overarching system coordinating their actions.
- The Drowners in the video, even line up their animations perfectly. But afterwards, they attack one after the other.
- In the second example, there are two instances where the Bandits attack the player all at the same time. Firstly the player takes damage from behind and then masterfully parries all attacks.
Enemies Reacting to Attacks
When fighting humanoids, it sometimes felt like they would act more actively if one of the group was under attack by the player.
This is just an assumption, but it would make sense – as we have seen in the defensive behaviours, some humanoids parry player’s attacks but eventually get overwhelmed. Having a combat manager to tell them to attack would be a kind of group defensive behaviour.
Enemy and Combat Issues
In this section, I’ll try to expose some of the issues that I have found in combat and enemy design.
I will also try to connect these issues to one of the players’ major complaints.
🗡️Light Attack
💨Dodge
🛡️Quen
Using these three abilities is the easiest, safest way to solve all encounters. Constantly having to rely on them was unfortunate because it meant having fewer opportunities to make meaningful use of the array of diverse, potentially interesting abilities and tools Geralt has (as listed in the first section).
How Enemies Failed to Challenge the Player
Attack Patterns
There is a reason why I focused so much on melee combat in the Enemy Design Overview section – using melee attacks is mostly what all enemies do. Their attack patterns are very similar – which is also tied to the way combat encounters themselves work.
- Enemies detect the player on proximity.
- Enemies engage in combat, surrounding and circling the player.
- Enemies attack with their melee attacks on certain timers.
And this applies to 90% of combat encounters. For example, let’s take a look at these enemies:
Wild Dogs
Drowners
Ghouls
Rotfiends
Nekkers
Overall the combat dynamics are very similar. The different enemies have slightly different attack timings, ranges and unique animations, but the behaviour patterns do not differentiate sufficiently to cause a change in behaviour for the player.
Therefore, what’s the solution to handle these enemies? They are constantly attacking the player with their melee attacks, with probably no concurrency system in place to pace their attacks.
- 🗡️Light Attack → To get a few hits in, without losing too much control from animation-lock. An unexpected attack from another enemy might require quick reactions.
- 💨Dodge → To quickly move out of the way of enemy attacks that can come quickly in sequence.
- 🛡️Quen → In case the two above go wrong (and they often do). Quen becomes the final layer of protection.
Archetypes
Let’s even take a step back and try to categorize enemies into archetypes.
All enemies that I fought fall under one category of melee archetype:
- Skirmishers → like the ones in the videos above, try to surround the player and overwhelm them with Close Attacks and Lunge Attacks.
- Fighters → usually fought alone (at times with a couple of skirmisher minions). These attacked the player with Close Attacks, Lunge Attacks and Wide Sweep.
- Brutes → these usually were more dangerous and posed a bit of a challenge. Their attacks could include all types of the four melee attacks (Close Attacks, Lunge Attacks, Wide Sweep and Charge Attacks).
All these melee archetypes and corresponding attacks could best be handled by keeping Quen up,
Dodge out of their attacks and
Light Attack in between.
The fact that combat encounters were played on open arenas, also meant that the player could just keep using this strategy with virtually no downsides – for example if the Quen shield was destroyed and the player didn’t have energy yet, they could run away for a bit, waiting for the energy to regenerate.
While less frequent, additional archetypes include:
- Incorporeal → the player had to place a Yrden Sign circle on the ground to make the enemy attackable. This was actually one of the most interesting ones, as it required the player to think when to attack and use the space efficiently, as they had to keep the enemy inside the circle.
- Flying → flying enemies would swoop down on the player, so the player had to
Dodge. To take down flying enemies there was a ”Silver Bullet” (in this case it could literally be a silver bolt!) by firing the Crossbow. And then back to
Light Attack,
Dodge and
Quen.
- Shooters → these enemies launch projectiles for the player to
Dodge. If the player gets close they immediately return to their melee attack behaviours.
- Deathrattle → Rotfiends bloated and exploded on death. It was just a matter of using
Dodge, since, due to the open arena, there was plenty of space.
- Self-Healer → Some enemies had self-healing abilities. These could be countered with a Dimeterium Bomb or the player could try to just damage through the healing.
- Vanisher → The Foglet vanishes into the fog, forcing the player to watch for its reappearance and
Dodge at the right moment. According to the Witcher Wiki, other ways to reveal a Foglet include using Aard or Yrden signs, but the game never teaches these options or even hints at their possibility.
- Blinders → Blinders created effects that reduced the player’s vision.
- The Water Hag throws a mudball that blinds the player leaving a mud effect on the screen. The player just has to wait for the effect to pass. The player can also
Dodge the attack before-hand.
- The Fiend (boss) hypnotizes the player, obscuring the whole screen. It can be interrupted with a Samum bomb, signs or the player can be immune to it by drinking an appropriate potion.
- The Water Hag throws a mudball that blinds the player leaving a mud effect on the screen. The player just has to wait for the effect to pass. The player can also
- Channeler → channels an ability that damages the player. The player has to simply
Dodge out of the way.
- Summoner → summoners, call out minions during the fight. The minions are mostly skirmishers so it leads back to
Dodge,
Light Attack and
Quen.
- Mage → mages cast spells on a long range. In the case of the Leshen it was roots that sprouted from the ground (AoE attack) that could simply be
Dodged.
- Shielder → they raise their shield blocking player attacks. The player can
Dodge,
Light Attack to quickly get on their backs or use other signs like Axii to temporarly stun them.
I found that Incorporeals, Blinders, Self-Healers and Shielders brought something new to the combat dynamics and required the player to interact meaningfully with their toolkit. The rest of the archetypes mostly lead to theLight Attack,
Dodge and
Quen strategy, not creating a particularly differentiated encounter.
Below we have some examples of the Blinders:
Defensive Behaviours and Archetypes
In the Enemy Defensive Behaviours section, when describing the defensive behaviours, I mentioned that these do not really have much distinction amongst themselves, in the sense that, for the most part, they don’t provide opportunities for the player to showcase their abilities or taking meaningful decisions.
For that reason I did not include them in the Archetypes – the exceptions being: Incorporeal, Flying and Vanisher (to a certain degree) which I have described above.
As for the rest, we can rewatch some of the footage again and re-evaluate these defensive behaviours in terms of player response.
Jumping Back → The enemy jumps back but usually strikes right after. The natural player reaction is to Dodge.
Defender → After protecting against one player attack, the enemies tend to strike back leading once again to player Dodge.
Teleport → Teleporters like the Ekimara and regular Wraiths, disappear and reappear behind the player requiring them to quickly Dodge.
Auto-Riposters → This enemy behaviour is one of the main reasons why players are constantly relying on Dodge and
Quen. After taking damage they quickly riposte, with little to no telegraph.
It gets even worse when they enter the hit reaction animation and blent it with an attack animation which we will see later on.
Parry → These poor souls can do nothing against the player’s overwhelming “staminaless” Light Attacks. The fact that they are usually in groups and occasionally parry-stagger the player leads to the player using
Dodge in-between attacks.
In the end, all these defensive behaviours fit into a single archetype:
Avoider: The enemy avoids damage and then strikes back, with the player usually responding with a Dodge.
These behaviours break the pace of combat for a few moments, but are dealt with quickly and then the player is back to their routine of chaining Light Attacks.
Using Other Abilities on Enemies
Heavy Attacks
As we seen above, the animation frames of heavy attacks allowed for enemies to react in-between player strikes so Light Attacks were generally preferred.
In addition, we were just considering the player fighting one enemy. Due to the nature of encounters and the fact that enemies attack quickly and simultaneously, the player being animation-locked for ~70 frames usually meant being hit.
Bombs
Bombs have a variety of effects that can disable certain enemy behaviours or deal damage in an area. However, they have some downsides:
- Aiming Friction: The controls are not super intuitive and it is a bit hard to aim and hit the right spot.
- Enemy Mobility: Groups rarely stay clustered – as we can see in most videos above, enemies are always on the move, circling the player and attacking. Put that together with the Aiming Friction and it might just be easier to go in and
Light Attack.
- Character Vulnerability: While the player is selecting the bomb, struggling to aim, and tracking enemy movements, they will be completely vulnerable and can get hit.
Crossbow
The Crossbow is the only long range attack that the player has, but it doesn’t deal much damage. As mentioned earlier, it effectively works as a Silver Bullet against flying enemies – it brings them down, after which the player returns to the same Light Attack,
Dodge,
Quen routine.
Signs
The magic signs cast by the player all shared the same energy resource, so the player has to decide which one to cast. For the most cases, Quen is the valid choice, due to the nature of enemy relentless combat nature and the inconsistency of combat rules and lack of polish as we will see later.
Honestly, this is a pity, as the other signs create interesting combat dynamics:
- Aard → had a chance to knock down opponents, allowing the player for a quick execution.
- Igni → could ignite enemies on fire, causing them to panic.
- Yrden → was a requirement against Incorporeal enemies and could make some fights easier since it slowed down enemies.
- Axii → worked basically as a stun.
And this was just the base effects on signs. Talents created even more interesting mechanics like the Puppet talent making Axii turn enemies into allies for a brief period.
Parry
Parry works against most humanoid weapon attacks, but against creatures it is a bit unclear what it can counter.
In addition, it deals no damage, just pushes the enemy back and takes ~60 frames, during which the player can be attacked. Conversely, the player has Dodge which only takes ~40 frames, makes the player immune and moves them out of the way.
I think the choice is clear.
Enemy Combinations
Many action combat games in their open arena combat encounters, usually have a variety of enemies with different archetypes allowing the player to:
- Showcase their abilities to outsmart enemies and counter their skillsets.
- Prioritize different enemies in different combat moments.
On the other hand, games with more methodical combat systems, like Soulslikes, may also create encounters with combinations of enemies or combine enemies with the level design, aiming to create unique experiences by leveraging the spatial dimension of the game.
So, in Witcher 3, where encounters occur in open arenas, how do all of these creatures fit together in combat?
Well, they usually don’t. 90% of combat encounters contain a single type of enemy and players are mostly dealing with a single set of behaviours (even if it is across multiple enemies). Additionally, since enemy archetypes are so limited, there wouldn’t really be much point in mixing up and creating encounters with different enemy combinations.
As I referred above, summoners do summon minions but they are mostly Skirmishers, leading to Light Attack,
Dodge,
Quen.
For example, in the Werewolf encounter in the video below, the player has to deal with wolves at the same time. However, they are basically just escalations of each other.
- Wolves are Skirmishers lunging at the player with quick attacks.
- The Werewolf is a Fighter with different timings and harder hitting lunge attacks.
Despite these differences, they behave very similarly, and the player’s response is essentially the same for both.
The fact that large groups of enemies can attack the player simultaneously and relentlessly, may also discourage the creation of diversified encounters that could lead to frustration and further reinforcement of the Light Attack,
Dodge,
Quen strategy.
The lack of depth on enemy design made most of the combat encounters feel very “samey” and players could reuse the same tactics over and over to tackle them. This ultimately teaches players to constantly rely on the same strategy and miss opportunities to use other skills.
Now, the in-game beastiary menu suggests other ways of dealing with enemies like using specific signs and bombs. There are countless resources online that suggest ways of creating builds that make the combat “more fun”. However, players learn better by doing than by reading and the game does little to encourage them to experiment with Geralt’s abilities. On top of that, the Light Attack,
Dodge,
Quen approach works so well, it discourages player exploration of their own toolkit.
Yet, this is not to say that all enemies were boring and lacked challenge.
Before I started this analysis, when I thought about Witcher 3 enemies, Noonwraiths/Nightwraiths always immediately came to mind (Incorporeal archetype). The easiest/safest way to deal with them is still Light Attack and
Dodge, but now the player is also forced to use other abilities and think about the encounter space.
- Players have to cast Yrden sign to keep the enemy inside the magic circle for it to be attackable.
- It limits the gameplay, forcing the player to think when to attack and when to retreat in regards to their artificially constructed level design area.
- Attacks miss if the enemy is outside the circle.
- Attacking for too long will push the creature out of the circle allowing it to recover and strike back at the player.
In a game with combat encounters with open arenas, the fact that the player limits themself to a closed space and uses that limitation as a tool in the fight immediately makes the encounter more deep and interesting.
Inconsistent and Buggy Combat Rules
In the first three sections, I gave an overview on some of the elements that make up the combat system.
- Player’s melee attacks and abilities.
- Enemy melee combat, defensive behaviours and the combat dynamics between player and enemies.
- An overview on combat encounters.
In these, I tried to establish some rules that I perceived while playing and analyzing the combat system. These rules seem to work in theory and in most cases – through a designer/technical point of view, these rules can be dissected and understood.
However, what really matters is how these rules are perceived by the players, since ultimately they will be the judges of what makes a fun, engaging experience. Something that a designer may deem fair and understandable doesn’t necessarily translate to an enjoyable experience for the player.
And this is what this section will attempt to tackle.
Player Close Attack vs Player Lunge Attack
When attacking, players never know which attack the character performs. This is the bane of the melee combat system and one of the major problems pointed out by players.
Considering both attacks once again:
- Light Close Attack → ~38 frames (~20 frame startup + ~18 frame recovery)
- Light Lunge Attack → ~58 frames (~40 frame startup + ~18 frame recovery)
With a difference of 20 frames, which attack plays makes quite the difference as the player is animation-locked. As mentioned, the game has input queueing but no animation canceling.
But why doesn’t the player know which attack the character will perform?
Well, the input button is the same, the difference is in the distance between the player and the enemy.
- If the enemy is close, it triggers the Light Close attack.
- At a certain distance, it performs the Light Lunge Attack moving close to the enemy’s position using motion warping.
In principle, this makes sense – the player uses a different attack according to the distance to the enemy. But in reality, it’s not so clear.
From a player perspective:
- It’s impossible to know what is the exact distance between player and enemy.
- Even if players knew the exact numerical distance, it would be a bit hard to gauge it through the camera perspective.
- In the heat of the battle, with enemies surrounding and the player dealing with simultaneous, relentless attacks, it is a bit of an overload to be measuring distances.
- If the distance is a fixed value, does this mean that small numerical differences in distance can be the difference between being stuck on an animation for ~38 frames vs ~60 frames?
The apparent randomness of this system had deep repercussions in the flow of combat.
In summary, the agency of the player is removed, and it is delegated to an internal system with unpredictable results.
For example, this leads to enemies being able to catch the player in the middle of a Light Lunge Attack and hit them first.
As we can see in the video below, Geralt lunges towards the Drowner – the Drowner uses a Close-Attack, effectively hitting the player first.
This can also happen if the roles are reversed:
- If the enemy lunges and the player happens to use a Light Close Attack (since the enemy is already close), the player wins the trade.
This seems like a fair rule for both players and enemies, but in practice, it feels quite frustrating when it is the player being hit. The game does not need to be completely fair towards enemies. And of course, the fact that this decision of Lunge vs Close Attack is mostly out of players hands feels even more frustrating.
Another aspect of this system that led to inconsistencies is:
- How exactly is this distance between player and enemy measured?
When fighting humanoids or creatures with slimmer body shapes, it might seem clear when the character should use Close Attack vs Lunge Attack – keeping in mind the difficulty to perceive the distance and taking meaningful decisions as a player.
However, when fighting larger enemies, it is not as simple.
In this video, while fighting a Cockatrice, the character does a series of four Light Lunge Attacks, even though, he is right next to the creature.
❗I’m right next to the enemy, I’m pressing my Light Attack button, yet Geralt keeps spinning on its ~58 frame Light Lunge Attack. At the end, I end up being hit because of that (despite still trying to dodge).
Object Root Theory
My theory is that the range is measured between the roots of both player and enemy objects.
Yet, there are cases where the models might be close, but the distance to the actual root is long and the game detects the enemy being farther away than it actually is.
With humanoids/slender creatures this doesn’t happen as much since their root is probably close to the center of the model.
But in bears, griffins, cockatrices, wyverns and generally large enemies with large models, the root might be too far away, prompting the game to tell Geralt to close the distance with a lunge attack.
There is a reason why I placed the root on the back of the enemy in the previous image.
On the same fight with the Cockatrice when I attack it from behind it actually always uses Light Close Attacks, further reinforcing my theory.
Attack Clarity and Animation Blending
In the Enemy Design Overview section, I establish some rules about enemy melee attacks, hit reactions and general combat dynamics. These rules apply in most cases, but sometimes… they don’t really.
One of my theories is that it has to do with animation blending. Animation blending is great at making sure characters blend between animations smoothly to keep visual immersion and fidelity. In some cases, I found that they may also convey the wrong information to the player.
It does not matter if in the engine all the animation frames are being played – what matters is what players perceive on the screen. And if the players see only a portion of the startup frames of an attack, it can be a problem.
Nightwraith
For the Nightwraith, I have found some moments where the same attack is played with different perceived startup frames.
- In the first example, the enemy plays all the ~31 startup frames of the attack.
- Afterwards, the enemy seems to blend the hit reaction animation into the attack animation, with only ~31 startup frames being perceived.
Grave Hag
While fighting the Grave Hag, it also seemed to blend hit reaction into attack, with a total of ~16 startup frames perceived.
Since the enemy played the hit reaction animation, the player assumed it was safe to attack again. However it wasn’t. Again, Quen saved the player from an unexpected hit.
Water Hag
The Water Hag did something that I still can’t quite explain. It ignored the hit reaction, started an animation attack and mid-way decided to change it to another attack.
My theory is that: since it was taking burning damage, it must have triggered something to start the second attack. But obviously, the behaviour is unreliable and messes up with player expectations.
Bear
Bears had very subtle hit reaction animations so it is hard to perceive when it is actually safe to attack.
It also doesn’t help the way it ripostes with a ~12 startup frame attack, with no chance for player reaction.
❗Geralt’s words in the video represent my exact thoughts.
Bandit Axe Charge
Bandit Axe Charge attacks can also catch the player offguard.
- Sometimes, a ~15-20 startup frame attack.
- Other times, a ~8-10 startup frame attack.
While the player could see the charge incoming, it was impossible to gauge when the attack would actually hit. It becomes very unpredictable. The consequence of this was taking unintended damage or, once again, pushing players towards Dodge, instead of risking a Parry.
Sneaky Attack
About this last one, I’m again not entirely sure what went on.
- The player takes damage but it’s not easy to perceive what happened.
- Afterwards, I slowed down the video and we can see that the shirtless bandit sneakily attacks the player with a total of ~6 startup frames.
❗Even in the slowed example it is really fast. Insane!
Hit Reactions
Hit reactions should be a clear way of communicating the state of combat to the player. When enemies are hit, they generally stagger with hit reactions. Some do not, but the behaviour should be consistent enough for players to understand what they can expect and plan their approach accordingly. When players are hit, they also should stagger with hit reactions.
Right? Sometimes.
Players don’t seem to trigger hit reactions if they are in the middle of an attack and sometimes also if they are about to dodge.
- In the video below, the player loses health points in three different attacks and not a single one triggers an hit reaction.
- While fighting the Nightwraith it is specially grave, as it takes a substantial amount of health.
In a way, this may seem like it helps the player, since they are still able to land their attacks without losing control. However, it also makes the rules more arbitrary and it doesn’t give proper feedback, potentially leading the player to wrongful decisions. This has combat encounters assuming traces of “battles of attrition”, rather than responsive back-and-forth action combat.
As for the enemies, the same thing happens often.
- At times, enemies would recoil after being hit, and right afterwards they wouldn’t.
- This also semeed to be connected to enemies being in the middle of attacks.
- It also seemed to play when enemies reached certain thresholds of health or hits taken.
Nonetheless, the conclusion is that it was a bit impossible to know if the player attack was going to trigger an hit reaction or not, preventing players from being confident and take risks.
Other Aspects
Dodge vs Roll
There is a reason why I have been mentioning Dodge a lot and have barely talked about Roll.
Firstly, Dodge is faster (~40 frames) compared to roll (~60 frames). The second reason:
Dodge is more reliable and gives some invincibility frames allowing the player to completely negate attacks.
- Roll covers longer distances but doesn’t seem to give any invicibility frames. In addition to taking damage, since the character doesn’t go a into hit reaction animation, player might be unaware they were even damaged.
In this video example, the player is able to negate all Wraith attacks with Dodge. Afterwards against the Cockatrice, the character Rolls but is still hit by the wing attack.
❗If you listen to the video attentively, you’ll hear me exclaiming “what?!”, as I had no idea that I was hit and bled to death.
Execution Mechanics
When the player is executing enemies, they get locked in a long animation.
Sometimes it seems to prevent other enemies from attacking. Other times it doesn’t. Again, Quen to save the day.
Wrapping Up Inconsistencies
All the above aspects have a negative impact in combat:
- When attacking, player agency takes a hit, as they never know if the character will perform a Light Close Attack or a Light Lunge Attack.
- Enemy attacks can be unclear, their animations blend weirdly or they just play attacks arbitrarily during unexpected moments.
- Hit reaction communication is also not 100% trustworthy (both for players and enemies) and players have to expect the unexpected.
All this leads to frustration. And frustration leads to players not wanting to take risks. And so, we go back to the same consequences:
- Players don’t want to fully commit to an attack that removes control for too long →
Light Attacks in favour of Heavy Attacks.
- Players begin to expect random, arbitrary behaviours from enemies so they assume a defensive reliable posture → in between attacks, constant
Dodge.
- Players are already expecting to get hit anyway → keeping
Quen up, reducing the space to explore other signs in combat.
Lack of Polish
Even after 10 years, the combat still lacks polish when it comes to clearly communicate what is happening during combat. This is a simpler section merely listing aspects that could be improved.
❗I’m not going to include things like the HUD flashes or shaking when taking damage – my intention is not to suggest new features, but merely to point out issues on existing ones.
Hitboxes
The most obvious one are hitboxes that can be unreliable and inconsistent. The attacking weapon/limb and the hitbox at times do not align very well.
- In the first example, I’m not even sure what part of the body of the Cockatrice was supposed to hit the player (I suppose the wing).
- In the second one, the Harpy’s talons fail to reach the player.
❗Funnily enough, these examples also fail to showcase the hit reaction of the player, so attention has to be paid to the player’s health bar.
Lack of Sound Effects
At times, sound effects seem to fail to play, not conveying the proper information to the player.
- In this video example, some of the player hits produce no sound, despite visibly dealing damage (as seen in the health bar of the Griffin).
Visual Effects Lacking Clarity
Visual effects could also do with some polish to improve readability and gameplay impact.
- As the gargoyle casts its poisonous breath on the player, it’s not very clear what area it is affecting. The player just continuously backs away confused with the attack’s actual shape.
❗Another “what?!” from a confused, about to die player – me.
Invisibility Bug
The game is still not without its occasional bugs.
- In this case, the Leshen turned invisible. The Leshen has a state where it disappears when teleporting between points, which may have been the origin of this bug.
- The player is left to bindly guess what the enemy intends to do.
Animation Clarity
Finally, the enemy animations themselves could be a bit more distinctive and clear.
- In this example, the Bear hit reaction animation and the attack animation immediately after are very similar. It caught the player completely off-guard.
Final Thoughts
Despite the vast toolkit Geralt brings to the table, the challenges created by enemies do not lend much room for players to explore their own abilities. Enemies have very similar archetypes and sets of behaviours and, in combination with the nature of combat encounters, lead players to rely too much on Light Attack,
Dodge and
Quen.
The reliance on these skills is further reinforced by the inconsistency of combat rules and lack of polish in some aspects of the game. This stops players from taking risks and prevents further exploration of their other abilities’ utility in combat. Ultimately, this results in players feel safe and not wanting to leave their Light Attack,
Dodge,
Quen comfort zone.
If an enemy doesn’t exist to change how the player interacts with the game, it may as well not exist…,
…, and make sure the combat rules are clear for the player and game feel is polished!
Conversely, I found that some bosses in the main questline seemed more polished. This made their fights becomes very easy and inconsequential, since the player probably has their skills overtuned to compensate for when enemies are unpolished and inconsistent.
Thought, they still commited the sin of having similar sets of behaviours as do the rest of the enemies:
- Sets of paced melee attacks.
- To be mostly countered by
Light Attack,
Dodge and
Quen.
The combat sytem and enemy design may not have a lot of depth, have a lot of consistency and polish problems, but despite that, it still manages to get the job done. In the end, the major strength of the game is its world and lore, and the combat complements it well enough, in spite of all its issues.
I still found myself actively interacting with the potions/oils system to improve my chances of succeeding in combat. In addition, every once in a while when I felt enemies were not completely unfair to deal with, I still manage to experiment with some extra signs besides Quen.
There are a few gems in combat, so a final shoutout to the Nightwraiths and their Yrden sign circle interaction, that was pretty cool. I still felt like a Witcher, despite my many frustrations with the combat.
If by some miracle you reached the end of the article, many thanks for reading!
As a reward, click Play for 54 seconds of “LeLeLe”