GTFO Wiki
Advertisement

This page is a work in progress.

This page details the rules for where enemies are allowed to spawn, in particular the active enemies, defined as a Horde, that are spawned during objectives such as alarms, uplinks and reactors.

Spawn Types[]

Sleepers[]

Several sleepers

Several sleeping enemies.

Many of the zones that the players pass through in a given expedition will have some number of enemies that spawn sleeping within the different rooms. The number (and types) of enemies that spawn in a given zone are fairly consistent, with only small variations or substitutions, though how these enemies can be distributed throughout the various rooms/areas will vary.

In some cases for sleeping boss enemies they will always spawn in an identical position within a room, and will not have any variation in where they spawn.

Blood Doors[]

Blood door enemies

Most of the enemies spawned from this blood door are near the door, though some are deeper into the room.

When a Blood Door is opened a large number of active enemies will spawn behind the door, ready to rush out and attack the player immediately after the door finishes opening. Despite spawning in an active state, this enemies will have the lighter coloration of enemies that typically spawn sleeping.

All of the enemies spawned by a blood door will spawn in that zone's first area. Notably though, if that zone has regular sleeper spawns then there may be some of those regular sleepers within the first area. These enemies will stay sleeping even after the blood door opens, until woken by regular means (e.g. the players shooting the blood door enemies, or one of the active blood door enemies screaming in the room). In the case where the zone behind the blood door is capable of spawning scouts it is possible for a scout to be in the area behind a blood door, just like other regular sleeper spawns the scout will not wake immediately, though the players will have to act quickly in order to neutralize the scout before it is woken by gunshots or the blood door enemies screaming.

Most of the enemies will spawn near the door, however, some may also spawn deeper into the room (and thus not make it to the door before it finishes opening). There are settings which control which enemies will spawn near the door and which will spawn distributed throughout the room so the exact distribution can vary between blood doors.

Alarms[]

From players[]

In the vast majority of cases, enemies spawned during an Alarm will spawn two rooms/areas away from the players. When there are multiple areas that are suitably far away then enemies will have varying chances to spawn in each of them.

In cases where there are 3+ suitably distant areas that are distributed across several directions then there will be a bias towards spawn locations to the North-East and South-West (with North-West and South-East spawns being much less likely). In cases where the suitably distant areas are all in a similar direction then there will be a bias towards areas earlier on in the level (e.g. Area A being preferred over Area B, Zone 1 being preferred over Zone 2, etc.). See below for exact details which explain why these biases occur.

Rarely, an alarm will use an area distance other than two, which will encourage spawns a different number of rooms away. E.g. an area distance of 1 will make spawns one room away much more likely.

Choosing a central area[]

First, the spawning system chooses a central area from which the enemies are spawned in reference to. The system chooses the area of the alive player who is the fewest number of areas away from where the alarm was started. In the case of ties, the player with the lower lobby slot is preferred. If there are somehow no alive players or they are otherwise inaccessible then the area where the alarm was started is used as a fallback.

Stay in room with scans

A player in the alarm's room completing bioscans.

Often, the players will simply be in the room where the alarm started (such as while completing the Bioscan Sequence tied to the alarm), so the central area will just be the alarm room. However, in cases such as Error Alarms the players will often move quite far from where the alarm started and so the central area will not be the alarm room.

Path weighting[]

Next, the system weights the areas near the central area by how close the players are to that path.

The system performs a breadth first search traversal of of the areas connected to the central area in order to generate available spawns. Breath first search ensures that for each connected area the shortest path (in terms of number of rooms) between a given area and the central area is always found. There is a limit of 20 areas explored while doing so, though given the resultant weighting towards areas not too far from the central area this generally should not matter.

For each area examined, the system checks each of its doors/connections and adds the area on the opposite side to the queue to be checked. Each door and each area can only be checked once, and is never reused or revisited. Notably, the central area can never be produced as an available spawn point (it is not added to the available spawns output when first examined, and cannot be revisited since all of its doors are used when examining its adjacent areas). While doing so, the system tracks the door (which can be either a security door, regular door or even an 'open room divider') which was used when traversing to this area. The position of this door is later used in the direction weighting.

While performing this traversal, the system assigns a path heat to each area. The path heat initially starts at zero for the central area. When a given area is examined, all of the new areas connected to it are given a path heat equal to the given area's path heat plus one for each room away from the nearest alive player the given area is.

This path heat of an area is then used to calculate the path weight for that area. The area distance of the alarm is used in this calculation. The formula for the path weight is:


where and .

The most common area distance by far is 2, though very rarely area distances such as 1 or 3 are used. A table summarizing the path weight calculation for these area distances is included below:

