Jump to content

MULTIbalancer [1.1.6.0] 30-MAR-2015 + BFHL


Recommended Posts

Originally Posted by PapaCharlie9*:
 



On that page, click on "ZIP" to download. Extract only the MULTIbalancer.cs file, shutdown (Quit) Procon, copy/upload MULTIbalancer.cs into your procon/Plugins/BF3 folder and/or your procon/Plugins/BF4 folder and/or your procon/Plugins/BFHL folder, then restart Procon. If you are using a layer, all of this must happen on the layer host, not on your local client.

NOTE: This plugin requires Procon 1.5.1.1 or later!

NOTE: This plugin will not work with OFFICIAL MODE servers. The admin.movePlayer command is disabled in OFFICIAL mode.



Multi-Balancer & Unstacker, including SQDM



For BF3 and BF4 and BFHL, this plugin does live round team balancing and unstacking for all game modes, including Squad Deathmatch (SQDM).

NOTICE


This plugin is free to use, forever. Support is provided on a voluntary basic, when time is available, by the author and the user community. Use at your own risk, no guarantees are made or implied (complete notice text is in the source code). Some of the code in this plugin (Battlelog and BattlelogCache code, plugin framework, other odds & ends) was directly derived from Insane Limits by micovery. Inspiration for the plugin settings came from TrueBalancer by Panther and all of the members of the design discussion group, some of whom are listed above in the acknowledgments.

Section 7 of settings is intentionally not defined.

Description


This plugin performs several automated operations:
  • Team balancing for all modes
  • Unstacking a stacked team
  • Unswitching players who team switch

This plugin only moves players when they die. No players are killed by admin to be moved, with the single exception of players who attempt to switch teams when team switching is not allowed -- those players may be admin killed before being moved back to their original team. This plugin also monitors new player joins and if the game server would assign a new player to the wrong team (a team with 30 players when another team only has 27 players), the plugin will reassign the player to the team that needs players for balance. This all happens before a player spawns, so they will not be aware that they were reassigned.

Quick Start
Don't want to spend a lot of time learning all of the settings for this plugin? Just follow these quick start steps:

1) Select a Preset at the top of the plugin settings (NOTE: In all of the following presets, references to 'unstack teams' depend on the Enable Unstacking setting -- leave that set to False unless you are absolutely sure you want to use unstacking):
Standard: Autobalance and unstack teams, good for most server configurations
Aggressive: Autobalance and unstack teams quickly, moving lots of players in a short amount of time
Passive: Autobalance and unstack teams slowly, moving few players over a long period of time
Intensify: Focus on keeping teams evenly matched for a level playing field and an intense game
Retain: Focus on reducing rage quitting by keeping teams balanced, but refrain from too many player moves
BalanceOnly: Disable team unstacking, only move for autobalance
UnstackOnly: Disable autobalancing, only move to unstack teams
None: Custom plugin settings (this is automatically selected if you change settings controlled by Presets)

Standard, Retain, and BalanceOnly are recommended to admins new to this plugin. Aggressive and Intensify are not recommended for admins new to this plugin.

2) Review plugin section 5. Messages and change any messages you don't like.

3) Find your game mode in Section 8 and review the settings. Adjust the Max Players and Definition Of ... settings as needed. Or, Enable Settings Wizard in Section 0, fill in the form that is displayed, and then change Apply Settings Changes to True, to have the plugin set up your per-mode settings automatically.

4) That's it! You are good to go.

FAQ

Go here for Frequently Asked Questions and more in-depth descriptions of settings and how to use them*. The descriptions below are intended as quick reference material, to remind you about things you already understand. For more in-depth understanding of what they mean and how they work, see the FAQ or ask questions in this thread.

Concepts



This plugin recognizes that a game round has a natural pattern and flow that depends on several factors. Play during the very beginning of a round is different from the very end. Play when the server is nearly empty is different from when the server is nearly full. The natural flow of a round of Conquest is very different from the flow of a game of Rush. Strong (good) players are not interchangeable with weak (bad) players. So with all these differences, how can one set of settings cover all of those different situations? They can't. So this plugin allows you to configure different settings for each combination of factors. The primary factors and concepts are described in the sections that follow.

Round Phase
To configure the factor of time, each round is divided into three time phases: Early, Mid (for Mid-phase), and Late. You define the phase based on ticket counts (or in the case of CTF or Carrier Assault, time in minutes) from the start of the round and the end of the round. You may define different settings for different modes, e.g., for Conquest Large you might define the early phase to be the first 200 tickets after the round starts, but for Team Deathmatch you might set early phase to be after the first 25 kills.

Population
To configure the factor of number of players, each round is divivded into three population levels: Low, Medium, and High. You define the population level based on total number of players in the server.

Game Mode
To configure the factor of game mode, each game mode is grouped into similar per-mode settings. For example, Conquest Large and Conquest Assault Large are grouped together as Conquest Large.

Exclusions
There are certain types of players that should never be moved for autobalance. You define those players with exclusions. For example, you can arrange for everyone on your reserved slots lists to be whitelisted so that they are ignored by this plugin.

Balance Speed
The aggressiveness with which the balancer selects players to move is controled by the speed names:

Stop: No balancing, no players are selected to move
Slow: Few players are selected to move, all exclusions are applied, whether they are enabled by you or not
Fast: Many players are selected to move, no exclusions are applied, whether they are enabled by you or not
Adaptive: Starts out slow; if teams remain unbalanced, gradually selects more players to move; if teams are still unbalanced after Seconds Until Adaptive Speed Becomes Fast, many players are selected, etc.
Unstack: Do unstacking only, no balancing. May swap players when teams are not in balance.

Definition of Strong
To configure the selection of strong players and weak players, you choose a definition for strong determined from:
  • Round Score
  • Round SPM Battlelog SPM
  • Round Kills
  • Round KDR Battlelog KDR
  • Player Rank
  • Round KPM Battlelog KPM

Ticket Percentage (Ratio)
The ticket percentage ratio is calculated by taking the tickets of the winning team and dividing them by the tickets of the losing team, expressed as a percentage. For example, if the winning team has 550 tickets and the losing team has 500 tickets, the ticket percentage ratio is 110. This ratio is used to determine when teams are stacked. If the ticket percentage ratio exceeds the level that you set, unstacking swaps will begin.

Unstacking
Stacking refers to one team having more strong players than the other team. The result of stacked teams is lopsided wins and usually rage quitting from the losing team or attempts to switch to the winning team. If unstacking is enabled and the Ticket Percentage (Ratio) is exceeded, the plugin will attempt to unstack teams. To unstack teams, a strong player is selected from the winning team and is moved to the losing team. Then, a weak player is selected from the losing team and moved to the winning team. This is repeated until the round ends, or teams become unbalanced, or Max Unstacking Swaps Per Round is reached, whichever comes first.

Merge Files
A merge file is an external file that you can use to specify a list setting, such as Whitelist. An external file is convenient if you have long lists or if you share the same list across multiple game servers. The file is specified as filename.ext on the first line of the list, with no whitespace. The contents of the file should be UTF-8 text, using the same contents and syntax as the list it will be merged with. The file should be stored in the procon/Configs folder. You can store as many differently named files there as you want, but each list can only use one merge file at a time.

Settings



Each setting is defined below. Settings are grouped into sections.

0 - Presets
See the Quick Start section above.

Enable Unstacking: True or False, default False. Enables the per-mode unstacking features described in sections 3 and 8. Setting to False will not reset individual unstacking settings, it just disables the unstacking-related settings from operating and hides per-mode settings that are relevant only to unstacking. Setting to True enables all of your untacking-related settings.

Enable Settings Wizard: True or False, default False. If set to True, the plugin will automatically change your per-mode settings based on some basic information that you provide. Several additional settings are displayed. The first is Which Mode. Select the mode you want to apply changes to. Fill in the rest of the settings below Which Mode; they are self-explanatory. When you are done, change the Apply Settings Changes from False to True. The changes will be applied, information for review will be displayed in the plugin.log window, and the wizard will set itself to False and hide itself again.

1 - Settings
These are general settings.

Debug Level: Number from 0 to 9, default 2. Sets the amount of debug messages sent to plugin.log. Status messages for the state of the plugin may be seen at level 4 or higher. Complete details for operation of the plugin may be seen at level 7 or higher. When a problem with the plugin needs to be diagnosed, level 7 will often be required. Setting the level to 0 turns off all logging messages.

Maximum Server Size: Number from 8 to 70, default 64. Maximum number of slots on your game server, regardless of game mode.

Enable Battlelog Requests: True or False, default True. Enables making requests to Battlelog and uses BattlelogCache if available. Used to obtain clan tag for players and optionally, overview stats SPM, KDR, and KPM.

Which Battlelog Stats: ClanTagOnly, AllTime, or Reset. Selects the type of Battlelog stats you want to use, clan tag only, All-Time or Reset stats.

Maximum Request Rate: Number from 1 to 15, default 10. If Enable Battlelog Requests is set to True, defines the maximum number of Battlelog requests that are sent every 20 seconds.

Wait Timeout: Number from 15 to 90, default 30. If Enable Battlelog Requests is set to True, defines the maximum number of seconds to wait for a reply from Battlelog or BattlelogCache before giving up.

Unlimited Team Switching During First Minutes Of Round: Number greater than or equal to 0, default 5. Starting from the beginning of the round, this is the number of minutes that players are allowed to switch teams without restriction. After this time is expired, the plugin will prevent team switching that unbalances or stacks teams. The idea is to enable friends who were split up during the previous round due to autobalancing or unstacking to regroup so that they can play together this round. However, players who switch teams during this period are not excluded from being moved for autobalance or unstacking later in the round, unless some other exclusion applies them.

Seconds Until Adaptive Speed Becomes Fast: Number of seconds greater than or equal to 30, default 180. If the autobalance speed is Adaptive and the autobalancer has been active for more than the specified number of seconds, the speed will be forced to Fast. This insures that teams don't remain unbalanced too long if Adaptive speed is not sufficient to move players.

Reassign New Players: True or False, default True. This is a trade-off setting, each choice has something good and something bad associated with it. If set to True, new players joining the server are reassigned to the team that needs help before the player's first spawn -- they will not be aware that they were moved, but this may cancel a Battlelog Join on Friend that the player wanted. If set to False, Join on Friend will be respected, but your server may have unbalanced teams for a longer period of time.

Enable Admin Kill For Fast Balance: True or False, default False. Enables forced moves using admin kills when teams are grossly unbalanced. All exclusions are ignored except for On Whitelist and Minutes After Being Moved. If the setting is True and teams are 4 or more players apart (3 if population is Low) and the speed is not Stop, live players will be selected and admin killed and then moved. The selection of who is forced to move is controlled by Select Fast Balance By.

Select Fast Balance By: Newest, Weakest or Random; default Newest. Only visible if Enable Admin Kill For Fast Balance is True. Determines which live player is force moved for Fast balance. Newest is the player that has been in the server the least amount of time. Weakest is the player with the lowest value as defined by per-mode Determine Strong Players By, e.g., for RoundScore the player with the lowest point score is selected. Random is a player selected at random.

Enable In-Game Commands: True or False, default True. Enable @mb in-game commands. Most commands allow admins to change settings in the plugin without needing to leave the game. See the plugin thread for details or type @mb help in-game.

Enable Whitelisting Of Reserved Slots List: True or False, default True. Treats the reserved slots list as if it were added to the specified Whitelist.

Whitelist: List of player names (without clan tags), clan tags (by themselves), or EA GUIDs, one per line, in any combination. The first item may also specify a file to merge into the list, e.g., . See Merge Files above. If On Whitelist is enabled or the balance speed is Slow, any players on the whitelist are completely excluded from being moved by the plugin (except for between-round scrambling).

Each line of the Whitelist may include one more more option codes that control which exclusions are applied. The codes MUST come after the name/tag/guid and must be separated by spaces. No codes means all options are applied. Codes can only be specified directly in the plugin setting or in a merge file, they cannot be specified in the reserved slots list if Enable Whitelisting Of Reserved Slots List is True. The codes are described in the following table:

