2023年12月8日金曜日

 Hazard 6 and 7: A Discussion on the Meta of the Hazard File

Originally created (Dec 2020)

Updated (Oct 2021)

Summary and General Philosophy: 

This edition of Hazard 6 and 7 is a first pass at creating a difficulty to counter the power creep of DRG in line with base game difficulty scaling. The variety of builds and tools at our disposal has been continually expanding; this is not necessarily bad power creep! GSG has continued to create new content and more options for builds, but they have not kept up the difficulty to match the power boosts of perks and OCs.


This is a first pass because it primarily looks at changing the hazard file itself which is how difficulty scales. This is separate from tuning mission or creature files to balance our antagonists or the tamping down of overtuned weapons and perks which could also affect difficulty. The overall philosophy of this mod is to preserve the core mechanics of DRG while scaling up as much of the elements of difficulty in the hazard file as possible. Each element was tested independently and extensively to determine its effects and dozens of versions of both Hazard 6 and 7 were tried to find the right mix. In this document I will briefly describe each element of the hazard file in this mod and how it affects the challenge of the game to help readers understand why I made certain adjustments and not others. A full table of these variables for every hazard is listed in a separate spreadsheet. Feedback on this mod is much appreciated, my only goal here is to make DRG a better game by keeping the difficulty fresh, dynamic, and challenging. I also welcome anyone to come play with us sometime; I am always happy to teach people through these difficulties.


Scaling for 2 players: 

In the base game Hazards there is almost no scaling from one to two players. This is because you lose Bosco. As strong as Bosco is, he is better at completing objectives than killing enemies. A Hazard 6 or 7 player should be a little better than Bosco (maybe not the average Hazard 5 player though), so bumping up the challenge for two players rather than keeping it flat was a design decision I made intentionally. 


Lower Difficulty Variance: 

In the base game Hazards there is a substantial variance in the difficulty of each variable that is determined by the map seed. This is determined at the start of the mission and cannot change within the mission. (For instance Haz5 can have no vets or stationary enemies in a seed!) I do think it makes for a more interesting game if there is variance and you don’t know whether the next wave is coming in 30 seconds or 3 minutes, but unfortunately after the first wave it is set in stone and allowing it to go too low would just create a chance for the mission to be impossible or if parameters are made too high would make the mission too easy. Most people will not be playing Hazard 6 and Hazard 7 very often. It should be a special challenge you need to take seriously and get a crew together for. Given that, I would prefer that the difficulty of these modded Hazards be intense every single time. Also, frankly, it’s just easier to test things that way and I don’t want people playing two games and coming to me saying it’s not that much harder than Haz5. I tried to leave some small windows, but most variables are maxed out every game. So it is not that Haz6 is much harder than Haz4->5, it’s somewhat harder than Haz5 at its hardest. This means it is much harder on average. I am open to increasing the variance in the future, and certainly if the Devs were to implement Hazard 6 I would expect them to keep wider intervals.


Resupply and Drill Health Buffs: 

Packed with Hazard 6 and 7 are two buffs to the player. The first is that resupply cost is reduced to 60 nitra (50 for Haz7). This is primarily to prevent RNG nitra spawns from locking the team out of a resupply early on in Mining/Refining/Salvage Op missions. Significantly increased enemy diversity and wave size mean there is plenty of health to chew through and I also think the ammo meta is a little too strong. The best way to counter that is to throw in a lot of high threat enemies and increase the ammo pool so hard hitting builds are needed to counter them which is what I have done in these mods.


Doretta has received an armor buff effectively doubling her health and a 20% buff to repair speed while in combat. While players can dodge and control enemies, protecting Doretta from the numerous menaces and spitters that will spawn with higher diversity can be pretty difficult. Not to mention the threat of all those bulks. I wanted it to be possible to back off the drill temporarily and to actually make it to the Heartstone with a tread left as well as allowing clutch repairing to save the day when people are downed. I tested extensively to make sure a doretta death was still very possible but not the most common failstate which is frustrating. Doretta can still bite it for sure (that enemy count increase affects the flying rocks and I don’t include ‘babbys first boss fight with addies’ mod that lowers their health), but now you won’t have Doretta death as 95% of fail scenarios.