Path heat Area distance
1.0 2.0 3.0
0 2 0 0
1 1.5 2 0
2 1 1.67 2
3 1 1.33 1.75
4 1 1 1.5
5 1 1 1.25
6+ 1 1 1

When traversing the area graph it is occasionally important which order the areas are added to the queue in. This can be important as the exact path used can affect the path heat assigned to an area, and also because the order areas are considered in is used as a tie-break in the final choice. Breadth First Search ensures that all areas that are fewer rooms away are considered before areas that are further away. When considering the areas connected to a given area, it appears to be the case that earlier areas are added to the queue first, that is, areas that were generated earlier on in the level generation process (which starts at the elevator). This should cause areas with a lower zone number and lower area letter to be considered before later zones/areas. E.g. If Zone 11 Area B connects to Zone 10 Area D, Zone 11 Area A, Zone 11 Area C and Zone 12 Area A, then the order areas are considered in would be: 10D → 11A → 11C → 12A. (It is almost universally the case that zones/areas with lower zone numbers/area letters are generated earlier on in the level generation process, however, the game is capable of overriding zone numbers/area letters, though this is almost never done.)

Direction weighting[]

Next, the system generates a vector and uses it to inject some degree of direction randomization. Notably, the vectors used are all flattened, so verticality is ignored.

Desmos-graph-possible points for direction

Possible points used to generate the 'random' vector.

The system generates a vector by generating a random point within the unit square. The vector then points from the origin to the generated point. The vector then has a 50% chance of being reversed. Notably this process only generates vectors within the North-East and South-West quadrants (from the original point in the unit square and from vectors which are reversed, respectively). Additionally, even within these quadrants there is a bias towards the North-East or South-West, as e.g. the diagonal of the unit square which would produce a North-East vector is longer than the side which would produce an East vector.

Then, for each area that was examined when performing the path weighting, the system compares the generated 'random' vector with a vector which points from the central area to the door used when traversing to this area. The position used for the center area is generally a point roughly in the middle of the room. The position used for doors is generally the middle of the door.

Each area is given an additional direction weight that is the cosine of the angle between these two vectors (with a minimum value of zero).

Final choice[]

Finally, the area with the highest total weight is chosen, where the total weight is the sum of the path weight and direction weight. In the case of ties, the area that was encountered first in the path weighting procedure is preferred.

The exact procedure used to weight spawns introduces several biases in the room that is ultimately chosen. Additionally, contrary to the oft touted "two room rule" for spawns, spawns in rooms further than the area distance are not only possible but sometimes likely. This is due to the fact that the path difference between path weighting for different distance rooms is often less than 1 (the maximum value for the direction weighting), so favorable randomized directions can cause rooms with unfavorable path weights to be chosen.

From elevator[]

In some cases the enemies spawned will always spawn in the direction of the elevator (the one which grants entrance to the level). Typically such alarms are used to 'chase' the players out of the expedition.

While the direction of the spawns is now fixed, the enemies will still spawn a set number of rooms away from the players. The spawn system uses a very similar decision making process as regular from players spawns, with an identical process for choosing a central area. The process for weighting the path is only slightly adjusted, with the breadth-first-search being restricted to finding areas 'earlier on' in the level. Additionally, the direction used in the direction weighting process is no longer randomized, and instead is always the direction from central central area to the elevator room's position.

This removes the randomization in spawns completely. Additionally, only an area distance of 2 is allowed, though due to the previously discussed quirks in the weighting procedure rooms that are a different distance than 2 away can still occur.

Fixed location[]

Some alarms will have enemies spawn in a set location. They will always spawn in that area no matter where the players are.

R8B3[]

The only alarm in the entire game that does not use one of the above alarm spawn types is R8B3 (with both its uplink and activating its objective). The spawning rules for these alarms behave similarly to a reactor using the from reactor rules, with the 'reactor' being the uplink terminal's room.

Uplinks[]

Enemies spawned during almost all uplink sequences use a modified version of the rules used for alarms. Notably, they entirely restrict the allowed rooms to just ones within the same zone as the uplink. This can make spawnblocking much more applicable. Additionally, there is no longer a path or direction weighting procedure. Instead the system simply chooses randomly between any of the rooms which are two rooms away from their closest player. If there are no such rooms then rooms one away from their closest player are used instead, and similarly if all rooms are zero away from the closest player. In the unusual case where all the players left the uplink's zone then the system chooses randomly between the rooms closest to the players.

This restriction generally does not apply to external uplinks which typically use regular from players spawning. It also does not apply to R7C3's uplinks (both the regular and external uplinks).

Reactors[]