B: Exclude from balancing moves
U: Exclude from unstacking moves
S: Exclude from unswitching (allow to switch teams freely)
D: Exclude from Disperse Evenly List or Disperse Evenly By Clan Players moves
R: Exclude from Disperse Evenly By Rank >= moves

Example list with the name of one player, tag of a clan, and GUID of another player. The player name has the code for exclusion from unstacking and the code for exclusion from rank dispersal, and the clan tag has the code for exclusion from unswitching. The GUID has no codes, which means all exclusions apply:
Code:

  PapaCharlie9 U R
  LGN S
  EA_20D5B089E734F589B1517C8069A37E28

Friends List: List of player names (without clan tags), clan tags (by themselves), or EA GUIDs, two or more per line separated by spaces, in any combination. The first item may also specify a file to merge into the list, e.g., . See Merge Files above. Players that are friends with each other are specified by a friends sub-list. A sub-list is a single line of the Friends List with two or more names, tags or guids. No literal item may be duplicated anywhere in the list, but a player's clan tag may be on one sub-list and his name on another and his guid on a third. See On Friends List and Keep Friends In Same Team. Example of two separate friends sub-lists:
Code:

  PapaCharlie9 FTB C2C
  Tom Dick Harry EA_20D5B089E734F589B1517C8069A37E28

Disperse Evenly List: List of player names (without clan tags), clan tags (by themselves), or EA GUIDs, one per line (except for groups, see below) separated by spaces, in any combination. Players found on this list will be split up and moved so that they are evenly dispersed across teams. The first item may also specify a file to merge into the list, e.g., . See Merge Files above. Groups of players, tags and guids may be specified to insure that they are always balanced to the opposite team from other specified groups. For example, if clan tag ABC is in group 1 and clan tag XYZ in is group 2, all players with clan tag ABC will eventually be balanced to one team and all players with clan tag XYZ will eventually be balanced to the other team. Groups 3 and 4 are used only for SQDM mode. A group is specified by starting an item in the list with a single digit, from 1 to 4, followed by a space, followed by a space separated list of names, tags or guids. Individual items and groups may be specified in any combination and any order in the list, though duplicating any item is an error. Here is an example list with individual players 'Joe' and 'Mary' and groups 1 and 2:
Code:

  1 ABC LGN PapaCharlie9
  Joe
  2 XYZ EA_20D5B089E734F589B1517C8069A37E28
  Mary

2 - Exclusions
These settings define which players should be excluded from being moved for balance or unstacking. Changing a preset may overwrite the value of one or more of these settings. Changing one of these settings may change the value of the Preset, usually to None, to indicate a custom setting.

On Whitelist: True or False, default True. If True, the Whitelist is used to exclude players. If False, the Whitelist is ignored.

On Friends List: True or False, default False. If True, the Friends List is used to exclude players. If False, the Friends List is ignored.

Apply Friends List To Team: True or False, default False. Only visible if On Friends List is True. If True, if 5 or more friends are on the same team, they will not be moved, regardless of which squads they are in. If False, if 2 or more friends are in the same squad, they will not be moved.

Top Scorers: True or False, default True. If True, the top 1, 2, or 3 players (depending on server population and mode) on each team are excluded from moves for balancing or unstacking. This is to reduce the whining and QQing when a team loses their top players to autobalancing.

Same Clan Tags In Squad: True or False, default True. If True, a player will be excluded from being moved if they are a member of a squad (or team, in the case of SQDM) that has at least one other player in it with the same clan tag.

Same Clan Tags In Team: True or False, default False. If True, a player will be excluded from being moved for balancing or unstacking if they are a member of a team that has 5 or more players with the same clan tag, regardless of which squad they are in. If False, no special treatment for teams is applied, but Same Clan Tags In Squad may apply.

Same Clan Tags For Rank Dispersal: True or False, default False. If True, dispersal by per-mode Disperse Evenly By Rank >= will not be applied if the player has a clan tag that at least one other player on the same team has. This option is a special case of Lenient Rank Dispersal, enabling just one specific exclusion to be applied leniently.

Lenient Rank Dispersal: True or False, default False. If False, dispersal by per-mode Disperse Evenly By Rank >= only will by applied strictly, ignoring all exclusions except whitelisting. Teams may get unbalanced, but ranked players will be evenly dispersed. If True, dispersal by per-mode setting of ranked players will respect most exclusions, including Minutes After Being Moved and Rout Percentage. Teams will be kept in balance, but ranked players may not be dispersed evenly.

Minutes After Joining: Number greater than or equal to 0, default 5. After joining the server, a player is excluded from being moved for balance or unstacking for this number of minutes. The player is also allowed to switch teams freely during this time. Set to 0 to disable. Keep in mind that most joining players were already assigned to the team with the least players. They have already 'paid their dues'.

Minutes After Being Moved: Number greater than or equal to 0, default 90. After being moved for balance or unstacking, a player is excluded from being moved again for the specified number of minutes. Set to 0 to disable.

3 - Round Phase and Population Settings
These settings control balancing and unstacking, depending on the round phase and server population.
For each phase, there are three unstacking settings for server population: Low, Medium and High, by number of players. Each number is the ticket percentage ratio that triggers unstacking for each combination of phase and population. Setting the value to 0 disables team unstacking for that combination. If the number is not 0, if the ratio of the winning team's tickets to the losing teams tickets is equal to or greater than the ticket percentage ratio specified, unstacking will be activated.

Example: for the Ticket Percentage To Unstack setting, there are three phases, Early, Mid and Late. For each phase, the value is a list of 3 number, either 0 or greater than 100 and less than 5000, one for each of the population levels of Low, Medium, and High, respectively:
Code:

    Early Phase: Ticket Percentage To Unstack        0, 120, 120
    Mid Phase: Ticket Percentage To Unstack          0, 120, 120
    Late Phase: Ticket Percentage To Unstack         0, 0, 0

This means that in the Early or Mid phases when the population is Low, there will be no unstacking (0 always means disable). Also, in the Late Phase for any population level, there will be no unstacking. For any other combination, such as Mid Phase with High population, teams will be unstacked when the ratio of winning tickets to losing tickets is 120% or more.

For each phase, there are also three balance speed names for server population: Low, Medium and High, by number of players. These speeds control how aggressively players are selected for moving by the autobalancer. Enter them as speed names separated by commas.

Example: for the Balance Speed setting, there are three phases, Early, Mid and Late. For each phase, the value is a list of 3 speed names, one for each of the population levels of Low, Medium, and High, respectively:
Code:

    Early Phase: Balance Speed        Slow, Adaptive, Adaptive
    Mid Phase: Balance Speed          Slow, Adaptive, Adaptive
    Late Phase: Balance speed         Stop, Stop, Stop

This means that in the Early or Mid phases when the population is Low, the balance speed will be Slow. In the Late Phase for any population level, balancing will be disabled. For any other combination, such as Mid Phase with High population, balancing will use an Adaptive speed.

If you forget the names of the balance speeds, click on the Spelling Of Speed Names Reminder setting. This will display all of the balance speed names for you.

4 - Scrambler
These settings define options for between-round scrambling of teams. The setting Enable Scrambler is a per-mode setting, which allows you to decide on a mode-by-mode basis whether to use scrambling between rounds or not. See the per-mode settings in Section 8 below for more details. Note that whitelisted players are not excluded from scrambling and that scrambling is not possible with SQDM.

Only By Command: True or False, default False. If True, Only On New Maps and Only On Final Ticket Percentage >= settings are ignored/hidden and scrambles will happen only after an admin types the mb scramble on command into chat.

Only On New Maps: True or False, default True. If True, scrambles will happen only after the last round of a map. For example, if a map has 2 rounds, there will be no scramble after round 1, only after round 2. If False, scrambling will be attempted at the end of every round.

Only On Final Ticket Percentage >=: Number greater than 100 or equal to 0, default 120. This is the ratio between the winning and losing teams final ticket counts at the end of the round. In count-down modes like Conquest, this is the ratio of the difference between the maximum starting tickets and the final ticket count. For example, on a 1000 ticket server, if the final ticket counts are 0/250, the ratio is (1000-0)/(1000-250)=1000/750=133%. Since that is greater than 120, scrambling would be done. For count-up modes like TDM, the ratio is final ticket values. If this value is set to 0, scrambling will occur regardless of final ticket counts.

Scramble By: One of the values defined in Definition Of Strong above. Determines how strong vs. weak players are chosen for scrambling.

Keep Squads Together: True or False, default True. If True, during scrambling, an attempt is made to keep players in a squad together so that they are moved as a squad. This is not always possible and sometimes squads may be split up even when this setting is True. The squad ID may change, e.g., if the players were originally in Alpha, they may end up in Echo on the other team.

Keep Clan Tags In Same Team: True or False, default True. Only visible if Keep Squads Together is set to False. If True, players with the same clan tags will be scrambled to the same team. Players in a squad with other players with the same clan tag will be kept together, if possible. Players in the same squad that do not have the same tag may get moved to another squad. The squad ID may change, e.g., if the players were originally in Hotel, they may end up in Charlie on the other team.

Keep Friends In Same Team: True or False, default True. Only visible if Keep Squads Together is set to False and if Keep Clan Tags In Same Team is set to True. If True, players in the same friends sub-list in the Friends List will be scrambled to the same team. Players in a squad with other friends will be kept together, if possible. Players in the same squad that are not friends may get moved to another squad. The squad ID may change, e.g., if the players were originally in Hotel, they may end up in Charlie on the other team.

Divide By: None, ClanTag, or DispersalGroup. Specifies how players should be divided into teams during scrambling. ClanTag divides all players evenly between the two teams if they have the clan tag specified in Clan Tag To Divide By. Only one tag may be specified. DispersalGroup divides players to their assigned dispersal group, if they are in one of the two groups defined in the Disperse Evenly List, if any.

Delay Seconds: Number of seconds greater than or equal to 0 and less than or equal to 70, default 30. Number of seconds to wait after the round ends before doing the scramble. If done too soon, many players may leave after the scramble, resulting in wildly unequal teams. If done too late, the next level may load and the game server will swap players to opposite teams, interfering with the scramble in progress, which may result in wildly unequal teams.

5 - Messages
These settings define all of the chat and yell messages that are sent to players when various actions are taken by the plugin. All of the messages are in pairs, one for chat, one for yell. If both the chat and the yell messages are defined and Quiet Mode is not set to True, both will be sent at the same time. The message setting descriptions apply to both chat and yell. To disable a chat message for a specific actcion, delete the message and leave it empty. To disable theyell message for a specific action, delete the message and leave it empty.

Several substitution macros are defined. You may use them in either chat or yell messages:

%name%: player name
%tag%: player clan tag
%fromTeam%: team the player is currently on, as 'US' or 'RU', or 'Alpha', 'Bravo', 'Charlie', or 'Delta' for SQDM, or 'T1:US/RU' or 'T2:CN/RU' for BF4.
%toTeam%: team the plugin will move the player to, same team name substitutions as for %fromTeam%
%reason%: ONLY APPLIES TO BAD TEAM SWITCH: reason for switching the player back, may contain other replacements
%technicalDetails%: THIS IS PROVIDED BY THE PLUGIN: Details about how the autobalancer is preparing to balance or why it is taking so long

Quiet Mode: True or False, default False. If False, chat messages are sent to all players and yells are sent to the player being moved. If True, chat and yell messages are only sent to the player being moved.

Yell Duration Seconds: A number greater than 0 and less than or equal to 20, or 0. If set to 0, all yells are disabled, even if they have non-empty messages. All yells have the same duration. This duration also controls the delay between when a player is warned and when the are unswitched (see Section 6).

Moved For Balance: Message sent after a player is moved for balance.

Moved To Unstack: Message sent after a player is moved to unstack teams.

Detected Bad Team Switch: Message sent after a player tries to make a forbidden team switch if Enable Immediate Unswitch is set to False (see Section 6 below) or mode is Squad Deathmatch. The message is sent before the player is admin killed and sent back to his original team.

Bad Because: Moved By Balancer: Replacement for %reason% if the player tried to move to a different team from the one the plugin have moved them to for balance or unstacking.

Bad Because: Winning Team: Replacement for %reason% if the player tried to move to the winning team.

Bad Because: Biggest Team: Replacement for %reason% if the player tried to move to the biggest team.

