I recently gave a talk at GDC Europe 2016 titled 'Creating Conflict: Combat Design for AAA Action Games', alongside fellow designers Mike Barclay and Sam Howels. The talk is available on the GDC Vault (albeit currently for members only) but I thought I would share the content of my part in an article that can be easily referenced quicker than searching through sections in a video.
I’m going to take a look at how we go about creating a level’s geometry arrangement with reference to how the environment informs the difficulty of your encounter. We know the standard and most basic way of changing difficulty is by adding and layering in different enemy types. These are macro changes; bigger increases in difficulty that make noticeable steps up for the player. But what about micro increases in difficulty, rather than just big sweeping changes? How can you balance difficulty without relying on AI numbers or character types; especially when you may be restricted to certain character types for your narrative?
This can be done by using the environment to influence the behaviour of the AI and how the player combats them. This is good for maintaining that the difficulty raises as the player’s skill level increases and allows us to closely match the challenge to the player’s skill to ensure levels don’t become stale before new character types are introduced.
This is achieved through the design mantra ‘form follows function’; that a shape of a building or an object should be primarily based upon its intended function or purpose. In our case, that a level’s arrangement of geometry needs to support and influence AI behaviour and that different arrangements inform different outcomes. In this article I will be covering:
- How an environment can be built to encourage or suppress movement, and how movement affects difficulty
- How manipulating cover can affect difficulty without artificially altering AI behaviour
- How an arena layout can affect the positioning of the enemy and what this means for challenge
Firstly, why would we want to affect the movement of enemies? Simply put ‘moving enemies are harder to hit’. In our case, it’s far easier to hit a static enemy, than one who is running around the environment. Suppressing enemy movement is useful for creating easier encounters, such as at the start of the game when the player is getting used to the game’s mechanics. Whereas allowing enemies to run around a lot means the player has a lot more of a challenge to deal with, such as if narratively you wanted the player to feel overwhelmed.
So why can we not just artificially restrict AI to stop them moving? Well it’s good not to do this so you don’t have strange behaviours that go against what the player has already learnt; it’s important not to break patterns of AI behaviours so that it’s easy for the player to read and plan against.
For example, if you created a refuge space that you populated with enemies, perhaps because they guard the exit, or you didn’t want the player to be able to leave without conflict, but they weren’t allowed to leave the area then you can risk muddying the understanding of the combat situation for the player. If the player has a ‘go there’ mechanic, like throwing a rock or other item for the enemy to investigate, or even if the NPCs investigate areas where they thought they saw an enemy, then it breaks the gameplay pattern (and the use of any mechanics themselves) if the AI don’t react accordingly.
In this situation the player can feel cheated, and in extreme edge cases you could also end up with situations where AI won’t be able to run away from grenades or other danger areas, thus breaking the illusion of artificial ‘intelligence’
So how do we restrict or promote movement by using the environment? We have to arrange the environments to support the AI classes which are being used. For example, the assault trooper in Killzone, when in a combat state, moves between cover positions and will only pick other positions that are within a maximum distance. They will also try to maintain certain distances from the player so that they can occupy a mid-range. This is because of the type of enemy class they are, compared to the short range of the shotgun trooper, or the long range of the sniper. They will only engage in melee combat if the player has closed in to within a short enough distance, otherwise they will always try and move away into mid-range cover, should there be any available. So if you wanted the enemies to be able to traverse smoothly you would position cover within their movement ranges.
If you wanted to discourage movement you would not place any cover here and the troopers would have no other choice but to occupy one area of cover. However, should the player either close in to within melee distance, or throw a grenade to move them, they will react normally and as their standard behaviour dictates, so they don’t break any behaviour patterns. Level layouts and cover arrangements will be influenced by your game’s AI metrics.
Another way to discourage movement and progression both for the player and the enemy is to use a ‘No man’s land’. This is an open area devoid of cover so it’s a dangerous place for players and the enemy to cross as they are completely open and easy targets.
This psychologically makes people refrain from moving through it until the area is clear and it’s safe to do so. In terms of AI these no man’s lands will be further away than their cover movement distances when using AI classes that use cover. It’s a way to stop the player from moving onwards through the level, without artificially restricting them or holding them back in a noticeable way. For example, in the first encounter of the opening mission of Killzone Mercenary the player’s immediate goal is the climbable pipe at the back of the arena. To stop the player from dashing on ahead I used a small no man’s land between the player’s front and an enemy front. The depth of this area was more than the distance an assault trooper would seek a new cover position within and it encouraged the player to stay at the original cover positions until the enemies were defeated. This was to ensure they were facing towards the climbable pole behind the enemy at the end of combat, which was the next part of the tutorial.
The troopers’ movement was reduced by not giving them any flanking routes, which also ensured it was an easy battle for the player to have at the start. If we provided routing and cover within the movement distances according to the metrics then this would encourage the troopers to move more (and thus be harder to hit than a static target) and they would have been able to move to more advantageous positions, where they could potentially surprise the player with an attack. If an enemy can get closer to the player then it’s assumed their accuracy and damage is increased (depending on their weapon of course).
Allowing for the enemy to flank the player is a harder case than remaining in one position. Further to this, an even harder case is allowing the enemy to ‘enfilade’ the player. Enfilade is a military term that refers to flanking an enemy so that they are positioned with no cover from the side and are thus exposed and vulnerable. If done to the player, this causes them to have to move from their current position to a safer position which they can defend from. They are often rushed into a new position that they haven’t necessarily planned out first and this scenario can be quite panicky, so coupled with receiving fire whilst exposed it makes this a very hard case. It is good to encourage the player to move though so that they don’t experience the entire combat sequence from just the one position, which come become repetitive. Reversing these roles would make it an easier case for the player in which the player has a flank route that they can enfilade the enemy from; an easy case and a satisfying one when you are able to cut down the enemy without them being able to defend themselves.
The thing to consider with cover, and one of the fundamental thoughts behind its form, is that ‘Knowledge is Power’. If you as a player know the movement and position of the enemy you have an advantage. For example, providing only low cover options allows the player to track enemies within the environment because enemies are generally fully upright when running between cover islands.
In one of the earlier sections from Gears of War, as the enemies run into the arena from the side they run behind predominantly low cover. This allows the player to track them all as they cross the area to their cover positions. The player knows where all the enemies end up and can strategise their plan of attack accordingly – Knowledge is Power.
When in low cover, enemies tend to be at a height where the player can see the top of their heads whilst they move, which means that when enemies move to a new position whilst still in cover the player is able to see and track this movement. This means the player is not caught in a situation where they don’t know the location of the enemy and thus won’t get flanked or surprised with an attack. When the player uses low cover, both in 3rd person and 1st person they can see over the top and track the enemy from a safe and, depending on how your game’s rules work, a hidden position.
Low cover is a harder case for targeting the enemy as they generally expose less of their body when they attack. Whether they peek over low cover or do blind firing or if they stand up to take a more accurate shot, they only expose half their body, as the lower half is blocked by the cover. The upside, meaning it’s not too tough to combat, is that the area that the player is targeting includes the head, which traditionally is the ‘one shot kill’ location on the target’s body.
High cover, on the other hand, doesn’t reveal any of the enemy to the player; you won’t be able to see their heads moving as the taller cover will block their entire body. This means the player either has to move to another location to get a better angle on them or wait for the enemy to expose themselves out of cover when they try to take a shot at the player. This inherently is more risky as it means the player has to risk exposing themselves to fire at the enemy whilst the enemy is firing at them. However, in comparison to low cover, when an enemy leans out from the side of the high cover, they show their full profile; or if they step out of the cover completely they reveal their full body, which is an easier case than only showing their heads. The balance here is that although the enemy is hidden when not firing, when they do attack they are fully exposed and are a larger target to attack. High cover as line-of-sight blockers are also beneficial for enemy types which don’t use cover as when they move behind it they can’t be shot at and can potentially be lost.
These considerations also go for the player as well and additionally how we can layer them together; for example, castle crenellations work by providing low cover next to high cover to create a much more protected and safe cover arrangement for the player. They neither have to step out from high cover to reveal their full body, or only have low cover which isn’t as fully protective as full cover – especially for 1st person shooters.
How much of an enemy is revealed from cover is also affected by the elevation of the player; fighting down towards an enemy will reveal more of the enemy from the height advantage, making them easier to hit. Additionally, less of the player can be hit from the enemy fighting upwards. From this elevated position the player can also see and understand more of the arena layout; if the player can see more they have a combat advantage – it’s back to ‘knowledge is power’.
One of the fundamental thoughts for enemy positioning, like an eye gouged in a fight, ‘what you can’t see, you can’t hit’. So in games losing sight of the enemy means you’re unable to shoot them and thus defeat them.
Having line-of-sight blockers in the environment not only mean it’s more effort for the player to track enemies but they can also stop enemies being tracked altogether. Enemies can get closer to the player more easily (so you’re an easier target for them to hit), or into more advantageous positions for themselves which make it tougher for the player, such as flanking.
In The Last of Us, after the hunter ambush in Pittsburgh, an enemy runs across the central view of the shop entrance from right to left. This enemy is a melee class of enemy carrying a plank of wood and attempts to get close to the player in order to attack. The tall cover on the left hand side with the car and pillars, along with the line-of-sight blockers across the windows, blocks the player from tracking this enemy, allowing him to get close to the player and flank them.
Whilst the player is occupied with shooting the enemies that they can see behind low cover, even if the player has a radar, or in this case a ‘listen’ mechanic that reveals enemies’ locations, the line of sight blockers stop the player from shooting the enemy to stop them from progressing any closer.
If lines-of-sight blockers funnel enemies into a chokepoint then this is an easy case for positioning. Imagine one corridor, even if you used the harder case of cover; the high cover mixed with the low cover for revealing the least amount of the enemy, this is an easy case in terms of ‘aim movement’. This is because the player has everything in this one window and doesn’t need to move the reticule much to defeat the enemies.
When developing Killzone Mercenary we created arenas, rather than it being a corridor shooter, so we had to consider avenues of fire. Imagine if you had a situation with split enemies so the avenues of fire were more than a screen width apart, be it because a wall (a line-of-sight blocker) in the centre splits the enemies or there are spawn points behind each of the doors (in the below example). This is much harder to tackle as the player has to divide their attention and balance their focus between two fights, allowing the ‘unseen’ enemy to do what they want, such as fire at you unhindered, or advance towards you without you knowing. They could even move position altogether so when you look back they’ve completely gone and now you’ve turned your focus away from an enemy you could see and where shooting at, to an empty space, now facing away from two enemies who can shoot at you unhindered.
Furthermore, off screen enemies are a hard case especially if they are above the player. And the hardest example? If you want to be nasty you can spawn enemies in behind the player! But do this sparingly as it can feel unfair. In summary, the further apart the avenues of fire, the greater the difficulty.
To summarise we can take a look at an example of setting up a simple combat arena with everything we’ve looked at here.
If you had a narrative where you wanted the player to hunt out a unit of enemies and get the drop on them, launching a surprise attack on them, you could incorporate these factors:
- Limit the enemies’ movement options, so they will move less and be easier to hit- Incorporate a no man’s land around the enemy area to stop them from moving - Allow the player to enfilade the enemy
- Use small avenues of fire allowing the player to track and target all the enemies without losing sight of them
- Lower enemies so the player can shoot down at the enemy and see more of them exposed
- Position line-of-sight blockers in favour of the player to allow the player to ‘disappear’ and break lines of sight from the enemy
- Include only one spawn point at the back (in the field of view) where enemies can be tracked entering the environment
And what’s great about this is that whatever you do to make it easy for the player you can then invert to make it difficult for the player. For example a hard case would be:
- Having many movement options for the enemy, making them harder to hit
- Using a no man’s land around the player, discouraging them from moving
- Allowing the enemy to enfilade the player, forcing them out into this no man’s land
- Having multiple spawn points for the enemy on opposite sides of the map, off screen from each other
- Having multiple avenues of fire which means the player has to balance many focus points
- Giving the enemy the height advantage on the player
- Positioning line-of-sight blockers to break lines of sight to the enemy, allowing them to be lost