Enemies spawned during reactor waves typically have very different spawning rules compared to regular alarms.

Notably, a single reactor high intensity test can contain multiple individual waves which use different spawn types. For example ALT://R2D2's high intensity tests generally have the first wave of enemies spawning in the elevator zone while subsequent waves within the same test will use the from reactor spawn type.

Reactor waves can also use set spawn locations which behave identically to regular alarm's fixed location spawns.

From reactor[]

For spawns from the reactor the system first finds the room distance to the player who is the furthest number of rooms from the reactor. This player distance is then used to determine the suitable rooms for enemy spawns.

The system will search for rooms that are 2 + player distance rooms away from the reactor. All such suitable rooms will then have an equal chance to be used for enemy spawns. If there are no rooms that are 2 + player distance away, the system will use rooms that are 1 + player distance away, and if there are none of those it will use rooms that are simply the player distance away. This means that if the players go as far away as possible from the reactor they will generally have the enemies spawn directly on top of them.

Globalspawnpush

By holding in the room to the south of the reactor in ALT://R2D2 this player has pushed the suitable spawns to the highlighted rooms. Note the long distance from this player to the spawns to the North and East of the reactor.

Additionally, since the system searches for rooms that are 2 + player distance away from the reactor itself, by moving away from the reactor in one direction players can cause spawns on the other side of the reactor to be exceptionally far away from them. This is termed global spawn push. For example, if players moved 2 rooms away from the reactor to the East, then spawns would occur 4 rooms away from the reactor, if there was a suitable room to the North of the reactor which was 4 rooms away then enemies spawning here would be 6 rooms away from the players. Enemies that are this far away from players often suffer from AI issues, and will generally take a very long time to reach the players, and can even become completely stuck. While this can mean that players will only have to deal with fewer enemies at a time this is generally undesirable, as reactors work based on a population system, and even if the timer for the high intensity test finishes unspawned enemies will still be queued up and will spawn as space becomes available. As such players should generally hold close to the reactor (either in it or in adjacent rooms), unless they are intentionally pushing the spawns far enough that certain directions no longer have suitable spawns, causing enemies to only spawn in a desirable direction.

Unlike alarms that spawn from the players the extra room distance is always 2. Also unlike such alarms, there is no bias between rooms, all suitable rooms are equally likely, though this may result in one direction from the reactor being more likely if it has more suitable rooms in that direction.

Notably, when searching for suitable rooms the system using the same breadth-first-search procedure as in the path weighting procedure for alarms spawning from players (though it ignores the actual path weighting). This means that the same limit of 20 rooms explored applies. As such, if the players are far enough from the reactor such that the 20th room is no more than 2 rooms further from the reactor, the system will be limited to choosing between found rooms that are the same distance away as the 20th room.

Show/Hide example

For example, on ALT://R2D2, if all zones are open then the 20th room explored will be 200B (one would expect 199B, but in this level zone 200 is generated before zone 199). This room is 6 rooms away from the reactor.

If the players stood in room 198A (5 rooms away from the reactor) then one might expect spawns to be pushed into 200C (which is the only room 7 away from the reactor), but instead the available spawns are 198BCD and 200B which are all 6 away from the reactor. Notably not all the rooms 6 away from the reactor are even available, as 199BC are not found before the 20 room limit is reached.

In elevator zone[]

In-elevator-zone reactor spawns use the same spawning procedure as uplinks. That is, spawns are completely restricted to rooms within the elevator's zone. If there are rooms two away from the players then the system chooses randomly between them. If there are no such rooms available and there are rooms one room away then the system chooses randomly between those. If all the rooms are zero rooms away then the system chooses randomly between them. In cases where all the rooms in the elevator zone are more than two rooms from the players then the system chooses randomly between whichever rooms are closest to the players.

Strategies[]

Spawnblocking/spawnpushing[]

Spawnblocking/spawnpushing is a strategy utilized by notating the 2 room buffer rule for waves of enemies spawning checking if at least 1 player is standing inside a room, allowing them to spawn in any room with no player inside that is 2 rooms away from any player, so a team can spread out to a cluster of adjacent rooms to cause waves to spawn in much further away rooms. Open Dividers count as a new "room".

This 2 room spawn buffer does not account for Zone changes, only rooms within a given Zone. Attempting to use different Zones rather than rooms can cause enemies to spawn 1 room away, or even directly on top of players. Some expeditions, such as the R7B2 Secondary Objective, will utilize 1 room spawns, making spawnblocking/spawnpushing largely diminished in effectiveness.

"Daisy chaining"[]

Only applicable to from players (and in very specific circumstances from elevator) spawn types.

Delaying waves[]

Advertisement