Bad Because: Rank: Replacement for %reason% if the player has Rank greater than or equal to the per-mode Disperse Evenly By Rank setting.

Bad Because: Clan: Replacement for %reason% if the player has the same clan tag as other players for Disperse Evenly By Clan Players setting.

Bad Because: Dispersal List: Replacement for %reason% if the player is a member of the Disperse Evenly List.

Detected Good Team Switch: Message sent after a player switches from the winning team to the losing team, or from the biggest team to the smallest team. There is no follow-up message, this is the only one sent.

After Unswitching: Message sent after a player is killed by admin and moved back to the team he was assigned to. This message is sent after the Detected Bad Team Switch message.

Teams Will Be Scrambled: BF4 only, chat only. Message sent after the round ends if scrambling is enabled and teams require scrambling for the next round.

Autobalancing: Message sent when teams are out of balance and the balancer is waiting for the right conditions to move a player. The %technicalDetails% give further details about what the balancer is doing, like waiting for a new player to join or waiting for a player to die.

6 - Unswitcher
This section controls the unswitcher. Every time a player tries to switch to a different team, the unswitcher checks if the switch is allowed or forbidden. If forbidden, he will be moved back by the plugin (see Enable Immediate Unswitch for details about how). The possible values are Always, which means do not allow (always forbid) this type of team switching, Never, which means allow team switching of this type, and LatePhaseOnly, which means allow team switching of this type until Late Phase, then no longer allow it (forbid it). Note that setting any of the Forbid ... settings to Never will reduce the effectiveness of the balancer and unstacker.

Forbid Switching After Autobalance: Always, Never, or LatePhaseOnly, default Always. Controls team switching after being moved to a different team for balance or unstacking. This setting forbids moved players from moving back to their original team.

Forbid Switching To Winning Team: Always, Never, or LatePhaseOnly, default Always. Controls switching to the winning team.

Forbid Switch To Biggest Team: Always, Never, or LatePhaseOnly, default Always. Contorls switching to the biggest team.

Forbid Switch After Dispersal: Always, Never, or LatePhaseOnly, default Always. Controls team switching after being moved to a different team due to Disperse Evenly By Rank, Disperse Evenly By Clan Players or the Disperse Evenly List. This setting forbids them from moving back to their original team.

Enable Immediate Unswitch: True or False, default True. If True, if a player tries to make a forbidden team switch, the plugin will immediately move them back without any warning. They will only see the After Unswitching message(s). If False, the plugin will wait until the player spawns, it will then post the Detected Bad Team Switch message(s), it will wait Yell Duration Seconds seconds, then it will admin kill the player and move him back. NOTE: Does not apply to SQDM. SQDM is always treated as this were set to False.

7 - TBD
There is no section 7. This section is reserved for future use.

8 - Settings for ... (each game mode)
These are the per-mode settings, used to define population and phase levels for a round and other settings specific to a game mode. Some modes have settings that no other modes have, other modes have fewer settings than most other modes. Each section is structured similarly. One common section is described in detail below and applies to several modes. Modes that have unique settings are then listed separately. The game modes are grouped as follows:

Adaptive:
Conq Small, Dom, Scav: BF3: Conquest Small, Conquest Assault Small #1 and #2, Conquest Domination, and Scavenger
Conquest Large: Conquest Large and BF3:Conquest Assault Large
Conquest Small: BF4: same as BF3 Conq Small, Dom, Scav
CTF: Capture The Flag, uses minutes to define phase instead of tickets
Defuse: BF4: standard settings
Domination: BF4: same as BF3 Conq Small, Dom, Scav
DT Chain Link: BF4: Similar to Domination settings
Gun Master: BF3: Only has a few settings
NS Carrier Large: Carrier Assault Large, uses minutes to define phase and score to define ratio difference instead of tickets
NS Carrier Small: Carrier Assault Small, uses minutes to define phase and score to define ratio difference instead of tickets
Obliteration: BF4: TBD
Rush: Has unique settings shared with Squad Rush and no other modes
Squad Deathmatch: Standard settings, similar to Conquest, except that unstacking is disabled (default 0)
Squad Rush: BF3: Has unique settings shared with Rush and no other modes
Superiority: Air and Tank Superiority
Team Deathmatch: TDM and TDM Close Quarters, standard settings, similar to Conquest
Unknown or New Mode: Generic settings for any new mode that gets introduced before this plugin gets updated

These are the settings that are common to most modes:

Max Players: Number greater than or equal to 8 and less than or equal to Maximum Server Size. Some modes might be set up in UMM or Adaptive Server Size or other plugins with a lower maximum than the server maximum. If you set a lower value in your server settings or in a plugin, set the same setting here. This is important for calculating population size correctly.

Rout Percentage: Number greater than or equal to 101 and less than or equal to 100000, or 0, default is 0. When one team is so far behind another team (called a 'rout'), it is unfair to move strong or dispersal players to the losing team. Use this setting to define when to stop moving strong or dispersal players. For example, if set to 200 for Conquest, the losing team is routed when the winner has at least twice as many tickets as the loser, e.g., 301 vs 150. Movement of strong players for balance or unstacking will be suspended. In the case of dispersal, the suspension applies to both strong and weak players and Enable Strict Dispersal must be False, or if generally strict except for rank dispersal, Lenient Rank Dispersal must be True.

Check Team Stacking After First Minutes: Number greater than or equal to 0. From the start of the round, this setting is the number of minutes to wait before activating unstacking. If set to 0, no unstacking will occur for this mode.

Max Unstacking Swaps Per Round: Number greater than or equal to 0. To prevent the plugin from swapping every player on every team for unstacking, a maximum per round is set here. If set to 0, no unstacking will occur for this mode.

Number Of Swaps Per Group: Number greater than or equal to 0 and less than or equal to Max Unstacking Swaps Per Round, ideally an integral factor, e.g., if Max Unstacking Swaps Per Round is 12, Number Of Swaps Per Group may be 1, 2, 3, 4, 6 or 12. During unstacking, swaps are done as quickly as possible, up to this number. Once this number of swaps is reached, the Delay Seconds Between Swap Groups delay is applied before further swaps are attempted.

Delay Seconds Between Swap Groups: Number greater than or equal to 60. After a group of unstacking swaps, wait this number of seconds before doing another group of unstacking swaps.

Max Unstacking Ticket Difference: Number greater than or equal to 0. If the difference in tickets is greater than the number specified, unstacking will be disabled. Set to 0 to allow any difference for unstacking.

Enable Unstacking By Player Stats: True or False, default False. If set to True, the ratio of average player stats across each team is used instead of the ticket ratio for determining if unstacking is needed. You choose the stat to use with Determine Strong Players By. For example, if Determine Strong Players By is RoundKills and the average of team 1 kills per player is 13 and the average for team 2 is 10, the ratio of 13/10 is 130%. If the unstacking ratio is 120%, teams will be unstacked.

Determine Strong Players By: Choice based on method. The setting defines how strong players are determined. Any player that is not a strong player is a weak player. See the Definition of Strong section above for the list of settings. All players in a single team are sorted by the specified definition. Any player above the median position after sorting is considered strong. For example, suppose there are 31 players on a team and this setting is set to RoundScore and after sorting, the median is position #16. If this player is position #7, he is considered strong. If his position is #16 or #17, he is considered weak.

Percent Of Top Of Team Is Strong: Number greater than or equal to 5 and less than or equal to 50, or 0. After sorting a team with the Determine Strong Players By choice, this percentage determines the portion of the top players to define as strong. Default is 50 so that any player above the median counts as strong. CAUTION: This setting is changed when the Preset is changed, previous values are overwritten for all modes.

Only Move Weak Players: True or False, default True. If set to True, only weak players will be moved for balancing.

Disperse Evenly By Rank >=: Number greater than or equal to 0 and less than or equal to 145, default 0. Any players with this absolute rank (Colonel 100 is 145) or higher will be dispersed evenly across teams. This is useful to insure that Colonel 100 ranked players don't all stack on one team. Set to 0 to disable.

Disperse Evenly By Clan Players >=: Number greater than or equal to 4 and less than or equal to 40, default 0. If the number of players with the same clan tag is greater than or equal to this number, the players with this same clan tag will be dispersed evenly across teams. This setting overrides Same Clan Tag ... exclusions. Set to 0 to disable.

Enable Disperse Evenly List: True or False, default False. If set to true, the players are matched against the Disperse Evenly List and any that match will be dispersed evenly across teams. This is useful to insure that certain clans or groups of players don't always dominate whatever team they are not on.

Enable Strict Dispersal: True or False, default True. Only visible if Disperse Evenly By Clan Players or Enable Disperse Evenly List is set to True. If set to True, players will be moved for dispersal, ignoring all exclusions except whitelisting. This may result in wildly unbalanced teams, but absolutely guarantees that players are dispersed. If set to False, players will be moved for dispersal, but many exclusions will apply, such as Same Clan Tags In Squad, Minutes After Being Moved and Rout Percentage. The teams will be kept in balance, but players may not be dispersed evenly.

Enable Low Population Adjustments: True or False, default False. If set to True, when the population of a server is low, all Forbid ... settings in the Unswitcher section are treated as Never (meaning, team switching is allowed in all circumstances), all disperse evenly settings, such as Disperse Evenly By Rank >= are ignored, the maximum difference between team counts that is considered balanced is reduced to 1, and the minimum number of players required for balancing is reduced to 4, until the population rises above your Definition Of Low Population For Players setting.

Definition Of High Population For Players >=: Number greater than or equal to 0 and less than or equal to Max Players. This is where you define the High population level. If the total number of players in the server is greater than or equal to this number, population is High.

Definition Of Low Population For Players : Number greater than or equal to 0 and less than or equal to Max Players. This is where you define the Low population level. If the total number of players in the server is less than or equal to this number, population is Low. If the total number is between the definition of High and Low, it is Medium.

Definition Of Early Phase As Tickets From Start: Number greater than or equal to 0. This is where you define the Early phase, as tickets from the start of the round. For example, if your round starts with 1500 tickets and you set this to 300, as long as the ticket level for all teams is greater than or equal to 1500-300=1200, the phase is Early. Set to 0 to disable Early phase.

Definition Of Late Phase As Tickets From End: Number greater than or equal to 0. This is where you define the Late phase, as tickets from the end of the round. For example, if you set this to 300 and at least one team in Conquest has less than 300 tickets less, the phase is Late. If the ticket level of both teams is between the Early and Late settings, the phase is Mid. Set to 0 to disable Late phase.

Enable Scrambler: True or False, default False, not visible for SQDM. If set to True, between-round scrambling of teams will be attempted for rounds played in this mode, depending on the settings in Section 5.

...*

9 - Debugging
These settings are used for debugging problems with the plugin.

Show Command In Log: Special commands may be typed in this text area to display information in plugin.log. Type help into the text field and press Enter (type a return). A list of commands will be written to plugin.log.

Log Chat: True or False, default True. If set to True, all chat messages sent by the plugin will be logged in chat.log.

Enable Logging Only Mode: True or False, default False. If set to True, the plugin will only log messages. No move, chat or yell commands will be sent to the game server. If set to False, the plugin will operate normally.

Enable External Logging: True or False, default False. If set to True, plugin.log messages will also be sent to an external log file in Procon's Log folder, by game server connection. See External Log Suffix.

External Log Suffix: Suffix for file name used for the external log file, default is _mb.log. The path to procon/Logs/ip_port is used to write a log file with the current date in YYYYMMDD format prepended to the suffix you supply, for example, 20130515_mb.log.

Development



This plugin is an open source project hosted on GitHub.com. The repo is located at
https://github.com/PapaCharlie9/multi-balancer and the master branch is used for public distributions. See the Tags tab for the latest ZIP distribution. If you would like to offer bug fixes or new features, feel free to fork the repo and submit pull requests. Post questions and problem reports in the forum Plugin thread.

Edited by maxdralle
* Restored post. It could be that the author is no longer active.
Link to comment
  • Replies 2.4k
  • Created
  • Last Reply

Top Posters In This Topic

Originally Posted by PapaCharlie9*:

 

NOTE: This plugin requires Procon 1.5.1.1 or later!

 

NOTE: This plugin will not work with OFFICIAL MODE servers. The admin.movePlayer command is disabled in OFFICIAL mode.

 

