This mod allows all NPCs to stay as active as the game specs require. It also adds a large amount of fixes and code optimizations. It does NOT increase spawn rate or amount.
First, let's define what is the normal behaviour of a cop as it's a really important notion to understand how FSS may affect difficulty, depending on the hardware you use.
Imagine there are only you and one unique cop all over the map. In this situation, that cop is always performing at his maximum level of planned efficiency (all reaction delays and check intervals specified by OVERKILL are respected). I consider this as the reference of what OVERKILL designed and wanted in terms of difficulty.
Before Update 173, task throughput was equal to host's frame rate; it is now set to 60 tasks per second. Above a particular number, more cops means more gap between specified delays/intervals and what really happens.
With a throughput too low, AI's eyes aren't refreshed fast enough, an unwanted delay is introduced in step 1 and their reflexes get degraded.
This is where Full Speed Swarm comes into play: it lets the game execute as many tasks as required. So even with 100 cops on the map, they all perform as well as if they were alone.
With this point in mind, you can now understand that Full Speed Swarm does not add difficulty, it just helps to reach what was originally designed.
No. Knowing that executing more tasks increases CPU workload, I've optimized a lot of things (unchanged behaviour, faster process) to the point that frame rate even goes up when Lua is the bottleneck (though most often, it's engine or GPU). In case it still makes too much of a difference regarding difficulty, you can adjust the maximum tasks throughput in the options menu.
Let's compare 3 playthroughs (heist is Boiling Point on DW difficulty, with 1 player, 3 bots and 2 jokers).
You can test what you get on your own hardware, here is the tool I've made to generate graphs.
Cops use different types of approach, attack much more on your flanks and other things. is required for this feature to work well.
A spawn kill executed at close range of related point delays its next spawn. It's meant to prevent excessive enemy flood when you're sitting on a spawn point.
Enemies' reactions escalate faster. It can be summed up by: aim less, shoot more!
Apply 's path extender to all cops, making them reach players faster.
Enhance the difficulty by removing several delays punctuating cops' behaviour. Cops won't run faster, they won't deal more damage, they'll just wait less between each of their actions.
Make cops to face their enemies and shoot more at them while they move (their firing range is not affected by movement anymore).
It defines the maximum amount of tasks executed per second. Tasks going through this manage NPC vision, spawn, corpse removal, etc. Most tasks have a predefined time of execution but if throughput is too low, they get delayed as previously shown in performance graph.
There are only 2 outcomes possible: delayed or normal. It never goes beyond what specifications have stated. A value too high is useless and a value too low introduces delay.
For example, if there are 20 cops requiring 10 refreshes per second, they need 200 tasks/sec. So in this situation, their performance will be:
Setting this option to very high will override the LOD value, making sure a visible character is moved at least once every 2 frames. Ultra does the same except visible characters are moved at every frame. This option is more effective when frame rate is low.
On top of better performances of code handling inputs, it also helps to get the best out of single fire weapons having a high fire rate.
On my way to optimize whatever I could, I've added to some of the rewritten functions a few off-topic things, including numerous bug fixes.
It fixes all cases of the no-despawn bug for local player (when it happens, all corpses and smokes stay forever). And if you're the host, vanilla clients should be protected too.
Friendly AI don't shoot at cops that players are trying to intimidate.
During stealth, the maximum interval between 2 sight refreshes is set to a significantly shorter value to prevent civilians starting to notice a player very quickly after he already got too close.
As I wasn't happy with the original implementation, I've replaced this library by one with, on top of being faster, a functional Remove() method and that supports for repetitive calls.
It's the tool that gives animation priority to characters in the center of your screen. If there are too many cops, the original updater can't process it all in time and the cops you are focusing on look very laggy. Instead of always processing 1 character per frame, the new system does 1 per group of 25 per frame, giving a much smoother result with very high number of cops.
It will show the real duration of this effect. So if you like to play with perks Muscle or Sociopath, you'll get better feedback!
A mutator inspired by GoonMod's Excessive Force. The original one spawns more than 2000 cops but no hardware can handle so many. Here you can define approximatively how many cops you will fight by setting its parameter.
It drastically decreases maximum number of cops, activates all FSS's gameplay changing options and removes grace period for players. Also, maximum stamina depends on your amount of lives, like a wound that slows you down. This mutator requires to work.
Designed for stealth, it forces NPCs to run. Always. This mutator requires to work.