Unstacking modes: works best with Conquest, Domination or Team Deathmatch, with at least 300 tickets -- the longer the round runs, the better it works, longer than 40 minutes ideally. May work with Rush with very high ticket counts (see link below), but generally not recommended. Not recommended for other modes.

Don't send me private messages (PMs) unless you really need privacy, like your game server password. If you just have a question or need help, post in one of the threads. It's extra work for me to answer questions and give help in private messages and no one else gets the benefit of the answer.

Tuning your Scrambler settings

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.

So you've decided to use the between-round Scrambler. You've also read the note here and understand that even with the best of intentions, the scrambler can't be perfect and will sometimes not do what you expect.

How do you tune the settings to make them work as well as possible?

One of the most important settings to get right is Delay Seconds. No other setting has as big an impact on the success or failure of scrambles than the choice of delay.

Here's the problem. Between rounds, the game server goes through a series of time-dependent steps. Note that new players can join at any point in these steps.

Step 1) Announce the winner and show the final scoreboard

These are the series of screens you see at the end of a round. The UI is locked, but some players leave anyway with ALT-F4.

Step 2) 45 second countdown timer

You see at the top of the screen that the game server counts down to the next round. The UI allows players to leave the game.

Step 3) Load next map level?

If there are no more rounds left to play on this map level, the next map and mode needs to be loaded. This can take anywhere from 5 to 20 seconds (Grand Bazaar).

If there are still rounds left to play on this map, skip to Step 4.

Step 4) Swap teams (except for SQDM), if needed

All modes except SQDM may result in a swap of teams. This doesn't always happen and I'm not sure how the game server decides when teams need swapping and when they don't.

Step 5) Start the round

Finally, the new round starts. Players are shown the deployment screen and can spawn.

As you can see, a lot of stuff is changing. Players are leaving, players are joining, maps are being loaded or not, teams are getting swapped. All of this stuff goes at its own pace, there's nothing a plugin can do to speed this up, slow it down or stop it. That means that the plugin has a limited window of time in which to do the scramble and the length of time varies from round to round, depending on map, mode, number of players that leave, etc. One of the biggest sources of uncertainty is the amount of time it takes to load a new map. That can range from 0, if there are rounds left to play, to 20 seconds for Grand Bazaar.

So what is an admin to do?

What I do is watch the plugin log at the end of the round. I set Debug Level to 6 so that I can see everything that the game server is doing. I turn scrambling on, so I can see when it starts. Then I just watch, or save the log for later inspection. I look at several rounds, rounds where a new map or mode loads, rounds where a new map doesn't load, rounds where teams are swapped, rounds were teams are not swapped. You need several examples to get a good guess at what the best delay would be.

What I'm looking for is a point in time that is as late as possible, so that most of the players who are going to leave have already left, but not so late that the level loads, because then team swapping will start and mess up the scramble. The scramble itself takes between 10 and 15 seconds to do its work, depending on number of players that need to be moved, which makes tuning the time difficult. Ideally, you want the Scrambler to always finish about 4 seconds before the next level loads.

Generally, a Delay Seconds of between 50 to 58 seconds works best..

You may be wondering why the default delay is 30 seconds. Well, that's the lesser of two evils choice for the case where there are more rounds to play on a map and the scrambler is set up to scramble every round. A higher default delay might end up going too long and running into the team swapping step, which would cause the scrambler to fail. On the other hand, there's a good 10 to 12 seconds after the scrambler finishes where players leave, which may also cause the scrambler to fail. There's no good choice, so better to avoid the certainty of failure (run too late) over the possibility failure (too many players leave after the scramble completes).

What this post is all about is helping you change the delay to something that might work better.

Here's an example log from a server where the Delay Seconds was set to 45. This server is set up for Scavenger and only runs one round per map, so every round ends with a new level loading. I've annotated it with key events and times.

So 45 is a bit too soon. Players have about 20 seconds after the scramble to leave, that's a lot of time. Using 50 seconds might be better.

On the other hand, you shouldn't base your guess on just one observation. Look at several rounds for several different maps, with and without team swapping, and see if you can pick a time that comes as close to the Level loaded detected event as possible, without going past it for any combination of maps or modes.

Good hunting!

Last edited by PapaCharlie9; 27-11-2013 at 17:34.

Don't send me private messages (PMs) unless you really need privacy, like your game server password. If you just have a question or need help, post in one of the threads. It's extra work for me to answer questions and give help in private messages and no one else gets the benefit of the answer.

Why doesn't the Scrambler always work?

UPDATE FOR 1.0.4.0