FAQ

 

...*.

 

Acknowledgments

This plugin would not have been possible without the help and support of these individuals and communities:

 

myrcon.com staff, [C2C]Blitz, [FTB]guapoloko, [Xtra]HexaCanon, [11]EBassie, Firejack, [iAF]SDS, dyn, Jaythegreat1, ADKGamers, AgentHawk, TreeSaint, Taxez, PatPgtips, Hutchew, LumpyNutz, popbndr, tarreltje, 24Flat, [Oaks]kcuestag ... and many others

VERSION 1.1.6.0


CHANGES

* Added settings and support for BF4 Gun Master

* Added settings and support for BFHL Bounty Hunter

 

VERSION 1.1.5.0


CHANGES

 

NEW FEATURE: Initial support for Battlefield: Hardline added. NOTE: Only minimal testing has been done on a few modes, so use at your own risk. I have not updated the documentation in the plugin nor in post #1; you will not find any references to BFHL in the docs.

 

IMPORTANT: I intentionally removed support for balancing or unstacking the Rescue and Crosshair competitive modes, since those are one-life modes. It wouldn't make sense to move players to the other team when they die. Unswitching and scrambling are still enabled for those modes, however.

 

KNOWN ISSUE: As of the release patch, team scores are not reported for Blood Money, Hotwire or Heist. This means that any score based feature, like Unstacking and Scrambling, does not work properly on those modes. Follow the issue here: showthread....l=1#post118565*

 

NOTE: The inter-round delay is much shorter for BFHL, compared to BF3 and BF4. This means the proper Scrambler delay should be shorter. During tests, the delay command reported that 26 seconds (default is 50) is the recommended delay. At least for Hotwire. Other modes may need different delays. You will have to experiment.

 

OTHER CHANGES

* Fixed support for clan tag and Battlelog stats fetching

* Adjusted for new count-up modes

* Added BFHL modes to Section 8 settings

* Adjusted handling of different game versions

* BF4: Added Squad Obliteration mode (thanks, LumPenPack)

 

 

VERSION 1.1.4.0


CHANGES

 

NEW FEATURE: Added new per-mode setting Rout Percentage. A "rout" is defined as a disastrously losing battle that can't be won. This setting controls what happens when a rout is detected. If Rout Percentage is set to a value between 101 and 5000, when the ticket ratio percentage is higher than the setting, certain features of MULTIbalancer will be disabled, such as dispersal moves (if lenient settings are used) and moving strong players to the losing team, in the name of fairness. For example, if set to 200 for Conquest, the losing team is routed when the winner has at least twice as many tickets as the loser, e.g., 301 vs 150. When that happens, moving high ranked players for dispersal to either team will be suspended, as long as lenient dispersal settings are used. Also, strong players will not be moved to the losing team -- effectively the same as enabling the per-mode setting Only Move Weak Players. See the documentation in post #1 or the plugin Details tab for more info.

 

IMPROVEMENT: If per-mode Enable Low Population Adjustments is set to True, the minimum number of players in the server needed to trigger autobalancing is reduced to 4 for both normal balance and Admin Kill for Fast Balance. Also, the maximum acceptable difference between team counts is reduced to 1 for both normal balance and Admin Kill for Fast Balance, which means that as soon as teams are different by 2 or more, e.g., 3 v 1, autobalancing will be triggered.

 

IMPROVEMENT: Fixed problem with Autobalancing message being spammed, now throttled to Yell Duration Seconds + 2 seconds apart, e.g., if you set Yell Duration Seconds to 10, the Autobalancing messages will be sent at least 12 seconds apart.

 

BUG FIXES

* Fixed Scrambler so that it now respects the Whitelist

* Fixed problems with spectators and commanders not being properly handled

* Fixed Unswitcher so that it ignores commanders

* Fixed balance speed so that it automatically changes to Fast if the team count difference is 4 or more, unless it is set to Stop or Unstack only

.

.

.

.

.

older_versions:

 

 

VERSION 1.1.3.0


CHANGES

 

NOTE: Some of the additions below have not been tested yet, they are marked with (NOT TESTED). I thought it was more important to make the Chain Link settings available quickly rather than hold back the update for testing other features. You have been warned.

UPDATE: Updated to Dragon's Teeth DLC. Added DT Chain Link settings to Section 8.

 

NEW FEATURE: Due to popular demand, settings have been simplified if Enable Unstacking is set to False (default). All per-mode settings having to do with unstacking are hidden when unstacking is disabled, cutting down the size of the settings section by nearly half. The number of settings per-mode are now closer to what TrueBalancer has.

 

NEW FEATURE: Due to popular demand, new chat and yell messages have been added for Autobalancing. These messages are sent when the autobalancer notices that teams are out of balance. The messages are sent on every OnListPlayers event (just like TrueBalancer does), so the frequency will vary -- generally the more plugins you run, the more frequently the message will be sent. By default, there is no Yell message and the Chat message says "Preparing to autobalance ... (%technicalDetails%)". That default message is chosen carefully: by warning players that the plugin is "preparing" to balance, they might not get so impatient if it takes a while for balance to be restored. The %technicalDetails% explain what the autobalancer is doing. The most common replacements for %technicalDetails% are:

 

MOVE ON DEATH - normal operation, waiting for an eligible player on the larger team to die so that they can be moved.

WAITING FOR x PLAYERS TO JOIN - balancer will use joining players to fill in the smaller team, rather than moving existing players.

USING ADMIN KILL - if Enable Admin Kill For Fast Balance is set to True, this is the detail that will be shown.

If you don't want to show those details or if you don't want to show messages in English, just remove the %technicalDetails% replacement code from the message. You can change the Autobalancer message to whatever you want, but I beg you not to add "MULTIbalancer" to the message, so as to avoid anonymous hating in chat and on Battlelog/Reddit.

 

NEW FEATURE: Added a new key/property supported by UpdatePluginData or UpdatePluginJSON: "DisableUnswitcher", which is a bool value to enable/disable the automatic player unswitcher used to prevent players from switching teams. Default value is false. Setting to true disables the unswitcher. Disabling the unswitcher is useful if your plugin needs to move players while MB Unswitcher is active (not set to Never across all settings). When unswitcher is disabled, MB still keeps track of all players that switch teams, by incrementing their move counts and updating their move times, but it otherwise ignores them. Be sure you set the value back to false when you are done moving players with your plugin.

 

NEW FEATURE: By popular demand, the minimum player count of 16 players for scrambling has been reduced to 6 in two cases: 1) if the per-mode Enable Low Population Adjustments is set to True, or 2) if all three of Keep Squads Together, Keep Clan Tags In Same Team and Keep Friends In Same Team settings in Scrambler are set to False. (NOT TESTED)

 

BUG FIXES

* Fixed @mb scramble on command not working

* Fixed support for / before @mb commands to make them silent

* Fixed make Dispersals respect Slow speed as well as Stop, so that you can set Late phase to Slow and still get balancing (NOT TESTED)

 

VERSION 1.1.2.0


CHANGES

 

UPDATE: Updated to BF4 R31 maps, including Naval Strike DLC. New Section 8 settings NS Carrier Large and NS Carrier Small have been added. Carrier Assault mode uses Score instead of Tickets to determine the unstacking ratio and time in round (minutes from start or from end of round) to determine Early or Late phases.

 

NEW FEATURE: Added Scrambler setting Only By Command. If True, in-game admin command

@mb scramble on

turns on scrambling for the end of the current round (automatically turns off for the next round). In-game admin command

@mb scramble off

turns off scrambling for the end of the current round. In-game admin command

@mb scramble

shows whether scrambling will or will not happen at the end of the round. All of the above are Access: admins only, must have a Procon account that has Allowed to move players between teams and squads checked.

 

NEW FEATURE: Other plugins can call MULTIbalancer.UpdatePluginData, which expects four string parameters:

params[0] = Name of the plugin making the call

params[1] = Type of the value, one of: "bool", "int", "double", or "string"

params[2] = Key (property) name

params[3] = Value as a string (val.ToString())

NEW FEATURE: Other plugins can call MULTIbalancer.UpdatePluginJSON, which expects two string parameters:

params[0] = Name of the plugin making the call

params[1] = A JSON string with four string properties that are the same as the params passed to UpdatePluginData: {"plugin":"same as params[0]", "type":"same as params[1]", "key":"same as params[2]", "value":"same as params[3]"}

NEW FEATURE: Currently, the only key/property supported for UpdatePluginData or UpdatePluginJSON is "SetScrambleByCommand", which is a bool value to enable/disable team scrambling at the end of the current round. Has the same effect as an admin using the @mb scramble on command for "True", or @mb scramble off command for "False".

 

