mirror of
https://github.com/liyunfan1223/mod-playerbots.git
synced 2026-02-20 18:10:02 +01:00
Created Playerbot configuration (markdown)
parent
c7a7c533d4
commit
0b898ebf28
241
Playerbot-configuration.md
Normal file
241
Playerbot-configuration.md
Normal file
@ -0,0 +1,241 @@
|
||||
## Random bots activity profiles.
|
||||
Before going into the configuration options we need explain the logic abit. Every update tick of the server its calculated whether a bot can
|
||||
or can't be active. An active bots takes and eats alot more resources then an idle bot.
|
||||
|
||||
The following logic is applied to determine whether a bot is active or not, applied in the explained order.
|
||||
|
||||
```
|
||||
1. NOT ACTIVE: When server just started and the server update is smaller then (max amount of bots * 0.12 seconds)
|
||||
2. ALWAYS ACTIVE: When bot is in battleground, instance or raid.
|
||||
3. ALWAYS ACTIVE: When in combat and not in party (defend urself)
|
||||
4. ALWAYS ACTIVE: If bot zone has a real players
|
||||
5. ALWAYS ACTIVE: When the bots is a member of a guild with real players
|
||||
6. ALWAYS ACTIVE: Has real player as master
|
||||
7. ALWAYS ACTIVE: if grouped and the leader is a real player
|
||||
8. ALWAYS ACTIVE: if in battleground queue
|
||||
9. ALWAYS ACTIVE: if looking for group
|
||||
10. ALWAYS ACTIVE: If bot has a real player within the radius 300 yards
|
||||
11. ALWAYS ACTIVE: When bot is on a friendlist of a online real player
|
||||
12. ALWAYS ACTIVE: When bot has more then 10 other bots within the sightDistance, force to spread out
|
||||
```
|
||||
These rules will always be applied regardless what value you have configured **'AiPlayerbot.BotActiveAlone'**.
|
||||
|
||||
***
|
||||
|
||||
All remaining situations e.g. bots in zones or maps without real players, empty server etc will be configured
|
||||
based on the **'AiPlayerbot.BotActiveAlone'** value. That value basically means that the bot has about
|
||||
% chance to get active for only a few seconds. Unless in those few seconds one of the above rules
|
||||
is triggered then it possible might remain active longer.
|
||||
|
||||
Then **'AiPlayerbot.botActiveAloneSmartScale'** basically auto scale the activity percentages
|
||||
based on the latency, relative to the configured value of **'AiPlayerbot.BotActiveAlone'**. And only when in
|
||||
the bots is the level scope of the configured values of:
|
||||
* **'AiPlayerbot.botActiveAloneSmartScaleWhenMinLevel'**
|
||||
* **'AiPlayerbot.botActiveAloneSmartScaleWhenMinLevel'**
|
||||
|
||||
***
|
||||
|
||||
#### 1. best performance with high bot count.
|
||||
My personal preference is that i keep my bots idle when i am not in the zone or map, which is applied with the following config
|
||||
and in this specific requirement it doesnt rlly matter autoscale is on or off but i leave it on.
|
||||
|
||||
```
|
||||
AiPlayerbot.BotActiveAlone = 10
|
||||
AiPlayerbot.botActiveAloneSmartScale = 1
|
||||
AiPlayerbot.botActiveAloneSmartScaleWhenMinLevel = 1
|
||||
AiPlayerbot.botActiveAloneSmartScaleWhenMaxLevel = 80
|
||||
```
|
||||
|
||||
#### 2. Default; best effort to enforce 100% acitivity but auto adjust when needed
|
||||
(prolly best profile with a server with more real players spread over different zones and maps).
|
||||
When you want all bots active in all situations but you want to server to compensate the bot
|
||||
acitivity based on your latency then use (basically best effort for 100%) :
|
||||
```
|
||||
AiPlayerbot.BotActiveAlone = 100
|
||||
AiPlayerbot.botActiveAloneSmartScale = 1
|
||||
AiPlayerbot.botActiveAloneSmartScaleWhenMinLevel = 1
|
||||
AiPlayerbot.botActiveAloneSmartScaleWhenMaxLevel = 80
|
||||
```
|
||||
|
||||
#### 3. All bots active regardless your latency and performance impact.
|
||||
```
|
||||
AiPlayerbot.BotActiveAlone = 100
|
||||
AiPlayerbot.botActiveAloneSmartScale = 0
|
||||
AiPlayerbot.botActiveAloneSmartScaleWhenMinLevel = 1
|
||||
AiPlayerbot.botActiveAloneSmartScaleWhenMaxLevel = 80
|
||||
```
|
||||
|
||||
#### 4. All bots active and only apply autoscale on a level range (e.g. high levels)
|
||||
```
|
||||
AiPlayerbot.BotActiveAlone = 100
|
||||
AiPlayerbot.botActiveAloneSmartScale = 1
|
||||
AiPlayerbot.botActiveAloneSmartScaleWhenMinLevel = 75
|
||||
AiPlayerbot.botActiveAloneSmartScaleWhenMaxLevel = 80
|
||||
```
|
||||
|
||||
***
|
||||
|
||||
#### Check profile and performance
|
||||
Use the command '.server info' to see your latencies. The general latenciesshould be under 70-80 and the percentiles maxed out around
|
||||
100, 120, 150. And verify how quick a bot executes your command. It should be pretty much instant. If not to should choose a different profile
|
||||
and/or lower your bot amount.
|
||||
|
||||
If dont use the performance checks it might result into strange and incorrect bot behaviours and/or huge amount of memory footprint growth in
|
||||
a relative short time (OOM)
|
||||
|
||||
##### Reference
|
||||
I use profile 1 with 5000 bots on amd 5700x (6 cores), linux, 20GB with the following result:
|
||||
|
||||

