The file structure has changed starting with the 0.6.0 release, so files from all previous versions of this mod must be removed before installing a new version!
SAIN 3.1.0 or later and Looting Bots 1.3.5 or later are highly recommended!
This mod may have a performance impact, but it should be minimal starting with the 0.5.0 release. If you notice performance problems, please try using the built-in AI limiter.
Mod Compatibility:
REQUIRED | BigBrain (1.0.1 or later) Waypoints (1.5.2 or later)
|
Highly Recommended
| SAIN (3.1.0 or later recommended) Looting Bots (1.3.5 or later recommended)
|
NOT Compatible
| AI Limit or any other mods that disable AI in a similar manner. This mod relies on the AI being active throughout the entire map. Starting with 0.2.10, Questing Bots has its own AI Limiter feature. Please see the tab below for more information.
Traveler (You MUST use another mod like SWAG + DONUTS to manage bot spawning when using this mod. Otherwise, bots will spawn right in front of you.)
|
Compatible | SWAG + DONUTS (Bot spawning in this mod will be automatically disabled) Late to the Party Fika (Requires client version 0.9.8962.33287 or later) |
NOTE: Please disable the bot-spawning system in this mod if you're using other mods that manage spawning! Otherwise, there will be too many bots on the map. The bot-spawning system in this quest will be automatically disabled if any of the following mods are detected:
- Open the ZIP file you downloaded for this mod
- Extract the "BepInEx" and "user" folders into your SPT install directory, and overwrite any existing files
Example from another mod (thanks, DrakiaXYZ!):
Instead of simply patrolling their spawn areas, bots will now move around the map to perform randomly-selected quest objectives. By default this system is only active for PMC's and player Scavs, but it can be enabled for normal Scavs and bosses if you want an extra challenge.
After spawning (regardless of when this occurs during the raid), bots will immediately begin questing, and there are only a few conditions that will cause them to stop questing:
- They got stuck too many times
- Their health is too low and they're unable to heal
- They're over-encumbered
- They're trying to extract (using SAIN)
Otherwise, they will only temporarily stop questing for the following reasons:
- They're currently or were just recently in combat
- They heard a suspicious noise
- They recently completed an objective
- They're checking for or have found loot
- Their health is too low or they have blacked limbs (besides arms)
- Their energy or hydration is too low
- They have followers that are too far from them
There are several types of quests available to each bot:
- EFT Quests: Bots will go to locations specified in EFT quests for placing markers, collecting/placing items, killing other bots, etc. Bots can also use quests added by other mods.
- Spawn Rush: At the beginning of the raid, bots that are within a certain distance of you will run to your spawn point. Only a certain number of bots are allowed to perform this quest, and they won't always select it. This makes PVP-focused maps like Factory even more challenging.
- Boss Hunter: Bots will search zones in which bosses are known to spawn. They will only be allowed to select this quest at the beginning of the raid (within the first 5 minutes by default) and if they're a high enough level.
- Airdrop Chaser: Bots will run to the most recent airdrop if it's close to them (within 500m by default). They will be allowed to select this quest within questing.bot_quests.airdrop_bot_interest_time seconds (420s by default) of the airdrop crate landing.
- Spawn Point Wandering: Bots will wander to different spawn points around the map. This is used as a last resort in case the bot doesn't select any other quests. This quest is currently disabled by default because it should no longer be needed with the quest variety offered in the 0.4.0 and later releases.
- "Standard" Quests: Bots will go to specified locations around the map. They will prioritize more desirable locations for loot and locations that are closer to them. These also include some sniping and camping quests on all maps, so be careful!
- "Custom" Quests: You can create your own quests for bots using the templates for "standard" quests. None are provided by default.
---------- Bot Quest-Selection Algorithm Overview ----------
When each bot spawns, this mod finds the furthest extract from them and references it when selecting new quests for the bot. If the bot ever comes close enough to that extract while traversing the map, this happens again; a new extract is selected for it that is the furthest one from its current location. This continues until the bot extracts or dies. This extract is NOT used when bots extract via SAIN; it is only used when this mod selects new quests for the bot.
Before selecting a quest for a bot, all quests are first filtered to ensure they have at least one valid location on the map and the bot is able to accept the quest (it's not blocked by player level, etc.). Then, the following metrics are generated for every valid quest:
- The distance between the bot and each objective for the quest with some randomness applied (by questing.bot_quests.distance_randomness). This value is then normalized based on the furthest objective from the bot (for any valid quest), and finally it's multiplied by a weighting factor defined by questing.bot_quests.distance_weighting (1 by default).
- A "desirability" rating for each quest, which is the desirability rating
assigned to the quest but with some randomness applied (by questing.bot_quests.desirability_randomness). This value is divided by 100 and then multiplied by a weighting factor defined by questing.bot_quests.desirability_weighting (1 by default). There are modifiers that can be applied to the desirability ratings of quests including questing.bot_quests.desirability_camping_multiplier, questing.bot_quests.desirability_sniping_multiplier, and questing.bot_quests.desirability_active_quest_multiplier. More information about these settings can be found in the README or GitHub repo for this mod.
- The angle between two vectors: the vector between the bot and its selected extract (described above), and the vector between the bot and each objective for the quest. If the quest objective is in the same direction as the bot's selected extract, this angle will be small. If the bot has to move further from its selected extract, this angle will be large. Angles that are below a certain threshold (90 deg by default) are reduced down to 0 deg. This value is divided by 180 deg minus the threshold just described (90 deg by default), and finally it's multiplied by a weighting factor defined by questing.bot_quests.exfil_direction_weighting, which is different for every map.
These three metrics are then added together, and the result is the overall score for the corresponding quest. The quest with the highest score is assigned to the bot. If for some reason the bot is unable to perform that quest, it selects the one with the next-highest score, and so on. If no quests are available for the bot to select, this mod will first try allowing the bot to perform repeatable quests early (before the questing.bot_questing_requirements.repeat_quest_delay delay expires). If there are no available repeatable quests, this mod will then attempt to make the bot extract via SAIN. Finally, this mod will stop assigning new quests to the bot.
At the beginning of the raid, PMC's will spawn around the map at actual EFT PMC spawn points. The spawning system will try to separate spawn points as much as possible, but spawn killing is still entirely possible just like it is in live Tarkov. The total number of PMC's that can spawn is a random number between the minimum and maximum player count for the map (other mods can change these values). However, you count as one of those PMC's for PMC raids. That number will be reduced if you spawn into the map late for a Scav run. The PMC difficulty is set by your raid settings in EFT.
Starting with the 0.4.0 release, player Scavs will also spawn throughout the raid. Each group of player Scavs will be assigned a minimum spawn time that is generated using SPT's raid-time-reduction settings for Scav raids. This mod will use SPT's weighting settings for choosing when player Scavs will spawn into each location, it will add some randomness, and then it will generate a spawn schedule for all player-Scav spawns. Effectively, this means that player Scavs are most likely to spawn toward the middle and last third of raids. They're unlikely to spawn toward the very beginning or very end of them. Player Scavs can spawn at any EFT PMC or player-Scav spawn point on the map, and player-Scav bot difficulty is set by your raid settings in EFT.
Only a certain (configurable) number of initial PMC's will spawn at the beginning of the raid, and the rest will spawn as the existing ones die. PMC's that spawn after the initial wave can spawn anywhere that is far enough from you and other bots (at any EFT spawn point for PMC's or player Scavs). After all PMC's have spawned, player Scavs will be allowed to spawn. The maximum total number of PMC's and player Scavs on the map cannot exceed the number of initial PMC's (determined by bot_spawns.max_alive_bots). For example, Customs allows 10-12 players, but Questing Bots only allows 7 to be on the map at the same time by default. That means 7 PMC's will spawn immediately as the raid starts, and as some of them die others will spawn to replace them. After all PMC's have spawned and less than 7 are remaining, player Scavs will be allowed to spawn. If there are 5 PMC's left on the map, 2 player Scavs will be allowed to spawn. If there are 3 PMC's left on the map, 4 player Scavs will be allowed to spawn, and so on. Even if most total PMC's have died, player Scavs will not be allowed to spawn earlier than their scheduled spawn times.
A new feature of the 0.4.0 and later releases is an advanced spawning system that tricks EFT into thinking that PMC's and player Scavs are human players. This makes PMC's and player Scavs not count toward the bot cap for the map, so they shouldn't impede normal EFT bot spawns for normal Scavs and bosses. It also prevents PMC's and player Scavs from counting toward the maximum bot counts for each zone on the map, and this allows normal Scavs to spawn like they would in live EFT. Without this system, all initial bosses must be configured to spawn first (which is a config option in this mod) or EFT may suppress them due to the high number of bots on the map. To accomodate the large initial PMC wave and still allow Scavs and bosses to spawn, the bot cap can be optionally increased (which is also a config option in this mod) if you're not using the advanced spawning system.
---------- PMC Group Spawning System ----------
- Spawn chances for various group sizes are configurable. By default, solo spawns are most likely, but 2-man and 3-man groups will be commonly seen. 4-man and 5-man groups are rare but possible.
- EFT will assign one bot in the group to be a "boss", and the boss will select the quest to perform. All other bots in the group will follow the boss.
- If any group members stray too far from the boss, the boss will stop questing and attempt to regroup
- If any member of the group engages in combat or hears a suspicious noise, all other members will stop questing (or following) and engage in combat too.
- If the boss is allowed to sprint, so are its followers and vice versa.
- If the boss of a bot group dies, EFT will automatically assign a new one from the remaining members
- Followers are only allowed to loot if they remain within a certain distance from the boss
Since normal AI Limit mods will disable bots that are questing (which will prevent them from exploring the map), this mod has its own AI Limiter with the following features:
- AI Limiting must be explicitly enabled in the F12 menu.
- AI Limiting must be explicitly enabled for bots that are questing for each map. By default, questing bots will only be disabled on Streets.
- Bots will only be allowed to be disabled if they are beyond a certain distance (200m by default) from human players. There are individual
map-specific distances that can be adjusted by enabling advanced
settings in the F12 menu, but the global setting will take priority. In
other words, the actual limiting distance is the minimum of the two (the
map-specific value and the global value). By default, all map-specific
distances are set to 1000m to avoid confusion when only the global
setting is adjusted.
- Bots will only be allowed to be disabled if they are beyond a certain distance (75m by default) from other bots that are questing (and not disabled)
Objective System:
- Mods that add a lot of new quests may cause latency issues that may result in game stability problems and stuttering
- Bots tend to get trapped in certain areas. Known areas:
- Customs between Warehouse 4 and New Gas
- Customs in some Dorms rooms
- Lighthouse in the mountains near the Resort spawn
- Lighthouse on the rocks near the helicopter crash
- Bots blindly run to their objective (unless they're in combat) even if it's certain death (i.e. running into the Sawmill when Shturman is there).
- Bots take the most direct path to their objectives, which may involve running in the middle of an open area without any cover.
- Certain bot "brains" stay in a combat state for a long time, during which they're unable to continue their quests.
- Certain bot "brains" are blacklisted because they cause the bot to always be in a combat state and therefore never quest (i.e. exUSEC's when they're near a stationary weapon)
- Bots sometimes unlock doors for no reason if they can't properly resolve their quest locations.
- A "Destroying GameObjects immediately is not permitted during physics trigger/contact, animation event callbacks or OnValidate. You must use Destroy instead." error will sometimes appear in the game console after a bot unlocks a door. This can be ignored.
- Player-level ranges for some quests are not reasonable, so bots may do late-game quests at low player levels and vice versa. This is because EFT has no minimum level defined for several quest lines.
PMC and Player-Scav Spawning System:
- If there is a lot of PMC action at the beginning of the raid, the rest of the raid will feel dead. However, this isn't so different from live Tarkov.
- If advanced_eft_bot_count_management=false, not all PMC's or player Scavs spawn into Streets because too many Scavs spawn into the map first
- In maps with a high number of max players, Scavs don't always spawn when the game generates them if your max_alive_bots setting is high and advanced_eft_bot_count_management=false
- In maps with a high number of max players, performance can be pretty bad if your max_alive_bots setting is high
- Noticeable stuttering for (possibly) several seconds when the initial PMC wave spawns if your max_alive_bots setting is high
- Performance may be worse if advanced_eft_bot_count_management=true because EFT will be allowed to spawn more Scavs than with previous versions of this mod.
- Thanks to Props for sharing the code DONUTS uses to spawn bots. This was the inspiration to create this mod.
- Thanks to DrakiaXYZ for creating BigBrain and Waypoints and for all of your help with developing this mod.
- Thanks to nooky for lots of help with testing and ensuring this mod remains compatible with SWAG + DONUTS.
- Thanks to Skwizzy for help with adding interop capability to Looting Bots.
- Thanks to everyone else on Discord who helped to test the many alpha releases of this mod and provided feedback to make it better. There are too many people to name, but you're all awesome.
- Of course, thanks to the SPT development team who made this possible in the first place.
Please see the README or https://github.com/dwesterwick/SPTQuestingBots for information about the configuration options in config.json and how to add custom quests.