So you have your scrambler settings properly configured and tuned and everything is looking good. Except that every now and then, the scrambler seems to fail. A squad with the same tag gets split up or players with the same tag get split between teams.

WHY??!?!?

All actual scrambler failures fall into one of three categories:

1) Players leaving after the scramble has completed

2) Game server errors: these are outright bugs in the game server

3) Extremely rarely: new player joins during a critical time window, measured in milliseconds

There are also a lot of apparent failures that are blamed on the scrambler, but are not its fault. Most of these occur because players immediately change squads as soon as their deployment screen is visible at the start of the next round. Since the scrambled command for Show Command In Log doesn't run until after the first spawn of a player into the game, it just takes one player to change squads out of a squad that they were originally assigned to by the scrambler to make it look like the squad was split to the scrambled command.

You can't do anything about categories (2) or (3), but you can about category (1). Fine tuning your Delay Seconds setting so that the scrambler starts as late as possible, but finishes about 4 seconds before the Load level detected signal, will minimize the chance that leaving players spoil the scramble.

obsolete:

Besides all of the timing related problems listed in the previous post, there is also a problem with conflicting requirements. The Scrambler balances players by skill, using the ScrambleBy metric that you selected. For example, if you select RoundSPM, the plugin does a good job of making the average RoundSPM of each team pretty close, barring some of the restrictions imposed by other settings, such as Keep Squads Together. The RoundSPM can't be made exactly equal if the plugin is not allowed to split a strong player out of a squad to balance off a team that is low in SPM points. Despite those constraints, it does a remarkably good job, usually. A natural consequence of balancing by skill is that the number of players on each team will be unequal. Sometimes the difference is large, by 6, 8 or even 12 players, depending on how lopsided skills are. So it is not unusual for the balancer to take 40 players and split them 16 vs 24, an 8 player difference.

Unfortunately, the game server has a separate agenda. It wants the number of players on each team to be equal at the start of the round. So after MB has carefully preserved squads, kept clan tags together and made ScrambleBy skills equal (if possible while preserving everything else), the game server moves players from the bigger team to the smaller team at random, making it appear as if the Scrambler failed.

So basically, the more lopsided the skill distribution is, the more likely the scramble will fail.

Here's an example. Compare the squad and team assignments in the AFTER list, which is after the scrambler has done it's work, and the final list, which is after the game server did team swapping and rebalancing.

Don't send me private messages (PMs) unless you really need privacy, like your game server password. If you just have a question or need help, post in one of the threads. It's extra work for me to answer questions and give help in private messages and no one else gets the benefit of the answer.

Why doesn't autobalance activate when the difference between teams is 2 or more?

The difference between teams that is considered balanced is controlled by the population settings.

Consider teams that are 10 vs 12. Is that balanced or should a player be moved to make it 11 vs 11? It depends on your per-mode Definition Of High Population For Players >= setting. When the number of players is equal or greater than the number you set, autobalance is activated when the difference is 3 or more. When the number of players is less than the number you set, autobalance is activated when the difference is 2 or more.

For the example, if your setting for High Population is 16, 10 vs 12 is considered balanced. If your setting is 32, 10 vs 12 is not balanced and a player will be moved to make it 11 vs 11.

EXCEPTION: For SQDM, autobalance is triggered when the difference between squads is 2 or more, regardless of population.

Why doesn't MULTIbalancer balance when the differences is large, like 10 vs 16?

This can be due to your settings having a lot of exclusions or exemptions. Suppose you have Same Clan Tags In Squad enabled and per-mode Only Move Weak Players set, with Percent Of Top Of Team Is Strong defaulted to 50. That means only the bottom half of each team is available for moving. If all 8 of those players on the team of 16 have clan tags in the same squad, none of them will be moved. That means the pool of players than can be moved for balance is zero, thus, no balancing.

Another reason that a 10 vs 16 server might remain unbalanced is due to the BF4 in-game Option called SQUAD WITH JOINING FRIEND. If a friend joins on you and there is no room in your current squad or your current squad is locked, you will be moved to a new squad and your friend added to that squad. This move could happen immediately, or it could be delayed until later in the round, or it could be delayed all the way to the beginning of the next round. If the move happens after MULTIbalancer has balanced the teams, teams could become unbalanced.

If a lot of friends join on a friend, say 5 friends joining on 1, all 5 of those friends will be added to one team. That can throw off the balance very quickly, and even if MULTIbalancer balances teams to fix this, the delay in moving friends together into a new squad could switch all the players back to join their friends, unbalancing the teams again. Finally, if all those friends have the same clan tag or some other exclusion applies, they won't be moved by MULTIbalancer at all, leaving the team lopsided.