Some may note that I kept both the buffs similar or both Hazard 6 and 7. Part of that was certainly convenience, but also these buffs don’t necessarily make the combat too much easier; they just exist to prevent the failure scenarios of running out of ammo and Doretta dying from being too common. I want these failstates to be a threat, but not the primary one. Also, one of the primary threats to Dotty and your ammo pool is consistent enemy diversity which is substantially higher in both than the base game but not too much different from each other. 

The Hazard File

(refer to the Hazard Scaling Spreadsheet for exact numbers)


Hazard Bonus: 

This is the in-game reward multiplier. It has always been my opinion that difficulty is multiplicative. Hazard bonuses tend to increase linearly. I landed on 1.66 and 2.0 to make it parallel with Haz4->5 despite it probably being a bigger jump in difficulty than that. I am not worried about Hazard 6 and 7 being farmed; as with other Hazards your best bet is to play a hazard you can complete, and these are not designed to be easy to complete. Farming a lower hazard with weapon mods is a much faster farm.


Hazard Name: 

A fun feature of these mods is that they will show up as ‘Hazard 6/7’ in your steam and discord status. Get your friends curious. Why is it called Hurtme and Killme? Well the Hazard 5 name is ‘Lethal’ and I needed to keep the same number of characters. Those were the names of Hazard 6 and 7 that Medicknight originally came up with in early 2020 and since he taught me how to mod and helped me parse the Hazard files I kept the names as a homage to him. 


Enemy Damage:

I was wary of increasing enemy damage multipliers in Hazard 6 and 7. In the end I increased enemy damage substantially to keep changes consistent between hazards, but there is less of a jump to 6 and 7 than other hazards. Enemy DPS is increased in other ways through attack speed, projectile speed, enemy diversity, and enemy number. I also was concerned about unevenness between enemy attacks. Praetorian spray and acid spitters hit very hard as is. Menaces are killer at close range. Mactera spawns don’t need more damage. I am open to the idea that grunts and webspitters could deal more damage per hit, but that is a problem best addressed by creature balancing rather than the hazard file. 


Enemy Attack Speed:

Enemy attack speed primarily determines the animation speed of bite attacks. It was increased in both Hazard 6 and 7 and I think it makes slower enemies like Oppressors more threatening without making grunts DPS monsters. However, when testing values above 3, the first bite of Praetorian and Dreadnaught class enemies came out extremely fast which I think is counter to their role as a punishment for staying too close to a large enemy rather than something that could sneak up on you. 


Enemy Projectile Speed: 

This was increased to 1.9 for Hazard 6 and 7. Attempts to increase it past 2.0 made it almost impossible to dodge Mactera Spawn and Spitballer attacks, especially if you are not the host. I want there to be counterplay to these enemies if you are paying attention to them, and I don’t want to disadvantage players with a little ping so 1.9 is a good middle spot. This also seems to affect the fire rate of enemies as Menaces received huge DPS increases with high projectile speed making them get too much free damage if they burrowed out near you.


Enemy Movement Speed: 

This was one I wrestled with for ages. I turned it up and down, convinced that speed was critical to difficulty. Every time I played with high enemy speed I kept leaning too hard into cheese to avoid slashers. Ultimately, this modifier is 90% about grunt speed. Flying and ranged enemies aren’t really affected. Increasing Bulk Detonator and Praetorian Speed matters, but since they are much slower they are not that much faster in absolute terms. Grunts on the other hand rocket towards you then shuffle in line to find a spot for a bite. This removes time to react to an oncoming swarm in a dynamic way. Additionally, creature turn speed is not in the hazard file so at some point enemies become much faster in a straight line than they are at turning. That incentivizes players to jump over and around them to create space which is a little cheesey. I think that 1.25 is a good speed; faster than Hazard 5, but the relative pace of the combat isn’t thrown off with racecar slashers. 


Friendly Fire: 

