The fifth wave consists only of Nemacysts and a single Brumak. The Brumak will approach the fortress's northern wall and shoot at the player with turrets and rocket barrages that home in on its target. The Brumak can only be destroyed by taking out both of its arm guns and then the driver mounted on its back.
The fourth wave is the largest of the five, consisting of dozens of Drones and Nemacysts. Two mobile troikas also enter the fray, which are troika turrets mounted upon moving vehicles and manned by Drone gunners. The mobile troikas will stop within firing range of the fortress and open fire on the northern wall to suppress the player, while the rest of the Drones attack the gates. To stop them, the player must take out the gunner operating each turret.
The third wave introduces two more types of enemies to the assault, in addition to more Drones and Drone Grenadiers. The first of these are Boomers, the heavy artillery of the Locust Horde. There are only a few of these, but they can deal massive damage to the gates with their boomshot explosives and are tough to take down. Boomers also occasionally fire at the ramparts, making them a direct threat to the player as well as to the gates. This wave also introduces Nemacysts, which approach from the mountains and fly over the fortress walls to hit the player directly, exploding on impact.
"Last Stand" is a 3rd Person castle-defense level designed in the Gears of War editor. The player must defend a fortress against 5 waves of many different enemy types to emerge victorious. The fortress has a destructible outer and inner door standing between the player and the enemy. If the Locusts are successful in destroying both doors, they will gain access to the fortress ramparts, where they can overwhelm Marcus and his squad. The player has access to a wide variety of weapons to defend the fortress, most of which have been modified and re-balanced for the level, which is a bit different than traditional Gears of War gameplay. The player wins by defeating all five enemy waves without being overrun.
The ramparts is where the player spends the majority of the level doing combat, specifically the northern wall facing the oncoming hordes. Many different weapons are available along the ramparts for the player to pick up, as well as two troika turrets stationed on the northern wall. If enemies break through the first gate (D1), the player can fire down upon enemies as they enter the courtyard. There are also four squad members (two archers and two snipers) that will assist in defending the fortress from the ramparts.
The second wave ramps up the difficulty once the player has a basic understanding of how the level works. More Drones and Drone Grenadiers approach the fortress in this wave, but this time they are accompanied by a suicide squad of Lambent Wretches. These enemies only have one objective, to get within melee range of the fortress gates andexplode. Their explosions cause heavy damage to the gates in addition to killing themselves in the process. Drone snipers emerge from the mountains and open fire upon the player and the squad. They are no threat to the gates, but they can be a direct threat to the player if left alone.
If the Locusts make it through the second gate (D2), they must go through the fortress interior to reach the doors leading to the ramparts. The player can engage intruding enemies in this area from the stairs, or even on the bottom floor. However, leaving the fortress will result in the player being quickly devoured by Kryll swarms waiting to catch its prey in the dark.
Re-balancing weapons and AI to function for this castle defense style of gameplay required Kismet scripting that accesses each object's properties and updates them through console commands. As useful as this method was for the project, it had its quirks. For instance, an object's properties can only be changed if it is currently present in the level. If the player drops a torque bow to equip another weapon, another torque bow spawns in its place, meaning that the console command must fire again to apply the desired changes to the new object. To address this, each console command is periodically fired every 3 seconds to make sure that as objects continue to spawn into the level, they are updated accordingly. These console commands apply to various different properties, such as specific enemy weapon fire rates, projectile explosion radius, AI accuracy cones, weapon damage, and screen shake adjustments.
A few of the Kismet scripts that made this level work can be found below. These scripts include weapon modifications, enemy AI scripting, fortress gate functionality, and troika overheating.
Each individual unit spawned needs its own unique script telling it where to go and what to do under which conditions. This can get time-consuming very quickly with dozens of enemies to manage. To quicken the workflow, I created a sequence for each enemy type that contained all the instructions each enemy would have in common, and then outputted to external variables that would change from one unit to the next. This made it much easier to create more enemies of the same type, as I just needed to switch out a death variable, where the enemy spawned and which location the enemy should run to before stopping to fire at the gates.
Each AI script spawns an enemy, tells that unit to go to a specific location in front of the outer gate, checks the state of the outer gate, and then orders the unit to perform a certain action if the gate is still standing or tells it to proceed into the courtyard to check the inner gate's state if the outer gate is destroyed. For Drones, that action is to simply shoot at the gate. For Lambent Wretches, it is to get right next to the gate, and when they reach that destination, the wretch takes a lethal amount of damage, causing it to die and explode. If a unit finds that both gates have been destroyed, it is left to its default AI, which is to find and kill the player.
The Brumak behaves a bit differently than the other AI, as it is more interested in attacking the player than breaking down the gates. The script periodically orders it to go to a specific location in front of the fortress so that it strafes around in front of the fortress while shooting at the player. Each time the player destroys one of its arms, it updates an objective. Once both arms are destroyed, the driver becomes vulnerable. When the player kills the driver, the Brumak takes a lethal amount of damage and immediately goes to a matinee cut-scene of its death animation.
The fortress gates are the centerpieces of the level's design, and it was important to make sure they worked properly with AI decision-making and checkpoints, and that they effectively communicated their current status to the player at all times. Each time a gate takes damage, a damage threshold is checked that represents the gate's max health. If it reaches that threshold, the script destroys the gate. There are also several "mini-thresholds" that change the state of the door every for every 20% damage the gate takes. So if a gate takes 20% of its health in damage, an objective and point of interest update to communicate that the gate is at 80% durability, and a red point light in the same lighting channel as the gate switches on to indicate that the gate is getting weaker. Each time one of these thresholds is reached, it updates a variable that keeps track of the state of the gates. If the player dies and loads a checkpoint, the game will remember the last state of the gates when the player activated the checkpoint and return the gates to that state. These states are also used to tell the AI what to do - if the first gate is down, they should pass through it and attack the second one, and if that one is down, they should enter the fortress and attack the player.
Another problem was that explosive attacks did not deal enough damage to the doors to pose any real threat. To address this, I scripted the door to detect if it took a minimum of at least 99 damage in one hit, and if it did, to deal another 1000 damage to it, amounting to 1099 total damage. This made explosive attacks over ten times more effective against the gates, encouraging the player to prioritize taking out explosive units over Drones.
The greatest challenge I encountered during the creation of "Last Stand" was getting all the AI to act in a coordinated manner and complete custom objectives. By default, most AI in Gears of War prioritize killing the player as their one and only objective. In this level, there are many enemies, and getting each one to follow a specific set of instructions was a time-consuming process. I was able to speed up the workflow by creating a Kismet sequence for each enemy type that contained all the scripting that each individual enemy would have in common. Then, I made external variable connections to those sequences for variables that would change from one enemy to another. This allowed me to reuse the same scripting that the enemies shared easily, while allowing me to quickly switch out the external variables that would differ from one unit to the next.
Another challenge was being able to create the atmosphere that I wanted for the level without making it too difficult for players to see their foes. The level takes place on a dark and rainy night in a very large space, and the player has to be able to detect enemies through the rain way out in the distance. To address this, I used many different lighting channels to make the more important things stand out without having to change the visual aesthetic too much. For instance, I created one sky light that only affected objects in the Composite Dynamic channel, which essentially includes all AI units. This made enemies stand out in the darkness without making them seem artificial, allowing the player to pick them out of their surroundings more easily.
The first wave introduces the player to two basic enemy types, regular Drones and Drone Grenadiers. Their primary objective is to get within firing range of the fortress and shoot the gates down. Their damage output is relatively light, but enough of them left undealt with can take the gates down, given enough time.
I designed the troika overheat mechanic to address balance issues with the troikas stationed on the northern fortress wall. Troikas are generally more powerful than other equippable weapons, and even if they aren't optimal in all situations, players tend to want to stay on them and not do anything else, which quickly becomes a monotonous task. The troika overheat mechanic functions by first detecting if the player is on the troika. If so, it checks to see if the left mouse button is being pressed to see if the player is firing the weapon. As long as the player is firing the weapon, a timer starts counting. If the player stops firing the weapon, the timer pauses, and only resumes once the player starts firing again. If the player dismounts the troika, the timer resets. If the timer counts to 8 seconds, the player is kicked off of the troika, and a visual effect activates on the troika for a cool-down period of 6 seconds until the troika is no longer overheating and ready again for use. It was necessary to set the troika's warm-up time to 0 before kicking the player off, so that if the player tries to get back on the troika during the cool-down period, it won't work. This system encourages the player to switch between the troikas and other weapons for optimal results.