Consider encouraging players to disable the BF4 option for SQUAD WITH JOINING FRIEND if you use MULTIbalancer. See the screenshot below.

For MULTIbalancer 1.1.0.0 and later: consider setting Enable Admin Kill For Fast Balance to True. Instead of waiting for players to die, a player will be selected, admin killed, and then forced to move. This will be repeated until teams are closer in balance and the normal autobalancer can take over.

Last edited by PapaCharlie9; 24-01-2014 at 18:26.

Don't send me private messages (PMs) unless you really need privacy, like your game server password. If you just have a question or need help, post in one of the threads. It's extra work for me to answer questions and give help in private messages and no one else gets the benefit of the answer.

Play Styles

This section, which used to be in the embedded plugin documentation and in the plugin post #1, has been moved here, to reduced the size of both.

Details
This plugin provides a rich set of features for a wide variety of team management styles. Some (but not all) of the styles this plugin is designed for are listed below, and you can mix and max these styles depending on the game mode, number of players on the server and whether it is early or late in the round:

Fair play
This style aims for each round to be as evenly balanced in skills as possible. Every round should end as a "nail-biter". If you want to see Conquest rounds end with ticket differences less than 20 or Team Deathmatch or Squad Deathmatch rounds end with kill differences less than 5 or Rush matches that get down to 1 ticket before the last MCOM is blown, the settings provided by this plugin give you the best chance to have that experience on your server.

Cutthroat
This is pretty much the exact opposite of Fair Play. Every player for himself and damn the consequences. If one team gets stacked with good players, that's just too bad for the other team. The newest players to join are the ones moved to keep teams balanced. This plugin supports cutthroat style by turning most of the features off, except new player reassignment and new player autobalancing.

Retain players
This style aims to retain players on your server. Players are left alone to do what they want, but aspects of team balance and team switching that cause players to leave, like too much autobalancing, team stacking, too many Colonel 100's on one team, too many players from one clan on one team, etc., are dealt with. Only things that are related to team balance are managed, however. This plugin doesn't do anything about, for example, base raping.

Keep friends together
This style recognizes that friends like to play together. To the extent that friends wear the same clan tag or are specified in a friend's list, the balancer and unstacker can be configured to keep friends together.

Split problem clans apart
This style recognizes that some "pro" clans can spoil everyone's fun if they play together, so the balancer and unstacker can be configured to split players with the same clan tag apart and spread them out evenly between teams.

Don't send me private messages (PMs) unless you really need privacy, like your game server password. If you just have a question or need help, post in one of the threads. It's extra work for me to answer questions and give help in private messages and no one else gets the benefit of the answer.

How do I keep players together?

Introduction

You're getting complaints. Clan members wearing the same tags are getting split up for balance, unstacking, scrambling or dispersal. Friends who don't wear clan tags or have different clan tags want to stay in the same squad or on the same team. You don't want to put them on the whitelist, because then they are excluded from everything, except the scrambler, and maybe the scrambling is the most important to them for sticking together.

What is an admin to do?

Quick & Easy Charts

These charts tell you what setting to use to accomplish the goal listed in the column header for the scope in the row header. For example, to keep squads together by clan tag, look down the Keep Together By Clan Tag column until you find the Squad row. The table cell tells you which settings to use. The number refers to the section to look in for the setting, for example, "2-" means look in Section 2 - Exclusions.

Balancing/Unstacking

Keep Together By Clan Tag

Keep Together By Friends List

Squad

2-Same Clan Tags In Squad: True

2-On Friends List: True

Team

2-Same Clan Tags In Team: True

2-On Friends List: True
2-Apply Friends List To Team: True

Scrambling

Keep Squads Together

Keep Tags Together

Keep Friends Together

Squad

4-Keep Squads Together: True

N/A

N/A

Team

N/A

4-Keep Squads Together: False
4-Keep Clan Tags In Same Team: True

4-Keep Squads Together: False
4-Keep Friends In Same Team: True

The next chart is a little different. It assumes you are doing the type of Dispersal listed in the column header, but you want to make exceptions for the types of "keep together" in the rows.

Don't send me private messages (PMs) unless you really need privacy, like your game server password. If you just have a question or need help, post in one of the threads. It's extra work for me to answer questions and give help in private messages and no one else gets the benefit of the answer.

How do I use Whitelist option codes?

Introduction

The Whitelist is the big hammer, the weapon of mass destruction. Adding a name or an entire clan (by tag name) to the Whitelist excludes them from all balancing, unstacking and unswitching. That's great if you want total exclusion, but sometimes you don't. For example, you might have a clan that is totally happy to be moved for balance or unstacking, but they don't want to be restricted from switching teams. If you put the clan tag on the Whitelist, that will make team switching unrestricted, but it will also exclude the entire clan from all balancing and unstacking. The Whitelist can be an all or nothing kind of control.

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 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