Steady increases in line with other Hazards were in line here. The problem with Friendly Fire in DRG is less about its absolute level and more about how it works weapon to weapon. The Autocannon does zero despite having decent direct DPS with Big Bertha but the minigun shreds allies? The BC does almost nothing despite having way more damage than the PGL? The changes for Hazard 6 and 7 shouldn’t have a major impact on the way the game plays, these weapon imbalances still exist and people are familiar with them. I find advanced players tend to be good about not friendly firing so this hasn’t been a huge impact..


Environmental Damage: 

Similar to above, environmental (includes fall damage) damage was tuned up to have parallel increases with other Hazards. I didn’t increase it as much as the base game hazards did because of how it works. At a certain speed you start taking X damage, which is multiplied by this number. It was becoming a little too easy to fall just far enough to take damage and then take the entire .1 minimum health. It also makes grabbers much stronger which they don’t need to be. 


Revive Health and Max Health Regeneration: 

These are soft capped at 0.1. Beyond this amount the red overlay sits on the screen permanently. For convenience of not having to add mods that remove it, players will lose the blood outline as they regen to 0.1. Realistically, even .1 won’t save you from much.


Point Extraction Scaler: 

PE is a strange mission type. I’ve set this scaler to 20 and barely noticed the effect but, I definitely notice the difference between 0 and 1. For Hazard 6 and 7 I increased the scaler to keep it in line with increases in other Hazard files.


Enemy Count: 

This is perhaps the most sensitive dial on the board. Enemy count multiplies the point value of every spawn cohort in the game. Small changes have huge impacts, especially with wave strength getting as big as it is, small changes to the multiplier result in large absolute differences. Still, in order to make every aspect of the game more difficult this should be tweaked because not every spawn is decided by the wave size multipliers. I did extensive testing with all sorts of values for enemy count with different player amounts. These increases for Hazard 6 and 7 respectively add a lot of challenge and put the enemy number in a place I believe is appropriate. 


Normal Enemy Resistance: 

This affects the health of enemies with very specific breakpoints. Grunts, spawns, swarmers, jellies, etc. I did not increase this for Hazard 6 or 7 to preserve breakpoints in the base game that future updates or balance mods may address directly. Even Hazard 5 does not increase this from Hazard 4 for likely the same reason.


Large Enemy Resistance: 

This is medium enemy health and does affect some multi-hit breakpoints on enemies like goo Bombers, Grabbers, Menaces, etc. for hard hitting weapons like the bulldog and M1K. Pushing it too far makes medium enemies feel pretty spongey, but I think that giving them a few more hits is important to counter the extreme strength of weapons like ER Bulldog and M1k on Hazard 6 and 7 where those types of powerful disruptive enemies are much more common. Also due to power creep enemies like praetorians and goo bombers have become glass cannons and need more staying power. Another issue I encountered was that though breakable weak point enemies had their weak points scaled up proportionally, less overkill on the weak spot from the same damage weapon (which is counted by the weak point multiplier) made the health remaining after weak points were broken much higher. Every goo bomber flying around with several hundred health after both weak points are busted starts to go against the design of the enemy (not to mention bulks!) so I held back on scaling this value up as much as I would have liked. This applies to menaces, hives, and bulk detonators as well.


Extra Large Enemy Resistance: 

There are a couple different categories here which represent the health pools of Dreadnaughts, Korloks, and Bet-C. I significantly increased the health of these boss encounters because to a coordinated team they go down in seconds which is disappointing for what should be a boss fight. They certainly feel tough when you are doing all the work yourself, but several times I had to double check I had the values right because our lobbies were killing Dreadnaughts with double Hazard 5 health in under a minute. This is how it should be; bosses shouldn’t be easily soloable but a team with a plan should have no problem. Making bosses into damage sponges isn’t the most interesting way to increase difficulty, the hazard file also increases their speed, damage, and attack rate. I decided to only increase the boss health by about 50-100% with the intention to look at more interesting ways to buff the Dreadnaught in its specific creature file. The fight is still a little easy as is. 


