Jump to content

Spawn System: Difference between revisions

From WarhammerWorkshop
HAPPYMAN5 (talk | contribs)
No edit summary
 
Line 1: Line 1:
== The Enemy Spawn Director ==
= The Enemy Spawn Director =
'''The Enemy Spawn Director (ESD)''' monitors players through a mission, and decides what to spawn, where, and how much based on how well the player is doing. The ESD knows how well a player is doing based on '''''Stress Levels'''''. It makes changes to the amount of enemies that are spawning to try to ensure that you are under a constant and continuous amount of '''''Pressure.''''' By keeping your Pressure Level consistent throughout a mission, the ESD insures that there are never too little enemies and never to many enemies. For a more in depth guide on how the ESD works see [[Spawn System Info]].


== What files contribute to the ESD? ==
The '''Enemy Spawn Director (ESD)''' monitors players throughout a mission and dynamically adjusts enemy spawns, locations, and numbers based on player performance. 
There are many files that contribute to making things all flow and work nicely, but the two most important files that actively control the spawning of enemies, are the '''esd_manager.sso''' and the '''esd_factions_and_compositions_library.sso''' files. Both of these files at their core control what enemies spawn, and how many of them spawn.  
The ESD uses a system of '''''Stress Levels''''' and '''''Pressure''''' to regulate intensity, ensuring gameplay remains challenging without overwhelming players.