Last edited by PapaCharlie9; 02-07-2013 at 15:58.

Don't send me private messages (PMs) unless you really need privacy, like your game server password. If you just have a question or need help, post in one of the threads. It's extra work for me to answer questions and give help in private messages and no one else gets the benefit of the answer.

MULTIbalancer lets you use different settings for different game modes. All of these per-mode settings are in Section 8. Settings for balancing and unstacking depend on the number of tickets in a round and the maximum number of players. If you have mixed modes in your map rotation, like Conquest Large and Domination, you can't just pick one maximum ticket value, since Conquest might be 800 and Domination might be 400. The Section 8 settings let you set different ticket and population ranges for different modes.

The Settings Wizard helps you do the initial setup for each game mode. It's only meant to get you started. If you change Section 8 settings after running the Wizard, do not run the Wizard again for the same mode, or you will lose your changes.

NOTE: For BF3, the Settings Wizard can't be used with CTF and unstacking can't be used with Gun Master. For BF4, the Settings Wizard can't be used for Obliteration or Defuse.

Here's a BF4 example to work through. Let's assume you are setting up Conquest Large. Note down the answers to these questions:

Question 1: Do you have Metro in your rotation?

For BF4, this will always be no (False).

Question 2: What is the maximum number of players allowed in Conquest Large on your server?

Usually this is the same for all modes on your server, like 64 or 48. Do not count commanders or spectators, just players.

Let's say the answer for this example is 40.

Question 3: For each map in the rotation for Conquest Large, what is the maximum number of tickets for that map?

For BF4 they might all be 800 (or 1000 or 1200, whatever). For BF3, you could easily have one map that is 600 and another than is 700. In that case, note the highest and lowest maximums across all of the maps. Suppose you have 6 maps with these max tickets: 600, 600, 700, 600, 700, 650. In this case, your highest is 700 and your lowest is 600.

For the purpose of this initial setup example, we will simplify this case so that all of the maps have the same ticket size of 600 (highest and lowest are the same).

Question 4: What style of balancing do you want to use?

You should refer to post #1 in the MULTIbalancer thread for the list of styles (presets), summarized here:

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

Enable Scrambler: up to you, set to True if you want scrambling between rounds, then review Section 4 settings.

That's it! Those basics should be good enough for most ranked servers.

Last edited by PapaCharlie9; 29-12-2013 at 17:42.

Don't send me private messages (PMs) unless you really need privacy, like your game server password. If you just have a question or need help, post in one of the threads. It's extra work for me to answer questions and give help in private messages and no one else gets the benefit of the answer.

Several users of BF4 MULTIbalancer are experiencing one or more of the following symptoms:

* Despite having the correct clan tag on the Whitelist, clan members are getting moved for balance
* The bad tags command in plugin.log shows a long list of names
* The plugin.log has errors like "HTTP timeout" in it
* At Debug Level 7, the Battlelog fetch times are very large, like over 100 seconds

AS OF 1.0.9.0 - THIS IS NOT A PROBLEM WITH THE PLUGIN. All of these are symptoms of some kind of HTTP or network limitation or congestion problem associated with your Procon instance. The problem might be on your end, in your layer hosting data center or server, or it could be on the Battlelog end, or both. During BF3, requests to Battlelog were throttled, meaning anything over 5 request in 20 seconds was rejected with an error. Something similar could be happening for BF4.

Note that in all reported cases so far, the problem comes and goes. Sometimes the tag fetch works, sometimes it doesn't.

How to verify that you are having a Battlelog network problem

These steps will show whether or not you are having a networking problem right at this moment.

Find the Show Command In Log setting at the bottom of the Plugin Settings for MULTIbalancer. You can type commands into that text field, press the Enter key, and see results in the log window below the command. Make sure you have plugin logging enabled in Procon Tools => Options, Basic settings. If you can't copy & paste out of the log window because it scrolled off, find the plugin.log file in procon/Logs/(your server ip_port)/(date)_plugin.log.

Command:bad tags

This will show you a list of all tag fetch failures to date. The list is soldier names that experienced a failure.

Command:tags

This will show all of the successful tag fetches for players currently in your server. You have a problem if you have players with known tags in your server currently, but you get this:

Code:

[Show In Log] Command: tags
[Show In Log] === END OF TAGS ===

Command:lists

This will verify that you have your Whitelist configured correctly.

Command:whitelist