NEW FEATURE: Added per-mode Enable Low Population Adjustments setting. If set to True, when the population of a server is Low, all Forbid ... settings in the Unswitcher section are treated as Never (meaning, team switching is allowed in all circumstances), and all disperse evenly settings, such as Disperse Evenly By Rank >= are ignored (meaning, e.g., high ranked players won't be moved), until the population rises above your Definition Of Low Population For Players setting.

 

NEW FEATURE: Added round-over logging (chat and plugin logs) that records the winning team, map, mode, and time in round, at the end of every round.

 

NEW FEATURE: The Minutes After Joining exclusion now also applies to team switching. It only used to apply to balancing moves. This means that you can allow some time to a new player that joins the server (default 5 minutes) to switch teams to join friends without worrying about being unswitched, regardless of when he joins the round.

 

VERSION 1.1.1.0


CHANGES

 

UPDATE: Updated to BF4 R26 maps. CTF mode is now enabled for settings. New Rush maps have been added.

 

NEW FEATURE: Added per-mode setting Enable Unstacking By Player Stats. This is an alternative method for unstacking. Instead of using ticket ratio percentage, the ratio percentage of team averages for the selected player stat is used instead. For example, if teams are stacked by RoundScore or BattlelogKDR, you can use this setting to unstack teams. The percentage settings in Section 3 still apply.

 

EXPERIMENTAL FEATURE: Added per-mode setting Enable Advanced Rush Unstacking to Rush. This is an experimental setting, do not enable this unless told to do so for testing.

 

BUG FIXES

* Fixed exception in Fast Balance when no players in server

* Fixed Unswitcher going crazy if some other plugin switches the same player

 

VERSION 1.1.0.0


CHANGES

 

NEW FEATURE: Fast balance! Use the new Enable Admin Kill For Fast Balance setting to force move players if the difference in teams is 4 or more (3 or more if at or below your Low population setting). See below for details!

 

NEW FEATURE: Split up large groups of players with the same clan tag. Use the new per-mode Disperse Evenly By Clan Players >= setting to decide how large a group needs to be dispersed evenly between teams. See below for details!

 

NEW FEATURE: Decide how new players joining the server are handled with Reassign New Players. If enabled, MULTIbalancer will decide the best team to send the player to, usually the smallest team. If disabled, the game server decides. NOTE: This is a trade-off setting, each choice has something good and something bad associated with it. If set to True, new players joining the server are reassigned to the team that needs help before the player's first spawn -- they will not be aware that they were moved, but this may cancel a Battlelog Join on Friend that the player wanted. If set to False, Join on Friend will be respected, but your server may have unbalanced teams for a longer period of time.

 

BF4 IMPROVEMENT: No more "T1 team" and "T2 team", etc., in messages. MULTIbalancer now uses the correct faction names US, RU and CN for teams. It also keeps track of faction overrides correctly.

 

BF4 IMPROVEMENT: Commanders and spectators are now properly excluded from team counts, making team balancing decisions more accurate.

 

BF4 IMPROVEMENT: If scrambling is enabled, a chat message will be sent at end of round announcing that teams will be scrambled. See Teams Will Be Scrambled in Section 5 settings.

 

Also, numerous minor bugs have been fixed.

 

Details:

 

Enable Admin Kill For Fast Balance: True or False, default False. Enables forced moves using admin kills when teams are grossly unbalanced. All exclusions are ignored except for On Whitelist and Minutes After Being Moved. If the setting is True and teams are 4 or more players apart (3 if population is Low) and the speed is not Stop, live players will be selected and admin killed and then moved. The selection of who is forced to move is controlled by Select Fast Balance By.

 

Select Fast Balance By: Newest, Weakest or Random; default Newest. Only visible if Enable Admin Kill For Fast Balance is True. Determines which live player is force moved for Fast balance. Newest is the player that has been in the server the least amount of time. Weakest is the player with the lowest value as defined by per-mode Determine Strong Players By, e.g., for RoundScore the player with the lowest point score is selected. Random is a player selected at random.

 

Disperse Evenly By Clan Players >=: Number greater than or equal to 4 and less than or equal to 40, default 0. If the number of players with the same clan tag is greater than or equal to this number, the players with this same clan tag will be dispersed evenly across teams. This setting overrides Same Clan Tag ... exclusions. Set to 0 to disable.

 

VERSION 1.0.9.0


CHANGES

 

I think I fixed the bad tags bug. I'm 99% sure it has something to do with commanders joining the server. I adjusted the way commanders affect the total player count and the bad tags problem seems to have gone away.

 

IMPORTANT: Make sure your Maximum Server Size and per-mode Max Players settings are really just the maximum for players, not slots, not including commanders or spectators. I know this is confusing, but MB was designed before commanders and spectators existed and it wants to keep thinking that no such things exist, particularly since they can't be balanced anyway.

 

I also made test f3 name and test f4 name commands not just test the fetch, but also correct the bad tag entry and remove it from the list. Now you can completely clean up every name on your bad tags list (as long as it isn't a Failure), by first doing:

 

refetch

 

... letting that finish (set Debug Level to 3 so see the queue empty out), then

 

bad tags

 

... then for each remaining name on your bad tags list, do:

 

test f4 name

 

As long as the fetch was Aborted, not Failed, test f4 should redo the fetch and remove the name from the bad tags list.

 

VERSION 1.0.8.0


CHANGES

 

Added Section 8 per-mode settings for Superiority (for BF4 China Rising Air Superiority).

 

Added refetch command for Show Command In Log to enable manual refetching of any failed fetches of Battlelog info, such as clan tags. If you are getting long lists of bad tags, try using the refetch command. It may not remove all of the bad tags, but it should remove some of them, unless you are having a more serious network problem. NOTE: do not confuse with the "refresh" command, which is different and doesn't touch Battlelog.

 

Reduced debug level for Battlelog fetch errors. Now you only have to set Debug Level to 3 to see fetch errors, down from 7, which is much more spammy. TIP: If you are going to use the refetch command, set your Debug Level to 3, so you can see if there are any network or HTTP errors.

 

Shortened the %toTeam% and %fromTeam% expansions to "T1" and "T2". Some day in the future, when vars.teamXFactionOverride is available to plugins from Procon, I'll be able to use US, RU and CN instead.

 

Added the missing mode codes to the gen command.

 

Miscellaneous other clean-ups that aren't visible to you.

 

VERSION 1.0.7.0


CHANGES

 

Now compatible with BF4 and the same version works with BF3. Only relatively minor changes were needed. You'll notice that Section 8 per-mode settings have been updated for BF4. If you are connected to BF3, you see BF3 modes. If you are connected to BF4, you see BF4 modes.

 

FEATURES DISABLED FOR BF4

  • Reassignment moves: BF4 introduces a new way for players to Join on Friend which would be broken by reassigment moves, so for BF4 reassignment moves are disabled. This may result in your server taking somewhat longer to be balanced than a comparable BF3 configuration, since new players won't be reassigned to the team that needs players.
  • Usage of BattlelogCache - waiting for BF4 update.
  • Yell settings for messages: yell is not currently supported in BF4.

KNOWN ISSUES

  • Log message spam: "ADMIN moved player (REVERSED) xxx, MULTIbalancer will respect this move". I'm not entirely sure why this is happening. It doesn't happen on BF3, so it's some kind of change in the BF4 game server, probably for the new "Join On Friend" functionality. You can just ignore these messages or set your Debug Level to 1 to silence them, and pretty much everything else.
  • Obliteration: Only supports standard settings for now. Needs to have some kind of time or score-based setting like BF3 CTF, since it is an objective based mode with a timer. Max tickets are "3", representing the MCOMs to destroy, so most of the ticket-based settings don't really work well. Basically, don't count on MULTIbalancer to work correctly with Obliteration yet.
  • What's this T1:US/RU and T2:CN/RU business? In Section 5 - Messages, the replacement for %toTeam% and %fromTeam% in messages result in T1:US/RU or T2:CN/RU in BF4. This is due to changes made in BF4, which a) now include different factions for different maps, where one map might be US vs CN and another is US vs RU, and B) the new vars.team1FactionOverride and vars.team2FactionOverride commands will allow admins to change the factions of every map. It's a limitation of the current plugin that it doesn't know which faction is assigned to which team for each map, so instead, it uses these "catch-all" codes. If you don't like them, remove the %fromTeam% and %toTeam% replacements and reword your messages.

VERSION 1.0.5.0


CHANGES

 

Major bug fix release. Several problems were reported against features that used clan tag, particularly Whitelist, making the Whitelist unreliable if it depended on clan tags. All known bugs related to clan tag fetching have been fixed. You may now use clan tags in Whitelist, Friends List and Dispersal List reliably.

 

* Added Max Unstacking Ticket Difference to disable unstacking when the difference between the two teams gets too large. This setting is in actual tickets (or kills for TDM), not ticket percentage. So a value of 200 means that if the difference is tickets between the US and RU is more than 200, like 800 vs 580, unstacking will be disabled.

 

* Added Enable Ticket Loss Rate Logging. This is an experimental feature that creates a comma separated value (CSV, spreadsheet) log file in your procon/Logs/port_ip folder for each round that is played. You must disable the security sandbox for Plugins if you set the Enable Ticket Loss Rate Logging feature to True. The file name is encoded with the map, mode, round and a sequence number to avoid confusion if you have a short map rotation. Example file name: 20130713_09_2-Caspian_Border-CL0_tlr.csv . Logs are rolled at midnight of your Procon local time. The data in the log can be used to fine-tune your unstacking settings, since it shows exactly when unstacking happens and why during each round. Approximately once every five seconds, and new row is written with the following columns of information:

* Time: HH:MM:SS

* Round: Number

* Map: Text

* Mode: Text

* Max Players: Number

* US Players: Number

* RU Players: Number

* US Tickets: Number

* RU Tickets: Number

* Samples: Number

* US Average Ticket Loss: Number (looking backward for Samples, normalized to a positive value)

* RU Average Ticket Loss: Number (looking backward for Samples, normalized to a positive value)

* Ratio%: Number (as a percentage)

* Strong unstacked to: Number (0 means no unstack this entry, 1 means to US team, 2 means to RU team)

* Weak unstacked to: Number (0 means no unstack this entry, 1 means to US team, 2 means to RU team)

* Added new Show In Log command to list bad tags, which are players for whom tag fetching failed. This listing is also generated in plugin.log at the end of each round if the Debug Level is 3 or greater. You should investigate these cases to determine if the needs to be Whitelisted, Friend Listed, etc., by name rather than by tag, if the fetch for their clan tag routinely fails.

 

* Added new Show In Log command delay, which logs a estimate for how long you should set the Scrambler delay to be for your particular server. You need to run several rounds before the estimate will be useful, since it is an average.

 

* Added immunity for players who haven't had their clan tags fetched yet. They will be skipped for balancing and unstacking (but not unswitching or scrambling) while their clan tags are still being fetched or up to 1 full round, whichever happens soonest.

 


VERSION 1.0.4.0

 

IF YOU USE SCRAMBLER

Everything in the FAQ about tuning the Scrambler still applies:

 

myrcon.net/...multibalancer-faq-and-detailed-explanations#entry43456

 

Here's the short version:

 

TL;DR: Start with 50 seconds for Delay Seconds and adjust. Collect Debug Level 6 plugin.log for a few rounds, particularly if your server changes modes. You want to see the (SCRAMBLER) DONE! message about 4 seconds before the Load level detected time. Since the Scrambler has a wide range of times it needs to run, from 5 to 30 seconds, somewhat proportional to the number of players, this will take several tries to tune up. You should end up with a Delay Seconds between 50 and 58 seconds.

 

I've also updated the FAQ about why the Scrambler sometimes fails:

 

myrcon.net/...multibalancer-faq-and-detailed-explanations#entry43457


 

CHANGES

 

Major rework of Scrambler. Now does a better job of keeping squads or friends together and keeping teams balanced. While it is impossible to do a perfect job, extensive testing proved at least a 95% level of accuracy once you have tuned your Delay Seconds setting. See this FAQ article for details about how to tune the Scrambler.

 

Other major changes:

 

* Fixed a bug with not counting admin moves by other plugins or Procon

* Fixed a bug with kdRatio stat from Battlelog being null

* Fixed a bug with Conquest Small per-mode settings being ignored

* Fixed a bug with dispersal players being moved Late or Stop

* Added @mb in-game commands (see below)

* Added several new commands to Show Command In Log (see next post)

* Improved detection of crashes and reconnects

* Added Enable Strict Dispersal and Lenient Rank Dispersal

* Added Apply Friends List To Team setting

* Added Same Clan Tags In Team setting

* Added Keep Clan Tags In Same Team and Keep Friends In Same Team to Scrambler

* Added option codes to Whitelist

 

IN-GAME COMMANDS

 

If you set Enable In-Game Commands to True, commands are available to players playing the game by typing into chat. Each command begins with @mb, though !mb and #mb are also accepted. The commands enable changing settings for the plugin without leaving the game to work in Procon. This is particularly handy for adding friends who want to stay together. Each of the commands are explained in detail below.

 

Important: The commands write exactly what you type into the the plugin settings. That means you must spell player names and tags exactly and correctly. Use the @mb list command to check your work and revise if you make a mistake.

 

Important: The commands can't change your Merge Files. If you use a command to alter a list that is populated from a merge file, the merge file specifier will be removed. The list will become the merged contents of the flie, plus whatever changes your commands did. If this happens and you want to update your merge file and go back to using it, just copy & paste the current contents of the list into your file and then change the contents of the list back to a Merge File reference.

 

Explanation about the notation used for commands:

{x|y} - a choice, means type either x or y

(optional) - items in parentheses are optional

... - means some optional items have been omitted for brevity

 

@mb help

Access: admins only, must have a Procon account that has Allowed to move players between teams and squads checked.

 

Lists all of the commands available. To get more info about a specific command, type @mb help command, for example, @mb help list.

@mb help command

Access: admins only, must have a Procon account that has Allowed to move players between teams and squads checked.

 

Show more detail about a specific command.

@mb add {d(isperse)|f(riends)|w(hitelist)} ({1|2}) name1 (name2) (name3) ... (nameN)

Access: admins only, must have a Procon account that has Allowed to move players between teams and squads checked.

 

Add one or more items to the specified list. The choice of d(isperse) for Disperse Evenly List, f(riends) for Friends List, or w(hitelist) for Whitelist determines how the following optional parameters are interpreted.

 

For disperse: You may optionally specify a dispersal group number, 1 or 2. The one or more names that follow are added to that dispersal group. If you omit the dispersal group number, the names are added to the end of the list.

 

Example: @mb add d 1 Adam EVE adds player named Adam and clan tag EVE to dispersal group 1.

Example: @mb add d Adam EVE adds player named Adam and clan tag EVE to the end of the Disperse Evenly List.

 

For friends: You MUST specify a name to match against, name1. The Friends List is searched for a sub-list that contains name1 and if found, adds names name2 ... nameN. The command MUST specify at least two names, name1 and name2.

 

Example: @mb add f LevelCap NoobAlert XOX finds the sub-list that contains LevelCap and adds the player name NoobAlert and the clan tag XOX to that sub-list. If LevelCap is not found, the command fails with an error.

 

For whitelist: You may specify one or more names to add to the end of the Whitelist. NOTE: It is not possible to specify Whitelist option codes with this command. That can only be done through Procon.

 

Example: @mb add w WhinerQQ adds the player named WhinerQQ to the Whitelist

@mb del(ete) {d(isperse)|f(riends)|w(hitelist)} ({1|2}) name1 (name2) (name3) ... (nameN)

Access: admins only, must have a Procon account that has Allowed to move players between teams and squads checked.

 

Delete one or more items from the specified list. The choice of d(isperse) for Disperse Evenly List, f(riends) for Friends List, or w(hitelist) for Whitelist determines how the following optional parameters are interpreted.

 

For disperse: You may optionally specify a dispersal group number, 1 or 2. The one or more names that follow are deleted from that dispersal group. If you omit the dispersal group number, the names are deleted the list.

 

Example: @mb del d 1 Adam EVE deletes player named Adam and clan tag EVE from dispersal group 1.

Example: @mb del d Adam EVE deletes player named Adam and clan tag EVE from the Disperse Evenly List.

 

For friends: Deletes one or more names from the list, regardless of sub-list.

 

Example: @mb del f NoobAlert XOX deletes the player named NoobAlert and the clan tag XOX from the Friends List.

 

For whitelist: You may specify one or more names to delete from the Whitelist. The entire item is deleted for each matching name, including any option codes.

 

Example: @mb del w WhinerQQ deletes the player named WhinerQQ and any option codes assigned to him from the Whitelist.

@mb list {d(isperse)|f(riends)|w(hitelist)}

Access: admins only, must have a Procon account that has Allowed to move players between teams and squads checked.

 

Lists the current contents of the specified list. The listing is compacted, since chat box messages are limited to 128 characters.

 

For example, if your Friends List contains the following:

Code:

albert Baker choochoo3 davidDAVID EEE
XXX wannabeXXX
arnoldfdz05 BearCat111 Branzone BrownxThunder bruceanast buffal0soldier Xfirekill
the command @mb list f will send this text to the chat box:

Code:

[ADMIN] albert Baker choochoo3 davidDAVID EEE; XXX wannabeXXX; arnoldfdz05 
        BearCat111 Branzone BrownxThunder bruceanast buffal0sold
[ADMIN] ... ier Xfirekill
Notice that the name buffal0soldier got split. This is because the maximum chat message length was reached before the end of the list, so the rest had to be sent in a separate message.@mb new {d(isperse)|f(riends)|w(hitelist)} ({1|2}) name1 (name2) (name3) ... (nameN)

Access: admins only, must have a Procon account that has Allowed to move players between teams and squads checked.

 

Create a new entry with one or more items in the specified list. The choice of d(isperse) for Disperse Evenly List, f(riends) for Friends List, or w(hitelist) for Whitelist determines how the following optional parameters are interpreted.

 

For disperse: You may optionally specify a dispersal group number, 1 or 2. The one or more names that follow form the members of the new group. If a group with the same number already exists, an error message is sent and the command fails. If you omit the dispersal group number, the names are added to the end of the list.

 

Example: @mb new d 1 Adam EVE creates group 1 and adds player named Adam and clan tag EVE to it.

Example: @mb new d Adam EVE adds player named Adam and clan tag EVE to the end of the Disperse Evenly List.

 

For friends: Creates a new sub-list. The command MUST specify at least two names, name1 and name2.

 

Example: @mb new f LevelCap NoobAlert XOX creates a new sub-list that contains LevelCap, NoobAlert and XOX.

 

For whitelist: You may specify one or more names to add to the end of the Whitelist. NOTE: It is not possible to specify Whitelist option codes with this command. That can only be done through Procon.

 

Example: @mb new w WhinerQQ adds the player named WhinerQQ to the Whitelist

@mb sub(scribe)

Access: admins only, must have a Procon account that has Allowed to move players between teams and squads checked.

 

If Quite Mode is set, admins do not see movement messages sent to players. If an admin wants to see those messages, he can use the @mb sub command to subscribe. Move messages sent to all players will be sent to all subscribers as well.

@mb unsub(scribe)

Access: admins only, must have a Procon account that has Allowed to move players between teams and squads checked.

 

Disables subscribing to movement messages. See @mb sub.

VERSION 1.0.3.0


 

ATTENTION! If you are a current user of 1.0.2.0 or earlier, see NOTE TO UPGRADERS below.

 

BUG FIXES


* Rush stage transitions incorrect/missed - major problem in Rush is now fixed

* Rush not handling maps with 5 stages - another major problem in Rush is now fixed

* Unstacking not respecting minimum player requirement - 4 players were getting moved for unstacking!

* Autobalance never activates due to unassigned players - now respects Balance Speed of Fast

* Disperse Evenly List should not respect Same Clan Tags In Squad

* Wrong tag matched from Battlelog (rare failure)

 

Those are the major ones. Dozens of minor ones were also fixed.

 

Everyone should upgrade just to get the bug fixes, particularly the Rush mode ones.

 

NEW FEATURES


Full details about all features, new and old, are in post #1 and in the embedded documentation with the plugin (Plugin Details).

 

* Settings Wizard - type in your mode, max players, max tickets and a few other details and presto, instant setup! Only works for balance settings, though. Unstacking would require an expert system.

 

* Battlelog stats fetching for player SPM, KDR and KPM added. Either All-Time stats or Reset stats, at your option. Works with or without Battlelog Cache, of course.

 

* Per-mode Only Move Weak Players setting added. Keep your best players happy.

 

* Friends List - as per discussion in thread, now players without tags can be kept together in squads too

 

* Total rework of the Scrambler, works much better now (HOWEVER, see note below)

 

* Keep Squads Together - for Scrambler.

 

* Scrambler can be set to Divide By dispersal groups - as per discussion in thread, so you can have GUYS sent to one team and GALS sent to the other (those are clan tags).

 

* Scrambler can be set to Divide By clan tag - as per discussion in the thread, so you can choose one clan tag, CMW, and have players with that tag divided evenly between the two teams during scrambling.

 

* Exclusion for Minutes After Being Moved - spans multiple rounds, works as long as the plugin and Procon keep running

 

* Dispersal group numbers added to Disperse Evenly List - as per discussion in thread

 

* Changed Unswitcher settings from True/False to Always/Never/LatePhaseOnly - you can have more control over when unswitching moves happen. For example, Forbid Switching To Winning Team can be set to LatePhaseOnly, so switching is allowed earlier in the round.

 

* Each list can be loaded and merged from an external file - great if you have several servers on the same layer and you want your Whitelist, etc., to be the same

 

* Enable Metro Adjustments - for Conquest Small and Large, so you can have Metro in your map rotation without having to compromise.

 

* Don't enable unstacking until a load level is seen - this prevents weirdness when you enable the plugin in the middle of a round and you have unstacking enabled.

 

* Don't do dispersal moves if Balance Speed is Stop or Phase is Late - save those Colonel 100's from being moved during the last 10 tickets of the round.

 

* Same Clan Tags For Rank Dispersal - Exclusion, keep those Colonel 100's together if they have the same tag

 

* External file logging - you can log to another file that you specify as well as to plugin.log.

 

* New Show In Log commands - moved, a report on players who have been moved by the plugin, and lists, writes all the lists, including merges from external files, dispersal groups, friends lists, etc. Also, Show In Log has been renamed Show Command In Log, a bit clearer.

 

 

NOTE ABOUT THE SCRAMBLER


While it works much better now, it is impossible to get it to work perfectly. Since it is a very dynamic situation, with players rapidly leaving, some joining, and the game server itself moving players out from under the plugin, usually to another squad, it's impossible to get it right every time. It works pretty well, particularly if you have the Delay Seconds set to just the right amount to get past all the players leaving, but not so long that the game server starts screwing things up. Just understand that if every now and then you get split up from your squad mates, it ain't my fault! There's not anything I can do to prevent the game server from moving players after the plugin has done it's moves, so unless you want me to admin.kill everyone when they spawn and sort them out then, this is the best that can be expected.

 

For more details, see this FAQ: Why doesn't the Scrambler always work?

 

NOTE ABOUT THE FRIENDS LIST


There is no point in only putting one friend per line. Think of each line of the list as a clan. You can think of the first line as defining the "L01" clan, the second line as the "L02" clan, and so on. There's not much use for a clan with just one member, right? When you talk to your players or when they complain to you, get a list of friends they want to stick with. The list does not allow duplicates of the same type (name, tag or guid), so once a player's name is on one line, don't try to put it on another line. You may put his guid on another line, though. See the Friends List entry in post #1 for further details and an example.

 

NOTE ABOUT BATTLELOG STATS FETCHING


As for all plugins that fetch Battlelog stats, the more players you have and the more requests you make, the longer it takes for the plugin to work through the list of requests. With Which Battlelog Stats set to AllTime or Reset, once you enable the plugin or restart Procon with the plugin enabled, there may be a long wait before the plugin works reliably for features that require Battlelog data, like Keep Clan Tags Together or Determine Strong Players By BattlelogSPM, etc. To see if you still have a queue of requests pending, set your Debug Level to 3.

 

There will be NO lag or hangs while the queue is being worked through, since this plugin is properly multithreaded. Also, if you set Debug Level to 3 or higher, you may see a queue length that is twice as large as the number of players in your server. That is because setting Which Battlelog Stats to AllTime or Reset requires two requests per player, one for the clan tag, one for the stats data.

 

While there will be no lag, it is important to manage the load on the Battlelog service. Set the Maximum Request Rate at a reasonable level. The more game servers you have on your layer with stats fetching enabled, the lower this setting should be. On the other hand, the lower you set the rate, the longer it will take to work through the queue. At an average of 4 seconds per request for a 64 player server set to request AllTime stats, a rate of 5 will take up to 8 minutes to work through the queue.

 

NOTE TO UPGRADERS


The new setting Only Move Weak Players is set to True (enabled) by default.

 

Your current settings will be preserved, but the behavior of the balancer will be different than what you have configured for 1.0.2.0, unless you disable Only Move Weak Players for each mode that you have configured. The default was chosen to be True so that new admins picking up the plugin for the first time will get more conservative behavior that keeps strong players happy by not moving them.

 

It is recommended that you inspect all of your per-mode settings and all of the Unswitcher settings after upgrading, since those sections have new values and new features. While not required, having a screenshot or gen command copies of your settings from 1.0.2.0 may be helpful in orienting yourself to the new settings.

 

 

 

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Unique Settings By Mode


This documentation is overflow from post #1.

 

These settings are unique to Conquest.

 

Enable Metro Adjustments: True or False, default False. This setting should be set to True when Metro is one of several maps in a Conquest Large or Conquest Small rotation. This setting insures that no players are moved to the losing team, which is usually futile. The actual effect is that when the map is Metro, during Early and Late phase, the Balance Speed is forced to be Stop and the Unstack Percentage Ratio is forced to be 0%. During Mid Phase, the Balance Speed is forced to be Slow. The Unstack Percentage Ratio is left unchanged for Mid Phase. If Metro is the only Conquest map in the rotation or if Metro is not in the rotation at all, set this setting to False. See also Metro Adjusted Definition Of Late Phase.

 

Metro Adjusted Definition Of Late Phase: Number greater than or equal to 0. This setting is visible only when Enable Metro Adjustments is set to True. When the map is Metro, the value specified here is used instead of Definition Of Late Phase As Tickets From End. This allows you to specify a much longer Late phase than for the other Conquest maps in your rotation. You generally want Metro Late phase to be the second half of your tickets, for example, if you have 1000 tickets, set this setting to 500.

 

These settings are unique to CTF and Carrier Assault.

 

Definition Of Early Phase As Minutes From Start: Number greater than or equal to 0. This is where you define the Early phase, as minutes from the start of the round. For example, if your round starts with 20 minutes on the clock and you set this to 5, the phase is Early until 20-5=15 minutes are left on the clock.

 

Definition Of Late Phase As Minutes From End: Number greater than or equal to 0. This is where you define the Late phase, as minutes from the end of the round. For example, if your round starts with 20 minutes on the clock and you set this to 8, the phase is Late for when there 8 minutes or less left on the clock.

 

These settings are unique to Rush and Squad Rush.

 

Rush and Squad Rush require adjustments to the ticket percentage to unstack values specified in section 3 above. For example, if you have a mixed mode server with TDM and Rush, you may set ticket percentage to unstack to 120 for certain combinations of phase and population. This works great for TDM with 200 tickets. It does not work well for Rush with 150 tickets. The ticket ratio may easily exceed 120% without the teams being stacked. It's just the nature of the stages. Rather than have completely different settings for Rush and Squad Rush for section 3, instead, the per-mode settings define adjustments to the section 3 settings. For example, if you specify 30 for Stage 1 Ticket Percentage To Unstack Adjustment, 30 is added to 120 to yield 150% as the ratio for stage 1. You may also use negative numbers to reduce the value, for example, if the normal setting is 120 and you want stage 4 to have no unstacking, you may set the adjustment to -120. If the adjustment results in a value less than or equal to 100, it is set to 0. If you use 0 for the adjustment value, no change is made. If the normal value is 0, no adjustment is applied. Otherwise, the adjustment is applied to all phase and population combinations for that stage. Rush maps range from 3 to 5 stages. Most are 4. To account for maps with up to 5 stages, there is one setting for stage 4 and stage 5. Treat this setting as the 'last' stage.

 

Stage 1 Ticket Percentage To Unstack Adjustment: Any positive or negative number whose absolute value is 0 or less than or equal to the corresponding Ticket Percentage To Unstack value. If the defending team is stacked, the game will be unlikely to get past stage 1, so ratios in the range 125 to 150 after adjustment are good for stage 1. For example, if your normal ratio is 120, set the adjustment to 5 to get 125 for Rush.

 

Stage 2 Ticket Percentage To Unstack Adjustment: Any positive or negative number whose absolute value is 0 or less than or equal to the corresponding Ticket Percentage To Unstack value. If the attacking team is stacked, the game will get to stage 2 quickly, so ratios in the range 125 to 150 are good for stage 2. For example, if your normal ratio is 120, set the adjustment to 30 to get 150 for Rush

 

Stage 3 Ticket Percentage To Unstack Adjustment: Any positive or negative number whose absolute value is 0 or less than or equal to the corresponding Ticket Percentage To Unstack value. Evenly matched teams will often get to stage 3, so set the ratio high to catch unsual situations only, ratios in the range 200 or more are good for stage 3. For example, if your normal ratio is 120, set the adjustment to 80 to get 200 for Rush.

 

Stage 4 And 5 Ticket Percentage To Unstack Adjustment: Any positive or negative number whose absolute value is 0 or less than or equal to the corresponding Ticket Percentage To Unstack value. This is tricky, since a team that is stacked for attackers or evenly matched teams will both get to the last stage. To give the benefit of the doubt, aim for a ratio of 0. For example, if your normal ratio is 120, set the adjustment to -120 to get 0 for Rush.

 

Seconds To Check For New Stage : Number greater than or equal to 5 and less than or equal to 30, default is 10. Number of seconds between each check to see if a new stage has started. The check is a guess since BF3 does not report stage changes, so it is possible for the plugin to guess incorrectly.

 

Enable Advanced Rush Unstacking: True or False, default False. If set to True, an advanced method of determining unstacking is used for Rush. Do not use this unless you know what you are doing. See forum post for details.

 

 

 

Show In Log Commands


In the plugin settings for MULTIbalancer, Section 9 - Debugging, you will find the Show In Log text field. It will be blank. You can use this text field to type commands to the plugin. This post describes each command in detail. To use a command, type its name and parameters (if any) into the text field and press Enter (key a return).

 

bad tags: Examine list of players whose clan tag fetch failed.

 

Use this to determine who on your Whitelist or Friends List needs to be listed by name or GUID, because their clan tag can't be fetched.

bad stats: Examine list of players whose stats fetch failed

 

Use this to understand why Battlelog stat based features are not working for these players.

delay: Examine recommended scrambler delay time

 

After running for several complete rounds, use this command to get a recommended delay time to use, based on the average amount of time between round over and the next round loading.

gen section: Generate settings listing for section (1-6,9)

 

The gen command generates a listing of settings for the specified section, from 1 thru 6 and section 9. For Section 8 per-mode settings, see gen mode. The listing is printed out to the plugin.log.

gen mode: Generate settings listing for mode (one of: cs, cl, ctf, dom, def, gm, ob, r, sqdm, sr, s, tdm, u)

 

The gen command generates a listing of settings for the specified game mode. The listing is printed out to the plugin.log. The mode abbreviations stand for:

 

cl - Conquest Large

crs - Carrier Assault Small

crl - Carrier Assault Large

cs - Conq Small, Dom, Sav: Conquest Small, Domination, Scavenger

ctf - CTF

def - Defuse (BF4)

dom - Domination (BF4)

gm - Gun Master

ob - Obliteration

r - Rush

sqdm - Squad Deathmatch

sr - Squad Rush

s - Superiority

tdm - Team Deathmatch

u - Unknown or New Mode

lists: Examine all settings that are lists

 

Logs settings that are lists, such as Whitelist and Disperse Evenly List, to plugin.log. Also list the current group assignments for dispersal groups.

modes: Examine the known game modes

 

Logs a list of the known game modes to plugin.log

moved: Examine which players were moved and how long ago

 

Logs a report on all players that have been moved, how many times this round and all rounds, and how long ago the last move was, to plugin.log.

rage: Examine rage quit statistics

 

Logs statistics for all rage quits and rage quits for the current round. A rage quit is any player quit that happens within 1 minute of being moved for balance or unstacking.

refetch: Refetch Battlelog info for all active players (NEW for 1.0.8.0)

 

If you have a long list of bad tags and you think Battlelog is throttling or your Procon instance has a brief period of network congestion (rather than a serious problem), you can use the refetch command to retry all of the Battlelog fetches for active players. Some of the bad tags might be for players that have left the server, so the bad tags list might not be completely empty after a refetch.

refresh: Force refresh of player list

 

After network congestion, disconnects, accidental restart of Procon or other unusual events, the plugin might get confused. If it doesn't sort itself out in 30 seconds, use the refresh command to force it to update all the information it gets from the game server.

reset settings: Reset all plugin settings to default, except for Whitelist and Disperse Evenly List

 

If you have hopelessly confused your settings, or sometimes as a requirement for a plugin update, you can use this command to reset all of your MULTIbalancer settings to default values. Use with caution, there is no way to restore your settings after using this command.

scrambled: Examine list of players before and after last successful scramble

 

Logs detailed information about the last successful between-round scramble of teams, if any. A list of players on each team is shown for before and after the scramble. The rank of the player for the specified Scramble By metric is also list. Player #1 is the top ranked player for that metric, #2 is the second, and so on.

sizes: Examine the sizes of various data structures

 

For debugging, writes out information about data structures in the code.

sort team type: Examine sorted team (1-4) by type (one of: score, spm, kills, kdr, rank, kpm)

 

Logs a sorted list of the specified team[/b], using the specified type. The types correspond to the Determine Strong Players By and Scramble By settings, e.g, score is RoundScore, spm is RoundSPM, kpm is RoundKPM, etc.

status: Examine full status log, as if Debug Level were 7

 

Log the current balancer [status] in plugin.log.

subscribed: Examine all players who are subscribed to balancer chat messages

 

See the @mb subscribe command for details.

tags: Examine list of players sorted by clan tags

 

Logs a list of clan tags. For each clan tag, the players wearing that tag are listed by team and squad. This is a good way to verify that settings like Same Clan Tags In Squad are working correctly.

test f3 name: Test BF3 Battlelog tag fetch for name

 

Performs a BF3 Battlelog tag fetch for the specified player. If the player is on the bad tags list because the fetch was Aborted, the name will be removed from the bad tags list if the test is successful. If you get a Failure, check the spelling of name, you might have just mistyped it.

test f4 name: Test BF4 Battlelog tag fetch for name

 

Performs a BF4 Battlelog tag fetch for the specified player. If the player is on the bad tags list because the fetch was Aborted, the name will be removed from the bad tags list if the test is successful. If you get a Failure, check the spelling of name, you might have just mistyped it.

whitelist: Examine the Whitelist, optionally combined with Reserved Slots list, by option code

 

Logs all the members in the combined whitelist by their option codes. For example, all of the players with the U (Unstacking) option are listed under Unstacking, all of the players with the B (Balancing) option are listed under Balacing, etc. This is a good way to verify that your option codes are set the way you intended.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Reserved 3.Looking for settings to use for a combination of game mode, number of players and max tickets? Check out:

 

MULTIbalancer: Collected Settings*

 

Can't find what you are looking for? Ask for help in this thread.

 

Tested out setting for a particularly game mode + number of players + max tickets? Want to recommend settings for other admins to use? Post your recommended settings in this thread. If you get some positive comments about your settings, they will be copied to the MULTIbalancer: Collected Settings* thread and credited to you.

 

If your goal is to increase the intensity of each round by leveling the playing field and matching teams as closely as possible, the right selection of setting can result in a round that looks like this (thanks to [C2C]Blitz!)

 

Thought I'd plot the behavior of this brilliant plugin in a graph of a typical game we usually have on our 64-man server, to see the unstacking effect on the game.

 

Y-Axis is tickets, X-axis is time. Green vertical lines are when unstacking a player took place. You can see that just 2 swaps (4 player moves) makes an impact on the outcome of the game. Towards the end, 4 swaps (8 players had to be moved) to get the game so close at the end.

 

It does take a good 20 minutes to see the tickets converge with the way we have it set up, but most of our games last at least an hour and we can afford slow changes. Others who have a lower ticket count would want unstacking to be triggered at tighter ticket ratios.

Posted Image

 

Attached Files:

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by IAF-SDS*:

 

Papa, you work so hard and produce awesome results with an arsenal of various talents my friend.

 

Thank you so much for everything you do to help everyone and myself.

 

Fantastic!

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by xFaNtASyGiRLx*:

 

Just installed it on metro, aftermath, EG, and armored kill servers. Love that you can see the MB messages of whats going on in procon chat!

 

The plugin was A LOT to read so I just chose "intense" quickset :smile: will report back and a HUGE THANK YOU!

 

Edit: when I enabled this plugin for AM- the score was 240 vs 1100

 

15 minutes later the score is now 204 vs 487!! and not a single complaint :smile:

 

edit:

 

now 10 minutes later 109 vs 119!!

 

amazing!

 

[09:29:59] Dibblestein > looks like an EPIC comeback!!

lol ^ little does he know it was the MB that did this :P

 

I have enabled this on all 11 servers and only ONE whine about being moved so far.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by xFaNtASyGiRLx*:

 

another update:

 

someone was upset cause they couldn't play with their friend. they did not wear the same tags. so what i did was manually switch them. Does the plugin know not to move someone after an admin manually switches them?

 

Also- not so sure if intense preset works for metro. I have a lot of angry players who worked hard to get B flag and get switched towards the end.

 

How do I disable the switching (only keep the # balance) 3/4 or 1/2 way through the round- if possible?

 

Do I put stop stop stop on mid round on round phase/population?

 

[11:46:54 85] [MULTIbalancer] FINAL STATUS FOR PREVIOUS ROUND:

[11:46:54 85] [MULTIbalancer] Status: Map = Operation Metro, mode = Conquest Large, time in round = 00:42:54, tickets = 212/0

[11:46:54 85] [MULTIbalancer] Status: 0/30 raged, 15 reassigned, 1 balanced, 24 unstacked, 9 unswitched, 1 excluded, 598 exempted, 0 failed; of 2093 TOTAL

yes.. lots of rage now across the servers :S

 

how do I stop it from moving say at 500 tickets? But scramble at end round? will it do this?

 

edit: for metro- I just changed preset to balance and set scramble teams to True. Lets hope this works.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Blitz*:

 

Hey Papa, great release! I wanted to thank you for taking the time to build this wonderful plugin. Papa worked tirelessly to build it and incorporated 100's of feedback over the course of several months. It is perfect!

 

We have been testing and tweaking the settings for over a week, and besides the blaze disconnects, our server is full all the time and never any complaints. Games usually end very close. The way we have it set, even if one team dominates at like 1000-400 tickets, the plugin comes back with a vengeance and tickets are closer towards the end.

 

I will post our settings for our 64-man 1500 tickets Large CQ Fly Maps server today in case anyone else wants to use our settings.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Blitz*:

 

another update:

 

someone was upset cause they couldn't play with their friend. they did not wear the same tags. so what i did was manually switch them. Does the plugin know not to move someone after an admin manually switches them?

 

Also- not so sure if intense preset works for metro. I have a lot of angry players who worked hard to get B flag and get switched towards the end.

 

How do I disable the switching (only keep the # balance) 3/4 or 1/2 way through the round- if possible?

 

Do I put stop stop stop on mid round on round phase/population?

 

 

 

yes.. lots of rage now across the servers :S

 

how do I stop it from moving say at 500 tickets? But scramble at end round? will it do this?

 

edit: for metro- I just changed preset to balance and set scramble teams to True. Lets hope this works.

FantasyGirl, you can change the settings so unstacking only occurs in the early phase. Just set Mid Phase and Late Phase to Stop, Stop, Stop. Set the ticket duration for Early Phase to what ever amount of tickets you want early phase to last in section 8.

 

If people are still getting upset about being moved, perhaps set a lower number of unstacks per round (default I think is 12 for large CQ), and set it to check for unstacking less frequently (we have ours set to 2 unstack swaps every 5 minutes if a team is stacked). You can also choose a smaller "strong" player percentage pool. This means it will pick very very strong players to swap which will require fewer swaps to make an impact on the game. We have ours set currently at 35%.

 

The plugin is so heavily customizable that it will work for practically any kind of behavior you want.

 

If you need help setting it up for your server, I can hop on your teamspeak if you want and guide you through the settings and make recommendations.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

someone was upset cause they couldn't play with their friend. they did not wear the same tags. so what i did was manually switch them. Does the plugin know not to move someone after an admin manually switches them?

It pays attention to admin moves that it didn't generate itself so it can avoid moving that player for the rest of a round, but that feature is not well tested.

 

Also- not so sure if intense preset works for metro. I have a lot of angry players who worked hard to get B flag and get switched towards the end.

It will depend on your number of tickets and other settings? What are you at, 1000? 1200?

 

How do I disable the switching (only keep the # balance) 3/4 or 1/2 way through the round- if possible?

 

Do I put stop stop stop on mid round on round phase/population?

 

how do I stop it from moving say at 500 tickets? But scramble at end round? will it do this?

You have to define your phases first. :smile: In your Conquest Large section, you need to set appropriate values for Definition of Early Phase and Definition of Late Phase. They represent number of tickets from beginning and end, respectively. So if you want the last 500 tickets to represent the Late phase, set Definition of Late Phase to 500. Then, in your Section 3 settings for Late Phase: Ticket Percentage To Unstack ..., set the values higher, like 150,150,150 or 200,200,200, or even 0,0,0 if you don't want any unstacking to happen at that time. You can also reduce the number of unstacks per group or increase the delay between unstacks in the Conquest Large section.

 

Using stop,stop,stop disables balancing, so I don't think you want that.

 

Yes, you can enable the scrambler in your Conquest Large section.

 

 

edit: for metro- I just changed preset to balance and set scramble teams to True. Lets hope this works.

Or you can do that. :smile:
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by Blitz*:

 

Using stop,stop,stop disables balancing, so I don't think you want that.

Does using Stop, Stop, Stop disable both balancing and unstacking? If so I will need to change that.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Does using Stop, Stop, Stop disable both balancing and unstacking? If so I will need to change that.

Yes. You can stop balancing but leave unstacking on with Unstack,Unstack,Unstack. To leave balancing on but stop unstacking, set the Ticket Percentage To Unstack to 0,0,0 or 0 in any population level that you want to disable unstacking and set the balance speed to Fast, Adaptive or Slow.
* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by xFaNtASyGiRLx*:

 

wowwww.. thanks for this remarkable plugin. Theres so much to learn. Thanks blitz for walking me through it. To configure this plugin is to understand it, to understand it, you have to read it, set it, watch the server to see if unstacking/balancing is happening, then read the chat to see if there is raging :P

 

but once you have it down, its perfect. OR you can do what I did on my metro server and thats to set it to balance only with scrambling at the end of the round until you learn more about the plugin.

 

But once you have the settings all down, its perfect!

 

thanks again PC9!

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

I doubt that it is perfect, in that no software is ever perfect, but thanks for the kind words.

 

Now if only I could get the "nuke all the campers on Flag B of Metro" feature working ...

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by kcuestag*:

 

Hey PapaCharlie9, a nice feature for future versions would be if the balancer would move/unstuck a whole squad instead of just one player, I am getting complaints from friends who get splitted between both teams when they are unstacked coz they don't wear clan tags for example...

 

Would this be possible? :smile:

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

Hey PapaCharlie9, a nice feature for future versions would be if the balancer would move/unstuck a whole squad instead of just one player, I am getting complaints from friends who get splitted between both teams when they are unstacked coz they don't wear clan tags for example...

 

Would this be possible? :smile:

Possible, but tricky. How would the plugin know which squads can be split up and which can't?

 

One suggestion from the design thread was to add a !clan command that allowed creation of a temporary clan that only lasts for one round. Say three friends are in a round, two on US in one squad, one on RU. The first one on US types !clan XYZ. That registers a temporary clan tag -XYZ with the plugin (the - is to distinguish temporary clan tags from real ones). The second friend on the US team also types !clan XYZ. Now the plugin will treat the two of them as if they have the tag [-XYZ] and all of the usual clan tag rules will apply, including Same Clan Tag In Squad. Now the RU player types !clan XYZ. He will also be registered with the [-XYZ] tag and if he can team switch to US, he'll be able to join that squad and not worry about being moved.

 

A whole bunch of limitations will have to be used, or else this command will be abused to disable the plugin's ability to move players. For example, only four players should be able to register for any given tag. There might also have to be an upper limit on total number of temporary clan members per team.

 

One big question is how you would communicate this feature to the players. Scrolling spam?

 

Another alternative is to add a !recruit command that allows a squad to move a friend into their squad, even if they are on the other team. Someone from the destination squad has to type the command and the player being recruited has to !accept. Again, some restrictions have to be put on this or else it just gives admin.movePlayer access to any player.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by kcuestag*:

 

Possible, but tricky. How would the plugin know which squads can be split up and which can't?

 

One suggestion from the design thread was to add a !clan command that allowed creation of a temporary clan that only lasts for one round. Say three friends are in a round, two on US in one squad, one on RU. The first one on US types !clan XYZ. That registers a temporary clan tag -XYZ with the plugin (the - is to distinguish temporary clan tags from real ones). The second friend on the US team also types !clan XYZ. Now the plugin will treat the two of them as if they have the tag [-XYZ] and all of the usual clan tag rules will apply, including Same Clan Tag In Squad. Now the RU player types !clan XYZ. He will also be registered with the [-XYZ] tag and if he can team switch to US, he'll be able to join that squad and not worry about being moved.

 

A whole bunch of limitations will have to be used, or else this command will be abused to disable the plugin's ability to move players. For example, only four players should be able to register for any given tag. There might also have to be an upper limit on total number of temporary clan members per team.

 

One big question is how you would communicate this feature to the players. Scrolling spam?

 

Another alternative is to add a !recruit command that allows a squad to move a friend into their squad, even if they are on the other team. Someone from the destination squad has to type the command and the player being recruited has to !accept. Again, some restrictions have to be put on this or else it just gives admin.movePlayer access to any player.

I see your point.

 

In regards to the first question, what I meant is an option so that NO squads are split up, so if a team needs better players, when unstacking, just move a whole squad to the other team.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by LumPenPacK*:

 

I don't know if it's a bug but on Rush it seems to me that the plugin is detecting a new stage if the team gets some tickets back while players get revived.

* Restored post. It could be that the author is no longer active.
Link to comment

Originally Posted by PapaCharlie9*:

 

In regards to the first question, what I meant is an option so that NO squads are split up, so if a team needs better players, when unstacking, just move a whole squad to the other team.

Oh, sorry, I misunderstood your question.

 

No, that's not feasible. MB moves a player when they are killed. It operates one player at a time. It would have to admin kill all of the other players in the squad to do the move, or alternatively, only do the move when they are all dead. Too complicated either way.

* Restored post. It could be that the author is no longer active.
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




  • Our picks

    • Game Server Hosting:

      We're happy to announce that EZRCON will branch out into the game server provider scene. This is a big step for us so please having patience if something doesn't go right in this area. Now, what makes us different compared to other providers? Well, we're going with the idea of having a scaleable server hosting and providing more control in how you set up your server. For example, in Minecraft, you have the ability to control how many CPU cores you wish your server to have access to, how much RAM you want to use, how much disk space you want to use. This type of control can't be offered in a single service package so you're able to configure a custom package the way you want it.

      You can see all the available games here. Currently, we have the following games available.

      Valheim (From $1.50 USD)


      Rust (From $3.20 USD)


      Minecraft (Basic) (From $4.00 USD)


      Call of Duty 4X (From $7.00 USD)


      OpenTTD (From $4.00 USD)


      Squad (From $9.00 USD)


      Insurgency: Sandstorm (From $6.40 USD)


      Changes to US-East:

      Starting in January 2022, we will be moving to a different provider that has better support, better infrastructure, and better connectivity. We've noticed that the connection/routes to this location are not ideal and it's been hard getting support to correct this. Our contract for our two servers ends in March/April respectively. If you currently have servers in this location you will be migrated over to the new provider. We'll have more details when the time comes closer to January. The new location for this change will be based out of Atlanta, GA. If you have any questions/concerns please open a ticket and we'll do our best to answer them.
      • 5 replies
    • Hello All,

      I wanted to give an update to how EZRCON is doing. As of today we have 56 active customers using the services offered. I'm glad its doing so well and it hasn't been 1 year yet. To those that have services with EZRCON, I hope the service is doing well and if not please let us know so that we can improve it where possible. We've done quite a few changes behind the scenes to improve the performance hopefully. 

      We'll be launching a new location for hosting procon layers in either Los Angeles, USA or Chicago, IL. Still being decided on where the placement should be but these two locations are not set in stone yet. We would like to get feedback on where we should have a new location for hosting the Procon Layers, which you can do by replying to this topic. A poll will be created where people can vote on which location they would like to see.

      We're also looking for some suggestions on what else you would like to see for hosting provider options. So please let us know your thoughts on this matter.
      • 4 replies
    • Added ability to disable the new API check for player country info


      Updated GeoIP database file


      Removed usage sending stats


      Added EZRCON ad banner



      If you are upgrading then you may need to add these two lines to your existing installation in the file procon.cfg. To enable these options just change False to True.

      procon.private.options.UseGeoIpFileOnly False
      procon.private.options.BlockRssFeedNews False



       
      • 2 replies
    • I wanted I let you know that I am starting to build out the foundation for the hosting services that I talked about here. The pricing model I was originally going for wasn't going to be suitable for how I want to build it. So instead I decided to offer each service as it's own product instead of a package deal. In the future, hopefully, I will be able to do this and offer discounts to those that choose it.

      Here is how the pricing is laid out for each service as well as information about each. This is as of 7/12/2020.

      Single MySQL database (up to 30 GB) is $10 USD per month.



      If you go over the 30 GB usage for the database then each additional gigabyte is charged at $0.10 USD each billing cycle. If you're under 30GB you don't need to worry about this.


      Databases are replicated across 3 zones (regions) for redundancy. One (1) on the east coast of the USA, One (1) in Frankfurt, and One (1) in Singapore. Depending on the demand, this would grow to more regions.


      Databases will also be backed up daily and retained for 7 days.




      Procon Layer will be $2 USD per month.


      Each layer will only allow one (1) game server connection. The reason behind this is for performance.


      Each layer will also come with all available plugins installed by default. This is to help facilitate faster deployments and get you up and running quickly.


      Each layer will automatically restart if Procon crashes. 


      Each layer will also automatically restart daily at midnight to make sure it stays in tip-top shape.


      Custom plugins can be installed by submitting a support ticket.




      Battlefield Admin Control Panel (BFACP) will be $5 USD per month


      As I am still working on building version 3 of the software, I will be installing the last version I did. Once I complete version 3 it will automatically be upgraded for you.





      All these services will be managed by me so you don't have to worry about the technical side of things to get up and going.

      If you would like to see how much it would cost for the services, I made a calculator that you can use. It can be found here https://ezrcon.com/calculator.html

       
      • 11 replies
    • I have pushed out a new minor release which updates the geodata pull (flags in the playerlisting). This should be way more accurate now. As always, please let me know if any problems show up.

       
      • 9 replies
×
×
  • Create New...

Important Information

Please review our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.