Update: they made dreadnaughts interesting by adding variants. They are in a great place with this mod now and I don’t have to run potatolaser’s dread buff mod anymore! I recommend my ‘more rare encounters’ mod to fight more BET-Cs and Korloks.


Encounter Wave Strength: 

This governs the size of announced waves which are present in every mission type except Elimination and Salvage Operation. The wave has a set amount of cohorts that it spawns in so increasing the power of this variable will not increase the length of the wave; rather it will just spawn in more enemies at once. A particular challenge with balancing this wave is that the first wave comes very quickly on mining and refining missions where you may not have time to set up and get a resupply ready so if it is too large those missions get busted. In contrast, Egg and Point Extract missions often allow you plenty of time to set up and prepare so in an ideal world I would love to make it huge on those missions. The Hazard file should work to achieve a balance for all mission types though and I think this is a good spot.


Encounter Interval: 

This is the number of seconds between encounter waves on Mining, Refining, and Point Extract missions. Initial Hazard 6 mods turned this down to barely over a minute. This was a little too oppressive in my opinion. The counter starts ticking as soon as the last cohort has spawned so waves of praetorians that took a while to walk to you and be killed can cause waves to bleed together. This puts enormous pressure on ammo and prevents recovery if some dwarves go down or kite far away. This also starts to really discourage extracurriculars like getting minerals, completing side objectives, or doing machine events. Finally, it damages the core pacing loop of DRG which is moments of eerie serenity interspersed with pounding synth-laden chaos. Hazard 6 and 7 shorten this window to encourage speed and efficiency, and shorten it more than the gap between most normal hazards even, but there is still time to rest between the encounters.


Stationary Enemy Strength: 

This is the pool of points stationary enemies spawn from. That includes spitballers, leeches, and hives, but also roaming troops of grunts. Each mission type interacts with this point pool differently and keeping it strong really helps emphasize the differences between mission types. Salvage operations start quiet but then have a huge room full of tons of enemies that you must carefully push into. Too fast and you will be overwhelmed, too slow and you will run out of ammo because that’s where the nitra is. Egg missions are infamous for dropping you in the middle of chaos which only subsides when you clear the room. Mining missions have stationary enemies, but are much more about racing against time because of the encounter waves. I significantly increased this value because I think it adds variety to the game and forces teams to coordinate and plan their approaches rather than just rush off in their own direction. (In haz5 it can be 0 WTF) The one challenge of this variable is refining missions. The difficulty of refining missions combines being dropped into a messy room with encounter waves on a timer. If I turn down stationary strength Salvage Operation and Egg missions suffer, but if I space out the encounter waves mining and Point Extract suffer. So refining is a little rough for now; in the future I will look into the specific mission file. 


Normal Wave Strength: 

This is the pool of points the normal wave spawns from. The normal wave is present in some form on every mission type and is the unannounced cohort of enemies that spawns every few minutes. It only spawns one cohort, so increasing this number just causes all the enemies to spawn at once. I would prefer to be able to space it out a little. I increased the strength in Hazard 6 and 7 by comparable amounts to the base game Hazards. I struggled a lot with this variable because I would prefer it to do different things on different missions. On elimination missions this wave is extremely important. It’s the only consistent pressure and the main challenge of the mission is dealing with it spawning in the middle of a dreadnought fight.  On Salvage/Refining missions it certainly is a form of consistent pressure, but once the room is cleared it poses no threat and making it too large can force you out of ammo before the room is secured. It also makes mining missions run out of ammo early if you don’t get good nitra spawns. It’s in an odd place and I am open to making it stronger after the mission files have been adjusted.


Normal Wave Interval: 

This is the time in seconds between normal wave spawns. I did not reduce it much past the Hazard 5. As mentioned above I think there needs to be a decent lull between activity, and pushing into a Salvage Operation room with a huge wave spawning on you every 2 minutes gets a little crazy. I would love to reduce it on Elimination missions where it should be tough to kill the Dreadnaught in the space between waves, but the time it is at is in an alright place.