== ESD_Manager.sso ==
For a detailed guide on spawn systems, see [[Spawn System Info]].
The ESD Manager file controls what spawns during the  [http://www.warhammerworkshop.com/index.php/Spawn_System_Info#Wave_Phase Wave Phase] of the Spawn Cycle. It also determines the length of each Phase, and controls [http://www.warhammerworkshop.com/index.php/Spawn_System_Info Pressure and Stress.] Enemies spawned through the ESD Manager will always spawn aggressive unless specified otherwise. Lots of information can be found edited using this file. It is located in '''''"server_pc\root\paks\server\default\default_other.pak\ssl\spawn_system\enemy_spawn_director."'''''
[[File:Phase Lenth.png|thumb|460x460px|Screenshot of the Wave Settings inside the ESD Manager]]


=== Phase Length Settings ===
= Key Files Controlling the ESD =
The ESD Manager controls the lengths of each Phase of the '''Spawn Cycle'''. There are three options that get selected based on Stress Levels '''SHORT''' '''NORMAL''' and '''LONG.''' For example if your Stress Levels are high, ''Wave Phases'' will last a shorter amount of time, and Breather and Tension Phases will last longer. All time values are in Seconds.
[[File:Pressure Settings.png|left|thumb|254x254px|Screen shot of the Pressure values for the Special Enemies in the ESD Manager]]


=== Pressure Settings ===
Many files contribute to enemy spawning, but the two primary files are:
Enemies spawn if the ''Pressure'' value is at or above a certain number. This is the First failsafe to stop all of the available enemies from spawning all at once and overwhelming the player. For enemies spawned from the ESD Manager, their base pressure settings are all set to 100. So They will not start spawning until you and your squad have been under enough Pressure from the Tension Phase to have a Pressure Score of 100 or over. Changing these values will change when the ESD Manager starts spawning enemies.


* '''esd_manager.sso'''
* '''esd_factions_and_compositions_library.sso'''


Both files control what enemies spawn, how many spawn, and under what conditions.


[[File:ESD Manager Spawn Pack.png|thumb|Screenshot of a simplified ESD Manager Spawn Pack]]
= esd_manager.sso =


The '''ESD Manager''' controls spawns during the [https://warhammerworkshop.com/index.php/Spawn_System_Info#Wave_Phase Wave Phase] of the spawn cycle, adjusting spawn rates and enemy types based on player Stress and Pressure values.


=== Enemy Spawn Packs ===
Location:
'''Enemy Spawn packs to not get Names'''
<code>server_pc\root\paks\server\default\default_other.pak\ssl\spawn_system\enemy_spawn_director\esd_manager.sso</code>


Each entry for an enemy is called an '''Enemy Spawn Pack.''' Each pack has an '''''isEnabled''''' variable, which tells the ESD whether or not to chose the Pack in the Spawning Process, this variable can be set to '''True or False.''' 
[[File:Phase_Lenth.png|thumb|460px|Wave Phase settings inside the ESD Manager]]


The amount that each enemy will spawn in can be specified using the '''minCount maxCount''' or '''Amount'''variables, or if not specified will spawn the default number assigned to the enemy type in the archetypes_library.sso.
== Phase Length Settings ==


The type of enemy that initially spawns is determined by the input into the '''''archetypeUid''''' space. ''It is important to note that this only guarantees that a specific enemy type spawns when the pack is picked, it is not the only way that type of enemy can be spawned.''
* Phases are categorized into '''SHORT''', '''NORMAL''', and '''LONG''' lengths based on Stress Level.
* High Stress reduces Wave Phase time, while extending Breather/Tension phases.
* All phase durations are measured in seconds.


Each Enemy Spawn Pack can be set to a specific '''Combat Type'''. This determines what kind of combat enemies spawned through the ESD Manager will prioritize. Options include: ANY, RANGED, MELEE.
== Pressure Settings ==


Each Enemy Spawn Pack has a '''cooldown range'''. When a Pack is selected, a number within the cooldown range is selected randomly. The Pack is then disabled until the cooldown has finished. This cooldown is in place so that you will theoretically not get the same Extremis Spawn 10 times in a row.
* Spawns only occur once the player's '''Pressure Score''' exceeds a threshold.
* Example:
** Standard spawn activation threshold: '''100 Pressure'''.


=== Extra Pack Variants ===
Tuning these values modifies when and how enemy spawns escalate.
Extra Pack Variants are what allow a Lictor to spawn accompanied by a Warrior and a pack of Hormagaunts. Having multiple allows the game to have more variety and keep stop players from knowing what is going to spawn. It helps create that dynamic feeling the ESD is famous for.


When an Enemy Spawn Pack is selected by the ESD Manager, it has the option to spawn with additional enemies. The way it knows what extra enemies are available is by searching the '''extraPackVariants''' section of a Spawn Pack. On the right you can see the spawn pack consists of '''"FactionPackVariants"''' that have '''"subPackDescs"''' inside of a '''"subPackDescDict"'''.
[[File:Pressure_Settings.png|left|thumb|254px|Pressure settings for special enemies]]


These ''FactionPackVariants'' can be named anything as long as they do not contain any spaces or special characters excepting Underscores. The S''ubPackDescs'' and ''subPackDescDict'' also follow the same naming principles. It is very important that two or more FactionPackVariants cannot have the same name inside of a Spawn Pack, and that two or more SubPackDescs cannot share the same name withing a FactionPackVariant.
== Enemy Spawn Packs ==


These Extra Pack Variants contain an '''archetypeUid''' space just like the main Spawn Pack, and the amount of an enemy type can be specified, or left blank to use the default number specified in archetypes_library.
Each spawn entry is called an '''Enemy Spawn Pack''' and contains:


Each Extra Pack Variant has an '''excludedDifficultyLevels''' variable. As you can see on the right, you can disable an Extra Pack Variant on any difficulty 0-5. 0 being Minimal, and 5 Being Absolute. Excluding an extra Pack Variant from a difficulty will disable it from being selected when playing on that difficulty. Modifying this section gives you full control over what is spawning on every difficulty level.
* '''isEnabled''': (''True''/''False'') flag to toggle the spawn.
* '''minCount''', '''maxCount''', or '''amount''': control how many enemies spawn.
* '''archetypeUid''': defines which enemy type spawns.
* '''combatType''': (''ANY'', ''RANGED'', ''MELEE'') priority setting.
* '''cooldown range''': sets minimum/maximum time before the spawn can reoccur.


== How Enemies Are Selected In the ESD Manager ==
[[File:ESD_Manager_Spawn_Pack.png|thumb|Screenshot of a Spawn Pack setup]]
Spawning is based entirely on [[wikipedia:Random_number_generation|Random Number Generation (RNG).]]
[[File:Image.png|left|thumb|499x499px]]


=== Spawn Cooldowns ===
== Extra Pack Variants ==
The ESD isn't just in a constant state of picking Spawn Packs, otherwise everything would spawn all at once. '''Spawn cooldowns''' are in place to stop this from happening. Tyranids and Chaos both have their own cooldowns that determine how often an Enemy Spawn Pack is picked. These values are all in seconds, so going off the picture to the left, every 240 seconds, the ESD Manager will look through the Tyranid or Chaos section of the file depending on what mission you are playing, and pick one of the enabled Enemy Spawn Packs to spawn. It will then look at the extraPackVariants that are available, and spawn ''one'' of those options to go along with the original enemy that was spawned in the Spawn Pack.
 
Spawn Packs can include additional units via '''extraPackVariants''', creating richer, more varied encounters.
 
* Each variant must have a unique name (use underscores, no spaces).
* Defined in ''SubPackDescs''.
* Variants can specify:
** '''archetypeUid''' (enemy type)
** Spawn amount
** '''excludedDifficultyLevels''' (0 = Minimal, 5 = Absolute)
 
== How Enemy Spawning Selection Works ==
 
Spawning is governed by [[wikipedia:Random_number_generation|Random Number Generation (RNG)]]. 
Each active spawn pack is selected randomly after cooldowns expire.
 
=== Cooldown Timers ===
 
* Separate cooldowns are maintained for different factions (e.g., Tyranids vs Chaos).
* Cooldowns are measured in seconds.
 
Example:
* Base cooldown: '''240 seconds''' → New spawn selection every 4 minutes.


=== Difficulty Modifiers ===
=== Difficulty Modifiers ===
Difficulty Modifiers Modify the spawn cooldowns mentioned above. They work by multiplying the original value by a given value. The difficulties are not labeled but they are listed in order, so the first entry is minimal difficulty and the last entry is Absolute. In the image on the left, the Spawn Cooldown for both Chaos and Tyranids is 240 seconds. The modifier for the first three difficulties is 1.5. If we multiply 240 by 1.5 we get 360. Another way to think of this is its 240 times 1 and a half. So 1 whole of 240 is 240, and then we are adding half of 240 which is 180. 240+180 = 360. So on the first 3 difficulties the ESD manager will pick a Spawn Pack to spawn every 360 seconds instead of every 240. Likewise on Lethal and Absolute the spawn times are multiplied by 0.8 and 0.7. So 240 turns into 192 and 168.
== ESD_Factions_And_Compositions_Library.sso ==
The ESD_factions_and_compositions.sso file controls the spawns during the [http://www.warhammerworkshop.com/index.php/Spawn_System_Info#Tension_Phase Tension] phase of the Spawn Cycle. Its not as impressive as the ESD Manager, but its equally important. If this file is blank, or does not have enough entries for a faction, enemies will not spawn at all period. This file can be found in '''''"server_pc\root\paks\server\default\default_other.pakssl\spawn_system\enemy_spawn_director."'''''
[[File:Hormagaunt spawn picture.png|thumb|Hormagaunt Spawn Pack from the esd_factions_and_compositions_library]]


=== Spawn Packs ===
* Cooldown times are multiplied based on difficulty:
The Spawn Packs in the Factions and Compositions Library are a little different from those in the ESD Manager. Instead of picking an enemy to spawn and then picking from its extra pack variants, the Factions and Compositions Library just has the Pack Variants set up to spawn.
** Easy difficulties: Cooldown × 1.5
** Hard difficulties: Cooldown × 0.8 or lower
 
Example:
* Base cooldown: 240s
* Modifier (1.5×): 360s
* Modifier (0.7×): 168s
 
= esd_factions_and_compositions_library.sso =
 
The '''ESD Factions and Compositions Library''' manages spawning during the [https://warhammerworkshop.com/index.php/Spawn_System_Info#Tension_Phase Tension Phase].
 
Location:
<code>server_pc\root\paks\server\default\default_other.pak\ssl\spawn_system\enemy_spawn_director\esd_factions_and_compositions_library.sso</code>
 
[[File:Hormagaunt_spawn_picture.png|thumb|A Hormagaunt Spawn Pack example]]
 
== Tension Phase Spawn Packs ==
 
* Packs define entire groups of enemies rather than single spawns.
* Each Spawn Pack contains multiple '''SubPacks'''.
 
Naming rules:
* Spawn Pack names must be unique (only underscores allowed).
* SubPack names must be unique within each pack.
 
Example:
* Spawn Pack '''HormagauntSergeants_idle''' includes:
** 20 Hormagaunts
** 5 Hormagaunt Sergeants
 
== Behavior Settings ==
 
* '''packType''': defines behavior on spawn (''AGGRO'' or ''IDLE'').
* '''combatType''': prioritizes ''RANGED'' or ''MELEE'' behavior.
 
= What Can I Spawn? =


Each Spawn pack has a name space which can be changed to anything as long as it fits the naming rules of no spaces or special characters excluding underscores. The packs have Sub Packs just like in the ESD manager that also follow those rules. Remember it is very important that two or more Spawn Packs do not have the same name, and that two or more SubPackDescs cannot share the same name withing a Spwan Pack.
By default:


Each Spawn Pack has SubPacks that describe what is going to spawn when the Spawn Pack is selected. You can see in the above image a Hormagaunt Spawn Pack titled "HormagauntSergeants_idle". The first SubPack says that 20 Hormagaunts are going to spawn, and the second SubPack says that 5 Hormagaunt Sergeants will spawn. So if "HormagauntSergeants_idle" gets selected by the ESD, 20 Hormagaunts and 5 Hormagaunt Sergeants will spawn.
* '''Extremis''', '''Terminus''', and '''Mini-Boss''' enemies spawn primarily during Wave Phases (esd_manager.sso).


At the very bottom of Spawn Packs you can designate the '''''packType''''' and the '''''combatType'''''. packType tells the ESD how enemies will behave when spawned in. They can either spawn in '''AGGRO''' or '''IDLE'''. IDLE enemies will spawn wandering or standing around will be oblivious to the player until the player is within view. AGGRO enemies will spawn already knowing where the player is and will make their way towards them to attack. combatType tells the enemy spawning what combat type to prioritize, either RANGED or MELEE.
However:


== What Can I spawn in these files? ==
* Any enemy type (Tyranid, Chaos, or others) can be spawned by specifying the appropriate '''archetypeUid'''.
By default the ESD Manager contains the only entries for Extremis, Terminus, and Mini Boss Spawns. These enemy types will only spawn during the Wave Phase, and at no other point. However this is not set in stone. In fact you aren't even limited to spawning Tyranids and Chaos in their respective Faction sets. If you wanted to spawn a Rubric Marine with a pack of Hormagaunts you could do that in either of these files. All it takes is adding the Archetype id to the correct spot to get an enemy to spawn.
* Mixed spawns are possible — e.g., Rubric Marines spawning with Hormagaunts.


For a full list of available archetypes you can use in these files, see [http://www.warhammerworkshop.com/index.php/Enemy_Info#Archetypes Archetypes].
See [https://warhammerworkshop.com/index.php/Enemy_Info#Archetypes Archetypes] for a full list of spawnable enemies.


<blockquote>This Page is incomplete but the Tech Priest(s) who scribed it has exhausted their memory banks on this subject. If you have more information please feel free to complete the page.</blockquote>
<blockquote>''This page is incomplete. The Tech-Priests recording this data exhausted their memory banks. Contributions are welcome.''</blockquote>

Latest revision as of 13:19, 29 April 2025

The Enemy Spawn Director[edit | edit source]

The Enemy Spawn Director (ESD) monitors players throughout a mission and dynamically adjusts enemy spawns, locations, and numbers based on player performance. The ESD uses a system of Stress Levels and Pressure to regulate intensity, ensuring gameplay remains challenging without overwhelming players.

For a detailed guide on spawn systems, see Spawn System Info.

Key Files Controlling the ESD[edit | edit source]

Many files contribute to enemy spawning, but the two primary files are:

  • esd_manager.sso
  • esd_factions_and_compositions_library.sso

Both files control what enemies spawn, how many spawn, and under what conditions.

esd_manager.sso[edit | edit source]

The ESD Manager controls spawns during the Wave Phase of the spawn cycle, adjusting spawn rates and enemy types based on player Stress and Pressure values.

Location: server_pc\root\paks\server\default\default_other.pak\ssl\spawn_system\enemy_spawn_director\esd_manager.sso

Wave Phase settings inside the ESD Manager

Phase Length Settings[edit | edit source]

  • Phases are categorized into SHORT, NORMAL, and LONG lengths based on Stress Level.
  • High Stress reduces Wave Phase time, while extending Breather/Tension phases.
  • All phase durations are measured in seconds.

Pressure Settings[edit | edit source]

  • Spawns only occur once the player's Pressure Score exceeds a threshold.
  • Example:
    • Standard spawn activation threshold: 100 Pressure.

Tuning these values modifies when and how enemy spawns escalate.

Pressure settings for special enemies

Enemy Spawn Packs[edit | edit source]

Each spawn entry is called an Enemy Spawn Pack and contains:

  • isEnabled: (True/False) flag to toggle the spawn.
  • minCount, maxCount, or amount: control how many enemies spawn.
  • archetypeUid: defines which enemy type spawns.
  • combatType: (ANY, RANGED, MELEE) priority setting.
  • cooldown range: sets minimum/maximum time before the spawn can reoccur.
Screenshot of a Spawn Pack setup

Extra Pack Variants[edit | edit source]

Spawn Packs can include additional units via extraPackVariants, creating richer, more varied encounters.

  • Each variant must have a unique name (use underscores, no spaces).
  • Defined in SubPackDescs.
  • Variants can specify:
    • archetypeUid (enemy type)
    • Spawn amount
    • excludedDifficultyLevels (0 = Minimal, 5 = Absolute)

How Enemy Spawning Selection Works[edit | edit source]

Spawning is governed by Random Number Generation (RNG). Each active spawn pack is selected randomly after cooldowns expire.

Cooldown Timers[edit | edit source]

  • Separate cooldowns are maintained for different factions (e.g., Tyranids vs Chaos).
  • Cooldowns are measured in seconds.

Example:

  • Base cooldown: 240 seconds → New spawn selection every 4 minutes.

Difficulty Modifiers[edit | edit source]

  • Cooldown times are multiplied based on difficulty:
    • Easy difficulties: Cooldown × 1.5
    • Hard difficulties: Cooldown × 0.8 or lower

Example:

  • Base cooldown: 240s
  • Modifier (1.5×): 360s
  • Modifier (0.7×): 168s

esd_factions_and_compositions_library.sso[edit | edit source]

The ESD Factions and Compositions Library manages spawning during the Tension Phase.

Location: server_pc\root\paks\server\default\default_other.pak\ssl\spawn_system\enemy_spawn_director\esd_factions_and_compositions_library.sso

A Hormagaunt Spawn Pack example

Tension Phase Spawn Packs[edit | edit source]

  • Packs define entire groups of enemies rather than single spawns.
  • Each Spawn Pack contains multiple SubPacks.

Naming rules:

  • Spawn Pack names must be unique (only underscores allowed).
  • SubPack names must be unique within each pack.

Example:

  • Spawn Pack HormagauntSergeants_idle includes:
    • 20 Hormagaunts
    • 5 Hormagaunt Sergeants

Behavior Settings[edit | edit source]

  • packType: defines behavior on spawn (AGGRO or IDLE).
  • combatType: prioritizes RANGED or MELEE behavior.

What Can I Spawn?[edit | edit source]

By default:

  • Extremis, Terminus, and Mini-Boss enemies spawn primarily during Wave Phases (esd_manager.sso).

However:

  • Any enemy type (Tyranid, Chaos, or others) can be spawned by specifying the appropriate archetypeUid.
  • Mixed spawns are possible — e.g., Rubric Marines spawning with Hormagaunts.

See Archetypes for a full list of spawnable enemies.

This page is incomplete. The Tech-Priests recording this data exhausted their memory banks. Contributions are welcome.