|
||||
|
||||
|
||||
## Recommended hardware
|
||||
```
|
||||
Memory
|
||||
minimal: 16GB
|
||||
preferable: 32GB or more
|
||||
CPU cores:
|
||||
minimal: 4 cores
|
||||
preferable: 6 or more cores
|
||||
CPU speed:
|
||||
minimal: 3000mhz
|
||||
preferable: 4400mhz or more
|
||||
```
|
||||
|
||||
## Recommended config
|
||||
worldserver.conf
|
||||
```bash
|
||||
# bots might not pickup quests in certain condidations
|
||||
Quests.IgnoreAutoAccept = 1
|
||||
|
||||
# performance
|
||||
PreloadAllNonInstancedMapGrids = 0
|
||||
SetAllCreaturesWithWaypointMovementActive = 0
|
||||
DontCacheRandomMovementPaths = 0
|
||||
MapUpdate.Threads = 4 or 6
|
||||
MapUpdateInterval = 10
|
||||
MinWorldUpdateTime = 1
|
||||
|
||||
# no player limit for the bots
|
||||
PlayerLimit = 0
|
||||
|
||||
# prevent buggy situations
|
||||
LeaveGroupOnLogout.Enabled = 1
|
||||
```
|
||||
|
||||
playerbots.conf
|
||||
```bash
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
# general
|
||||
#-------------------------------------------------------------------
|
||||
AiPlayerbot.Enabled = 1
|
||||
AiPlayerbot.DeleteRandomBotAccounts = 0
|
||||
AiPlayerbot.RandomBotAccountPrefix = "rndbot"
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
# randombots
|
||||
# - RandomBotMaps: 0=Eastern Kingdoms, 1=Kalimdor, 530=Outland, 571=Northrend
|
||||
#-------------------------------------------------------------------
|
||||
AiPlayerbot.RandomBotMinLevel = 1
|
||||
AiPlayerbot.RandomBotMaxLevel = 80
|
||||
AiPlayerbot.AutoTeleportForLevel = 1
|
||||
AiPlayerbot.RandomBotMaps = 0,1,530,571
|
||||
AiPlayerbot.ProbTeleToBankers = 0.25
|
||||
AiPlayerbot.RandomBotMaxLevelChance = 0.01
|
||||
AiPlayerbot.RandomBotFixedLevel = 0
|
||||
AiPlayerbot.DisableRandomLevels = 0
|
||||
AiPlayerbot.RandombotStartingLevel = 5
|
||||
AiPlayerbot.SyncLevelWithPlayers = 0
|
||||
AiPlayerbot.DisableDeathKnightLogin = 1
|
||||
AiPlayerbot.SyncQuestWithPlayer = 1
|
||||
AiPlayerbot.AutoDoQuests = 1
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
# command (gear: 1 = normal, 2 = uncommon, 3 = rare, 4 = epic, 5 = legendary)
|
||||
#-------------------------------------------------------------------
|
||||
AiPlayerbot.AutoGearQualityLimit = 4
|
||||
AiPlayerbot.AutoGearCommand = 1
|
||||
AiPlayerbot.MaintenanceCommand = 1
|
||||
AiPlayerbot.AllowPlayerBots = 1
|
||||
AiPlayerbot.AllowGuildBots = 1
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
# chat and broadcast (default; RepeatDelay = 2000)
|
||||
#-------------------------------------------------------------------
|
||||
#AiPlayerbot.RepeatDelay = 2000
|
||||
AiPlayerbot.EnableBroadcasts = 0
|
||||
AiPlayerbot.RandomBotTalk = 0
|
||||
AiPlayerbot.RandomBotEmote = 0
|
||||
AiPlayerbot.RandomBotSuggestDungeons = 0
|
||||
AiPlayerbot.EnableGreet = 0
|
||||
AiPlayerbot.ToxicLinksRepliesChance = 0
|
||||
AiPlayerbot.ThunderfuryRepliesChance = 0
|
||||
AiPlayerbot.GuildRepliesRate = 0
|
||||
AIPlayerbot.GuildFeedback = 0
|
||||
AiPlayerbot.RandomBotSayWithoutMaster = 0
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
# intervals
|
||||
#-------------------------------------------------------------------
|
||||
AiPlayerbot.RandomBotUpdateInterval = 20
|
||||
AiPlayerbot.RandomBotCountChangeMinInterval = 1800
|
||||
AiPlayerbot.RandomBotCountChangeMaxInterval = 7200
|
||||
AiPlayerbot.MinRandomBotInWorldTime = 3600
|
||||
AiPlayerbot.MaxRandomBotInWorldTime = 1209600
|
||||
AiPlayerbot.MinRandomBotRandomizeTime = 7200
|
||||
AiPlayerbot.MaxRandomBotRandomizeTime = 1209600
|
||||
AiPlayerbot.RandomBotsPerInterval = 60
|
||||
AiPlayerbot.MinRandomBotReviveTime = 60
|
||||
AiPlayerbot.MaxRandomBotReviveTime = 300
|
||||
AiPlayerbot.MinRandomBotTeleportInterval = 3600
|
||||
AiPlayerbot.MaxRandomBotTeleportInterval = 18000
|
||||
AiPlayerbot.RandomBotInWorldWithRotationDisabled = 31104000
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
# distance
|
||||
#-------------------------------------------------------------------
|
||||
AiPlayerbot.FarDistance = 20.0
|
||||
AiPlayerbot.SightDistance = 75.0
|
||||
AiPlayerbot.SpellDistance = 28.5
|
||||
AiPlayerbot.ShootDistance = 26.0
|
||||
AiPlayerbot.ReactDistance = 150.0
|
||||
AiPlayerbot.GrindDistance = 75.0
|
||||
AiPlayerbot.HealDistance = 38.5
|
||||
AiPlayerbot.LootDistance = 25.0
|
||||
AiPlayerbot.FleeDistance = 8.0
|
||||
AiPlayerbot.TooCloseDistance = 5.0
|
||||
AiPlayerbot.MeleeDistance = 1.5
|
||||
AiPlayerbot.FollowDistance = 1.5
|
||||
AiPlayerbot.WhisperDistance = 6000.0
|
||||
AiPlayerbot.ContactDistance = 0.5
|
||||
AiPlayerbot.AoeRadius = 10
|
||||
AiPlayerbot.RpgDistance = 200
|
||||
AiPlayerbot.AggroDistance = 22
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
# performance related
|
||||
#-------------------------------------------------------------------
|
||||
AiPlayerbot.BotActiveAlone = 10 (either use 10% or 100% anything is between is kinda useless)
|
||||
AiPlayerbot.botActiveAloneSmartScale = 1
|
||||
AiPlayerbot.botActiveAloneSmartScaleWhenMinLevel = 1
|
||||
AiPlayerbot.botActiveAloneSmartScaleWhenMaxLevel = 80
|
||||
|
||||
PlayerbotsDatabase.WorkerThreads = 1
|
||||
PlayerbotsDatabase.SynchThreads = 2
|
||||
```
|
||||
|
||||
## Memory footprint
|
||||
With too many bots the memory footprint wil grow rather quickly, even with good latency numbers
|
||||
the bots can get out of sync with the world. Find good balance between your hardware and the
|
||||
configured amount of (random/alt) bots.
|
||||
|
||||
Until fixed if ever, restart your server every x hours depending on your configuration, hardware, player base/usage.
|
||||
|
||||
e.g. with a cronjob
|
||||
..
|
||||
Loading…
x
Reference in New Issue
Block a user