Enemy Diversity: 

This variable reduces the chance that two enemies of the same type spawn in a wave. I think keeping this high is key for difficulty. Fighting 200 grunts is mindless, easy, and makes certain weapons shine too much. I want more armored enemies like shellbacks, more long range enemies like menaces, and more tanky enemies like Goo Bombers to make camping ziplines or spamming cryo/sticky flame less effective and force you to bring a varied kit or rely on your teammates to cover your weaknesses. Even as high as it is, you will still see a (visually at least) terrifying sea of 40 veteran grunts crawling down the wall from time to time. 


Stationary Enemy Diversity: 

This variable essentially converts roaming troops of regular grunts into Spitballers and Breeders. Good. I kicked this up a ton from the base game and it really makes new rooms tough to push into. This forces planning and situational awareness. It gives the tunnels and rooms weight rather than just a long string of kiting with the flamethrower.


Grunt Veteran Percent: 

This determines how many grunts spawned will either be a slasher or a guard. This does not apply to stationary roaming grunts or the grunts spawned by wardens. Older versions of Hazard 7 had this at 100% and normal diversity which made an ocean of guards which was hard to wade through and a strain on ammo. This needs to be high because regular grunts are not challenging in the slightest. There is no meaningful challenge increase from 10 grunts to 200 grunts. Since enemy diversity is fairly high, grunts are only part of the oncoming horde and serve to provide important melee pressure on players as they juggle dealing with ranged and disabling threats. Slashers provide intense pressure and guards are pressure that isn’t so easily turned away.


Praetorian Veteran Percent: 

This determines how many praetorians spawned are converted into Oppressors. This doesn’t apply to stationary roaming praetorians spawned at the start of the level. I increased this variable the amount as the base game Hazards do for Hazard 6 and 7. I don’t feel that this variable needs to be increased significantly because Oppressors are not much more of a threat than regular praetorians. Oppressors are slow and easy to avoid. They are designed to help the horde through chokes, prevent downed players from being revived, and just slow down the combat. Having all Oppressors would make combat too slow and just be less fun. They also have some very specific counters in melee and ice so making them more numerous would also upset weapon/perk balance a little bit. 


Disruptive Enemy Pool: 

This determines the number of unique disruptive enemies in the spawn table. I set these values to allow all enemies to spawn since I think that makes the game more interesting and gives you the full haz6 experience every time.



How Spawning Works

Point Values:

Every enemy has a point value. Less for small enemies more for big. The point value for a wave comes from three places: The wave strength (in the haz file), the mission specific multiplier (in the mission file), and the overall enemy count (top of the haz file). This allows enemy count to be adjusted for different wave types and missions. I don’t know what each enemy point value is, someone would have to data mine.


Diversity, Enemy Type, and the Enemy Pool:

There are 5 enemy types: normal (grunts, pr8s, and their veteran variants), special (spitters, swarmers, mactera spawns), disruptive (bombers, grabbers, shellbacks, wardens etc.), stationary (breeders, spitballers, hives, leeches, etc) and bosses. Only the first three types can spawn in after the game has already started. There is a pool of non-normal enemies that can be spawned according to the seed. In lower hazards for instance, you may only get web spitters and swarmers in addition to the normal grunts and praetorians. On Haz5 there are 7 slots for non-normal enemies but three of them will be disruptive and the rest ‘special.’ On haz6 and 7 I unlock this limitation so all enemies can spawn. This is a bit more extreme than haz4->5 but in general the pool is increasing so it’s not a huge jump.


Spawning in Cohorts:

When a wave is about to be spawned, the point total is added up and split into cohorts. Normal unannounced waves have 1 and encounter waves (think mining mission announced waves) have 8 or so. For each cohort the seed is used to roll an enemy with the diversity variable being used to weight towards bigger enemies. Then it keeps rolling until it rolls a point value too big and it re-rolls until you exhaust the points then it spawns the cohort at once in one place. This is why grunts always seem to spawn, it’s just finishing out the point total with small point enemies. 


0 件のコメント:

コメントを投稿