Darktide 101: Enemy Design and Prototyping - Dev Blog

Warhammer 40,000: Darktide

Take back the city of Tertium from hordes of bloodthirsty foes in this intense and brutal action shooter. Warhammer 40,000: Darktide is the new co-op focused experience from the award-winning team behind the Vermintide series. As Tertium falls, Rejects Will Rise.

[img]{STEAM_CLAN_IMAGE}/38365286/4a6e15e4fbdad9ffa5ae9e29d97247efc4469b6f.jpg[/img] [h1]Hello Rejects! [/h1] My name is Daniel, and I’m a Programmer and Designer at Fatshark. This blog covers parts of our journey in creating enemies for Darktide. Over the years, I’ve gathered many clips and screenshots and wanted to share some of the early development stages and explain our thought processes. Keep in mind that many of these clips and screenshots feature temporary assets (sorry artists!) since they were created early in the project to test gameplay mechanics. For Darktide, the Combat team used a very iterative approach. We identified the most important features to include, made functional prototypes, tested them in co-op, found problems, and made adjustments to improve the feel. We repeated this process many times. Our core goals for Darktide combat were replayability and co-op. We believe these are best achieved with highly polished moment-to-moment combat and unique (and sometimes funny) scenarios to experience with friends or random players. [h2]Roamer Enemies (Normal and Elite Enemies)[/h2] To help decide what types of enemies we wanted in Darktide, we first created a combat prototype in Vermintide 2. We did this because we wanted Darktide to have similar combat to Vermintide, and it was easier to test concepts since Darktide had very few assets (models, animations, sounds, effects, etc.) at that point. Our main objectives for the combat prototype were to evaluate: [olist] [*] [b]Melee/Ranged Combat Hybrid:[/b] How does Vermintide’s usually melee-focused combat work with a greater focus on ranged combat? How do we ensure melee stays important? [*] [b]Ranged Enemy Positioning:[/b] With ranged combat, our enemies need ways to position themselves. What kind of positioning systems should we implement? [*] [b]Ranged Enemy Types:[/b] What ranged enemy types should exist? For example, Vermintide 2 has horde enemies, roamer enemies, high damage elites, fast-attacking berserker elites, and shielded elites. What types should we have for ranged combat? [/olist] First, we gave a Chaos Marauder enemy in Vermintide 2 a gun and made it shoot at players. We chose these enemies because we planned to make humanoid enemies in Darktide. Their similar skeletons meant we could reuse many of the assets, making it easier for us to use them in the final game. Then, we wanted to position enemies in the world in a way that made sense for tactical units using ranged weapons. In Vermintide, most enemies use a “Slot System,” which moves enemies to slots around players to space them out, simulate collision, and help with performance. Here are 2 clips of slot system functionality OFF and ON in Vermintide 2: https://youtu.be/L3v4jsX32TU This system wouldn’t work for enemies that don’t aim to engage in melee combat. So, we created two new systems that work together: [olist] [*] [b]Cover System:[/b] Like in many shooter games, enemies use cover to position themselves. This system guides enemy movement, causes enemies to interact with the environment, and helps level designers create interesting scenarios. [*] [b]Combat Vector System:[/b] This system calculates positions between players and groups of enemies to simulate a "direction of combat”. It prevents enemies from firing at players from all angles. This is the fallback system when no cover is available. [/olist] Here’s a later version of these systems in action: https://youtu.be/9IlEK6V_vlw For the cover system, we first made simple boxes and walls of different sizes, added nodes, and calculated cover positions. Enemies then picked the closest unoccupied cover with a position opposite the player. https://youtu.be/q-SyoPZRDAk Next, we added animations and logic for enemies to peek, aim, and shoot from cover. https://youtu.be/tgP8UE4ByLk As you can see, the animations are static, don’t line up well, and the enemies look confused. However, it was a good early test to see what behaviors and animations we needed. We noticed early on that ranged enemies needed different behavior when players got close because it wasn’t fun to be shot at from close range. So, we developed the concept of “Combat Ranges,” where enemies change behavior based on their distance from the player and the player’s weapon. We gave marauders melee weapons to switch to if players got too close. When switching to melee, they behaved like regular melee enemies. This created a fun hybrid combat loop, where players could shoot enemies at range or charge into cover to force them into melee combat, using mechanics like environmental line-of-sight blocking, dodging, and sprinting to minimize damage. This led us to implement mechanics like sprinting and sliding. We also designed enemies that are extremes of this concept, like the Gunner, who has a powerful ranged attack and doesn’t switch to melee, making it a prime target for high-damage ranged weapons. We also have Shotgunner/Assaulter enemies that try to get close to players without engaging in melee to force them out of cover. The first prototype of Assaulter enemies was a Chaos Warrior with a plasma gun. He slowly walks up, shoots a plasma shot, and switches to a two-handed melee weapon when close. https://youtu.be/mSG9V4wFlxQ With many enemies taking cover and hybrid combat being a core feature, we wanted to test mechanics allowing ranged weapons to interact with cover. One idea was Suppression, where high fire rate and sustained fire weapons could flush out enemies from cover even if the shots missed. We tested a mechanic where shooting close to the target would make them stop shooting and take cover for a moment. https://youtu.be/aXnFRSGtTZI Here is a clip showing the above features in the Vermintide 2 prototype. We also got help from level designers to create whitebox levels with covers and layouts suited for ranged combat. It also includes a prototype of the Sniper specialist (later added). https://youtu.be/9IlEK6V_vlw In the end, the core roamer population was divided into three categories:[list] [*] [b]Melee/Fighters:[/b] [list][*] Rush into melee, forcing players to kill them quickly or switch to melee combat.[/list][*] [b]Close/Assaulters:[/b] [list][*] Prefer to stay close to players (8-12 meters) and use fast-firing or hard-hitting weapons.[/list][*] [b]Far/Riflemen:[/b] [list][*] Stay at a distance, use cover, and take potshots at players. They are generally more defensive and force players to engage with them.[/list][/list]After finishing the prototype in Vermintide 2, we implemented it in the new Darktide project. The assets look more temporary here since we’re not reusing as many Vermintide 2 assets, and many mechanics are missing. Here’s a clip of the first implementation of cover users in Darktide: https://youtu.be/XXHafbMOMcU [h1]Horde Enemies[/h1] An important element in all -tide games is the Horde enemies. They are designed to be numerous, varied, and fun to kill in masses. For Darktide, our main Horde enemies are humanoids, with two variants: Poxwalkers and the Newly Infected. Here’s a clip of the first implementation of Poxwalkers (with non-functional ragdoll physics): https://youtu.be/3HZL4rwNOVY We wanted our horde enemies to vault over cover since levels would be filled with covers, and we wanted hordes to feel like a wave rather than individual enemies. Here’s a clip of one of the first implementations of cover vaulting: https://youtu.be/Xw3bBsf7uCg Another aspect we wanted to improve with the hordes in Darktide is their navigation avoidance at longer distances. Avoidance means enemies try to avoid walking the same path as others. This is more noticeable in our games at longer distances due to the slot system spreading out enemies when they get close. Here’s a before/after clip of improved avoidance for Poxwalkers: https://youtu.be/oHmswSJzw2A [h2]Specialist Enemies[/h2] Specialist enemies in Darktide (and Vermintide) can be categorized into two groups:[list][*] [b]Disablers:[/b] [list][*] These enemies try to disable one player, forcing others to respond. Examples include Pox Hound and Scab Trapper.[/list][*][b] Scramblers:[/b] [list][*] These enemies use mechanics to force players to split up or create chaos to disorient them. Examples include Bombers, Poxburster, Flamers, Snipers, and Mutants.[/list][/list] It’s crucial that specialist enemies have clear audio and visual cues. Their behavior should be simple so they are easily understood in chaotic situations. An important skill in our games is target prioritization, where players must quickly decide which targets to focus on while up to 200 entities are on screen and three other players are doing the same. Specialists play a key role because their impactful attacks can end a match if left unchecked. We also allow players to “clutch” against all specials, meaning a single player can handle these threats alone if they take the right actions. Examples of handling a specialist individually would be pushing a Pox Hound/Poxburster, or dodging a Trapper net/Sniper shot/Charging Mutant. While this might seem against the idea of co-op, we found through playtests that the ability to clutch is crucial for individual skill expression, and skill expression is important in a multiplayer game. Not allowing a single player to survive alone would also result in a more toxic gameplay loop where players would give up as soon as other players were downed. It also simply feels rewarding to save the day and revive fallen team members. Following are some examples of the specialists we created and how they looked at different times during the project. [h3]Pox Hound:[/h3] The first special we added was the Pox hound. We chose the Pox hound because we knew that we needed a fast moving disabler enemy, and it was similar in frame/pose to the Gutter Runner from Vermintide, meaning we could build similar gameplay and be sure that it would work. First step was to make it pounce on the players. Then, it needed animations and logic to handle its faster speed. We added turning animations (blended animations to simulate momentum etc.), running staggers (staggers that continue forward instead of stop) to help with this. Finally, we polished some of the landing and turning animations. The hound has had some issues with becoming a rocket dog, which was related to how we calculated the trajectories for the pounce, but that has mostly been fixed as of now! [h3]Mutant:[/h3] One of the new Specialists in the -tide series is the Mutant, inspired by the Left 4 Dead charger. We designed it to be more of a scrambler than a disabler. Its role is to charge a player, grab them, deal damage, and then throw them unpredictably to create chaos. We found it needed more health to fulfill its role, making it tankier than usual specialists and a target for high-damage weapons. Here’s a clip of the first prototypes, using a Chaos Ogryn model and temporary animations to test the mechanics. Once we had the Mutant model, we experimented with its animations. We realized that getting charged constantly got too tiring, so we added pauses after he threw a player, and an extra long opening when players succeeded with dodging. https://youtu.be/ZMyj86_ZWW8 The animations, sounds, and visual effects were polished later to create the final version of the Mutant we have today. [h3]Poxburster:[/h3] Another specialist that got added was the Poxburster. We wanted the Poxburster to be a simple Scrambler that explodes when close or on death. Initially, it was supposed to be solely a high priority ranged target that didn’t have any counterplay when it entered melee range. Starting off, we put a barrel on a Poxwalker and made it explode when close. Later, we added model/animations/vfx/sfx. We realized that players got annoyed by it in close quarters however, so we experimented with ways to deal with it in melee. In the end, we added the “fuse” followed by a window to stagger it in order for a well timed push/dodge backwards to avoid all damage. This turned out to be a fun alternative to kill it. https://youtu.be/tJkZqOSIQyQ [h2]Conclusion[/h2] In conclusion, creating enemies for Darktide has been a detailed and iterative process aimed at making the gameplay exciting and varied. From early tests in Vermintide 2 to the final versions in Darktide, we continuously tested and improved on features. Our focus was on making both melee and ranged combat fun and challenging. We developed different types of enemies, from hordes that swarm and overwhelm to roamers that add variety and strategy. Specialist enemies further add strategy, requiring players to quickly decide which threats to focus on first. Our goal was to build a co-op experience that players will want to return to again and again. Thanks for reading! [img]{STEAM_CLAN_IMAGE}/38365286/a65c70af1027202631df9d22270d8a366b72f32d.png[/img]