This is a list of all the players currently in the game server that are excluded by the Whitelist. You have a problem if this list is empty and you have whitelisted players in the server.

Check to make sure On Whitelist in Section 2 of the settings is enabled (set to True).

Finally, set Debug Level to 7 and pick a few soldier names, like your own to start with, that you are sure have a clan tag in Battlelog. For example, for my soldier name PapaCharlieNiner, use this command:

The total time should be less than 12 seconds (in the case above, total time was about 6 seconds). If you see total times that are more than 12 seconds, that could be a problem. If you see total times more than 30 seconds, there is a definite problem with your network connection to Battlelog or with Battelog itself.

What can you do to fix it?

It might not be possible to fix. Best that you understand that up front, this problem may never go away.

That said, there may be things you can do to reduce the risk of this problem happening. In general, reduce the outgoing network load from your Procon instance. You can do this in several ways:

* If the network is currently working (according to a few test f4 commands/names), disable MULTIbalancer, wait 3 seconds, set Debug Level to 7, then restart your layer or Procon instance. Once it is reconnected to your game server, re-enable MULTIbalancer. That will clear out the bad tags list and refetch tags for all players currently in the server. Watch the log for a minute or two and see how long it takes to fetch each player and whether or not you see any errors. Once all players have been fetched or all errors have been seen, set Debug Level back to 2.

* Disable, or move to a different host, any plugin that makes outgoing network connections. Here are some plugins known to make outgoing network connections: Insane Limits, AdKats, CheatDetector, TeamSpeak 3 Sync, and "Chat, GUID, Stats and Mapstats Logger". Moving to a different host may help if the problem is associated with a rate limit on the IP address of your current Procon layer host. Using a different IP address spreads the load.

* In MULTIbalancer, set Which Battlelog Stats to ClanTagOnly. If you are using BattleSPM or BattleKDR in your other settings, change them to RoundSPM or RoundKDR, etc., since you are not fetching Battlelog stats.

* In MULTIbalancer, try reducing the Maximum Request Rate to 5 or less, down to 1.

* Use Battlelog Cache (not currently updated to BF4). This shifts the network load off of MULTIbalancer to Battlelog Cache plugin.

* If you just can't get reliable network connections to Battlelog no matter what you do, you will not be able to use clan tags for settings in MULTIbalancer. You could instead list each player by name in the Whitelist, or use the Enable Whitelisting Of Reserved Slots List and put all the names in the reserved slots list instead. Similarly, use the Friends List to list all the members of your clan by name, so that they will be treated as having the same clan tag. List them all on one line in the Friends List. See the Friends List setting description in post #1 of the MULTIbalancer plugin thread and the FAQ in this thread for details on using the Friends List to keep players together.

Last edited by PapaCharlie9; 09-12-2013 at 22:03.

Don't send me private messages (PMs) unless you really need privacy, like your game server password. If you just have a question or need help, post in one of the threads. It's extra work for me to answer questions and give help in private messages and no one else gets the benefit of the answer.

The total number of swaps allowed in a round is 12. That means at most 24 players will be moved, 12 weak and 12 strong.

Each time unstacking is detected, 3 swaps will be done (total of 6 moves), up to the maximum of 12 -- the 3 swaps form a group.

After a group of swaps is completed, if unstacking is still needed, at least 10 minutes (600 seconds) must elapse before the next group of swaps is attempted, again, up to a maximum of 12 swaps.

So at time 22:00, Group 1 of swaps is done:

Swap #1: Strong1 to losing team, Weak1 to winning team
Swap #2: Strong2 to losing team, Weak2 to winning team
Swap #3: Strong3 to losing team, Weak3 to winning team

Unstacking is still needed, so 10 minutes later at 22:10, Group 2 of swaps is done:

Swap #4: Strong4 to losing team, Weak4 to winning team
Swap #5: Strong5 to losing team, Weak5 to winning team
Swap #6: Strong6 to losing team, Weak6 to winning team

Unstacking is still needed, so 10 minutes later at 22:20, Group 3 of swaps is done:

Swap #7: Strong7 to losing team, Weak7 to winning team
Swap #8: Strong8 to losing team, Weak8 to winning team
Swap #9: Strong9 to losing team, Weak9 to winning team

Unstacking is no longer needed, so nothing further happens. We did not reach the max of 12 swaps, so if unstacking were needed later, and as long as at least 10 minutes had elapsed (22:30 or later), 1 more group of 3 swaps may be attempted.

Don't send me private messages (PMs) unless you really need privacy, like your game server password. If you just have a question or need help, post in one of the threads. It's extra work for me to answer questions and give help in private messages and no one else gets the benefit of the answer.