diff --git a/Playerbot-Configuration.md b/Playerbot-Configuration.md index 02e8f0e..028ad58 100644 --- a/Playerbot-Configuration.md +++ b/Playerbot-Configuration.md @@ -1,3 +1,88 @@ +## Random bots activity profiles. +Before going into the configuration options we need explain the logic around it first. 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 is active or not the order explain. + +``` +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 zone (e.g. Mulgore, Ashenvale etc) has a real player (aka all bots will be active in your zone) +5. ALWAYS ACTIVE: When the bots is a member of a guild with real players (aka all bots on your guild will always be active) +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 (aka all bots will be active within the radius of 300 yards) +11. ALWAYS ACTIVE: When bot is a friend of a real player (aka all ur bots friends will always be active) +12. ALWAYS ACTIVE: When bot has more then 10 other bots within the sightDistance (force them to spread out) +``` +These rules will always be applied regardless what value you have configured 'AiPlayerbot.BotActiveAlone'. + +All remaining situations e.g. bots in maps with no 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 'AiPlayerbot.botActiveAloneSmartScale' basically only adds to determine the activity percentages +based on the latency relative to the configured value of 'AiPlayerbot.BotActiveAlone' and only when in +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. +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 +``` + +#### How to determine whether your config/hardware are good or not +Use the command '.server info' to see your latencies. The general latencites should be under 70-80 or lower and the percentiles maxed out around 100, 120, 150. If higher change profile or bot count. + +Another way is to verify how quick a how executes your command. It should be pretty much instant if not to should choose a different profile +or lower your bot amount. + +If you use the approve performance checks it might lead into strange and incorrect behaviours and huge amount of memory footprint growth in a short time. + +##### example +I use profile 1 with 5000 bots on amd 5700x (6 cores), linux, 20GB with the following result: + +![image](https://github.com/user-attachments/assets/6760feaf-3dc7-4d7a-9534-d4183ff43284) + + ## Recommended hardware ``` Memory