Page 1 of 2 12 LastLast
Results 1 to 10 of 11
  1. #1

    MULTIbalancer: FAQ and detailed explanations

    Post #1 (this post) contains links to posts in the Plugin thread and this thread where FAQs are answered. Subsequent posts in this thread include details that haven't been asked about yet.

    Getting Started: How to do your first setup
    https://forum.myrcon.com/showthread....ll=1#post84642

    Hier findest du die gleiche Anleitung in Deutsch (Getting Started: How to do your first setup)
    https://forum.myrcon.com/showthread....gen-in-Deutsch

    Status numbers explained
    https://forum.myrcon.com/showthread....l=1#post119600

    What's the difference between AllTime and Reset Battlelog stats?
    https://forum.myrcon.com/showthread....ll=1#post73710

    Tuning your Scrambler settings
    https://forum.myrcon.com/showthread....ll=1#post73721

    Why doesn't the Scrambler always work?
    https://forum.myrcon.com/showthread....ll=1#post73787

    Why doesn't autobalance activate when the difference between teams is 2 or more?
    https://forum.myrcon.com/showthread....ll=1#post74327

    What play styles does this plugin support?
    https://forum.myrcon.com/showthread....ll=1#post74833

    How do I keep players together?
    https://forum.myrcon.com/showthread....ll=1#post74861

    How do I use Whitelist option codes?
    https://forum.myrcon.com/showthread....ll=1#post74862

    BF4: Clan Getting Moved, Whitelist Not Working, Bad Tags or HTTP errors
    https://forum.myrcon.com/showthread....ll=1#post87465

    How does the Dispersal Evenly List work?
    https://forum.myrcon.com/showthread....l=1#post111120

    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.

    Per-Mode Unstacking Settings Explanation
    https://forum.myrcon.com/showthread....ll=1#post93013

    How do I fine-tune my Unstacking settings?
    (This post talks about a TDM server, but most of the details apply to any suitable mode)
    https://forum.myrcon.com/showthread....l=1#post103039

    How is the Unstacking Ratio calculated for Rush?
    https://forum.myrcon.com/showthread....ll=1#post73712

    For Rush, how do I set Stage X Ticket Percentage To Unstack Adjustments settings?
    https://forum.myrcon.com/showthread....8833#post88833
    Last edited by PapaCharlie9; 28-03-2015 at 17:29.
    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.

  2. #2

    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.

    Code:
    [17:35:11] Got OnRoundOver: winner 1
    [17:35:11] :::::::::::::::::::::::::::::::::::: Round over detected ::::::::::::::::::::::::::::::::::::
    [17:35:11] OnRoundOver: Game state = RoundEnding
    [17:35:11] Got OnRoundOverPlayers
    [17:35:11] Got OnRoundOverTeamScores
    [17:35:11] (SCRAMBLER) Scrambling teams by RoundKills in 45 seconds
    [17:35:12] FINAL STATUS FOR PREVIOUS ROUND:
    [17:35:12] Update waiting for Sgt-Molotov to be assigned a team    <== NEW PLAYERS JOINING
    [17:35:12] Update waiting for VeeJayJay to be assigned a team
    [17:35:12] Status: Plugin state = Active, game state = RoundEnding, Unstacking Disabled
    [17:35:12] Status: Map = Talah Market, mode = Scavenger, time in round = 01:39:42, tickets = 403/0 <- [600]
    [17:35:12] Status: Autobalance is not active, phase = Late, population = Medium, speed = Stop, unstack when ticket ratio >= 0%
    [17:35:12] Status: 0/23 raged, 23 reassigned, 1 balanced, 0 unstacked, 0 unswitched, 71 excluded, 7 exempted, 0 failed; of 259 TOTAL
    [17:35:12] Status: Team counts [19] = 9(US) vs 10(RU), with 0 unassigned
    [17:35:12] Status: Team difference = 1
    [17:35:12] +------------------------------------------------+
    [17:35:30] Player left: DuuBa_Jonny    <== PLAYERS LEAVING
    [17:35:38] Player left: pedro_crepaldi
    [17:35:44] Player left: KnitGnosis
    [17:35:51] (SCRAMBLER) Last chance player list update, account for players who have left
    [17:35:51] Update waiting for Sgt-Molotov to be assigned a team
    [17:35:51] Update waiting for VeeJayJay to be assigned a team
    [17:35:51] Status: Plugin state = Active, game state = RoundEnding, Unstacking Disabled
    [17:35:51] Status: Map = Talah Market, mode = Scavenger, time in round = 01:40:21, tickets = 403/0 <- [600]
    [17:35:51] Status: Autobalance is not active, phase = Mid, population = Medium, speed = Adaptive, unstack when ticket ratio >= 120%
    [17:35:51] Status: 0/26 raged, 23 reassigned, 1 balanced, 0 unstacked, 0 unswitched, 71 excluded, 7 exempted, 0 failed; of 259 TOTAL
    [17:35:51] Status: Team counts [16] = 6(US) vs 10(RU), with 0 unassigned
    [17:35:51] Status: Team difference = 4
    [17:35:52] Player left: Arebinaga    <== MORE PLAYERS LEAVING
    [17:35:53] Player left: daniloheraclio
    
    <== This is 45 seconds after the round ended.
    [17:35:56] (SCRAMBLER) Starting scramble of 14 players, winner was US
    ...
    <== Scrambler doing scrambling moves
    [17:35:56] (SCRAMBLER) MOVE [007]SaNsaO_007 to US team, squad Alpha
    [17:35:56] (SCRAMBLER) MOVE [FADA]masdetonados to US team, squad Alpha
    [17:35:56] (SCRAMBLER) MOVE stephanizanato to US team, squad Alpha
    [17:35:56] (SCRAMBLER) MOVE [TwD]TwD-KiIL to US team, squad Alpha
    [17:35:56] (SCRAMBLER) MOVE Arkji to US team, squad Charlie
    [17:35:56] (SCRAMBLER) MOVE [HERO]SimoHaya93 to US team, squad Charlie
    [17:35:56] (SCRAMBLER) MOVE [HERO]MendingoHerege to US team, squad Delta
    [17:35:57] Got OnPlayerTeamChange: SaNsaO_007 1 1
    [17:35:57] (SCRAMBLER) MOVE D_A_R_T_H-D_U_K to RU team, squad Charlie
    [17:35:57] Update player SaNsaO_007 team from 2 to 1
    [17:35:57] Got OnPlayerSquadChange: SaNsaO_007 1 1
    [17:35:57] Got OnPlayerMovedByAdmin: SaNsaO_007 1 1 False
    [17:35:57] Got OnPlayerSquadChange: masdetonados 1 1
    [17:35:57] Got OnPlayerMovedByAdmin: masdetonados 1 1 False
    [17:35:57] Got OnPlayerTeamChange: stephanizanato 1 1
    [17:35:57] Update player stephanizanato team from 2 to 1
    [17:35:57] Got OnPlayerTeamChange: TwD-KiIL 1 1
    [17:35:57] Update player TwD-KiIL team from 2 to 1
    [17:35:57] Got OnPlayerSquadChange: Arkji 1 3
    [17:35:57] Got OnPlayerMovedByAdmin: Arkji 1 3 False
    [17:35:57] Got OnPlayerSquadChange: SimoHaya93 1 3
    [17:35:57] Got OnPlayerMovedByAdmin: SimoHaya93 1 3 False
    [17:35:57] Got OnPlayerTeamChange: MendingoHerege 1 3
    [17:35:57] Update player MendingoHerege team from 2 to 1
    [17:35:57] Got OnPlayerSquadChange: MendingoHerege 1 4
    [17:35:57] Got OnPlayerMovedByAdmin: MendingoHerege 1 4 False
    [17:35:57] Got OnPlayerTeamChange: D_A_R_T_H-D_U_K 2 3
    [17:35:57] Update player D_A_R_T_H-D_U_K team from 1 to 2
    [17:35:57] Got OnPlayerSquadChange: D_A_R_T_H-D_U_K 2 3
    [17:35:57] Got OnPlayerMovedByAdmin: D_A_R_T_H-D_U_K 2 3 False
    ....
    [17:36:01] (SCRAMBLER) DONE!     <== Scrambler took 5 seconds
    
    [17:36:03] Player left: Arkji <== Player leaving after being scrambled, dammit!
    
    [17:36:15] <== Here, at 64 seconds, would be the ideal time for the scramble to finish, for this particular map/mode/round situation.
    
    <== New level loading 68 seconds after the end of the previous round
    [17:36:19] Got OnLevelLoaded: XP4_Quake Scavenger0 0/1
    [17:36:19] :::::::::::::::::::::::::::::::::::: Level loaded detected ::::::::::::::::::::::::::::::::::::
    [17:36:19] OnLevelLoaded: Game state = RoundStarting
    [17:36:20] DEBUG: ServerInfo update: XP4_Quake/Scavenger0
    [17:36:20] DEBUG: ServerInfo update: fMaxTickets = 600
    <== Takes about 8 seconds for the new map to load
    
    <== Teams being swapped 76 seconds after the end of the previous round
    [17:36:27] Got OnPlayerTeamChange: josa_br 1 2
    [17:36:27] Update player josa_br team from 2 to 1
    [17:36:27] Got OnPlayerTeamChange: shaloon22 1 2
    [17:36:27] Update player shaloon22 team from 2 to 1
    [17:36:27] Got OnPlayerTeamChange: Chamuskara 2 2
    [17:36:27] Update player Chamuskara team from 1 to 2
    ... similarly for the other players, lots of team change events
    [17:36:31] :::::::::::::::::::::::::::::::::::: First spawn detected ::::::::::::::::::::::::::::::::::::
    [17:36:31] OnPlayerSpawned: Game state = Playing
    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.

  3. #3

    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.

    Code:
    Command: scrambled
    ===== BEFORE =====
    Haztesx (Bravo, S:#1)           -      FireDemonBR (Foxtrot, S:#2)
    Makussz0r (Bravo, S:#3)         -  [DLM]-iBlaackMooN (Alpha, S:#5)
    [BRA]splinterbzf (Alpha, S:#4)   -  [AUKA]ArSC89_CL (Charlie, S:#9)
    PSICOTIC00 (Charlie, S:#6)       - [iiii]federicoaldabe (Alpha, S:#12)
    PARAGOD3 (Bravo, S:#7)           -    [CDS]Monodiego (Bravo, S:#13)
    THCCCCCCCCCCCCCC (Charlie, S:#8) - [NMS]-NMS-DrBiscoito (Bravo, S:#15)
    [ROT]SuellingtonPaulo (Echo, S:#10) - [Lixo]CerveJaria_Lixo (Delta, S:#16)
    [BFCH]XNidiusX (Alpha, S:#11)    - [Hugo]Hugo_Diogo (Foxtrot, S:#17)
    Coala_assassino (Charlie, S:#14) -       CrazyDave48 (Delta, S:#18)
    [BP]Kiabbo01 (Delta, S:#24)      -        Zathantj (Charlie, S:#19)
    Atilosky (Delta, S:#26)          -     Masterloud4 (Charlie, S:#20)
    [Lgdz]Noizee95 (Alpha, S:#27)    -           supremhz (Echo, S:#21)
    marceloDK22 (Delta, S:#28)       -     [juju]juju_cdg (Echo, S:#22)
    whitemusk1010 (Echo, S:#31)      -        Magoblanco (Delta, S:#23)
    [FTB]WiseShooter (Echo, S:#32)   -        2006carl (Charlie, S:#25)
    kalangotango (Echo, S:#33)       -          lauandan (Delta, S:#29)
    fredman26 (Alpha, S:#34)         -           CostaDS (Alpha, S:#30)
    [nS]-nS-cegueta (Foxtrot, S:#35) -       spline009 (Foxtrot, S:#36)
    [DAD]DAD-the-general (Bravo, S:#39) -      [GT]oohNinja (Bravo, S:#37)
    SingleSpirit (Charlie, S:#40)    -     [BR]RedFoo-BR (Alpha, S:#38)
    DrGalinha (Golf, S:#44)          - [NMS]-NMS-EDUARDO- (Echo, S:#41)
    ArkeniO (Foxtrot, S:#45)         -           iGuiReis (Echo, S:#42)
                                     -    [ExT]Lutthiien (Bravo, S:#43)
    US AVG S:1839.82                 -                 RU AVG S:1442.13
    
    ===== AFTER =====
    Haztesx (Bravo, S:#1)            -      FireDemonBR (Foxtrot, S:#2)
    Makussz0r (Bravo, S:#3)          -   [BRA]splinterbzf (Alpha, S:#4)
    PARAGOD3 (Bravo, S:#7)           -  [DLM]-iBlaackMooN (Bravo, S:#5)
    [AUKA]ArSC89_CL (Charlie, S:#9)  -       PSICOTIC00 (Charlie, S:#6)
    [CDS]Monodiego (Alpha, S:#13)    - THCCCCCCCCCCCCCC (Charlie, S:#8)
    [NMS]-NMS-DrBiscoito (Alpha, S:#15) - [ROT]SuellingtonPaulo (Echo, S:#10)
    [Lixo]CerveJaria_Lixo (Delta, S:#16) -    [BFCH]XNidiusX (Alpha, S:#11)
    CrazyDave48 (Delta, S:#18)       - [iiii]federicoaldabe (Bravo, S:#12)
    Zathantj (Charlie, S:#19)        - Coala_assassino (Charlie, S:#14)
    Masterloud4 (Charlie, S:#20)     - [Hugo]Hugo_Diogo (Foxtrot, S:#17)
    Magoblanco (Delta, S:#23)        -          supremhz (Delta, S:#21)
    [BP]Kiabbo01 (Echo, S:#24)       -    [juju]juju_cdg (Delta, S:#22)
    2006carl (Charlie, S:#25)        -    [Lgdz]Noizee95 (Alpha, S:#27)
    Atilosky (Echo, S:#26)           -           CostaDS (Bravo, S:#30)
    marceloDK22 (Echo, S:#28)        -      whitemusk1010 (Echo, S:#31)
    lauandan (Delta, S:#29)          -   [FTB]WiseShooter (Echo, S:#32)
    [GT]oohNinja (Alpha, S:#37)      -       kalangotango (Echo, S:#33)
    [DAD]DAD-the-general (Bravo, S:#39) -         fredman26 (Alpha, S:#34)
    [ExT]Lutthiien (Alpha, S:#41)    -    [nS]-nS-cegueta (Golf, S:#35)
    DrGalinha (Golf, S:#44)          -       spline009 (Foxtrot, S:#36)
                                     -     [BR]RedFoo-BR (Bravo, S:#38)
                                     -    SingleSpirit (Charlie, S:#40)
                                     -            ArkeniO (Golf, S:#42)
                                     -          iGuiReis (Delta, S:#43)
                                     - [NMS]-NMS-EDUARDO- (Delta, S:#45)
    US AVG S:1836.60                 -                 RU AVG S:1476.52
    ===== END =====
    
    Player left: Magoblanco
    
    :::::::::::::::::::::::::::::::::::: Level loaded detected ::::::::::::::::::::::::::::::::::::
    
    GAME SERVER REBALANCES AND MOVES PLAYERS HERE
    Players in bold were moved to a different squad
    Players in italic are new
    
    FireDemonBR (Foxtrot, S:#2)  - [DAD]DAD-the-general (Bravo, S:#39)       
    [NMS]-NMS-EDUARDO- (Delta, S:#45) -         Makussz0r (Bravo, S:#3) 
    supremhz (ECHO, S:#21)        -  [CDS]Monodiego (BRAVO, S:#13)
    PSICOTIC00 (Charlie, S:#6)       -          PARAGOD3 (Bravo, S:#7)
    [BRA]splinterbzf (BRAVO, S:#4) - Masterloud4 (GOLF, S:#20)
    [NMS]-NMS-DrBiscoito (Alpha, S:#15) - [ROT]SuellingtonPaulo (Echo, S:#10)
    THCCCCCCCCCCCCCC (Charlie, S:#8) -    [BFCH]XNidiusX (Alpha, S:#11)
    Coala_assassino (DELTA, S:#14) -           Haztesx (Bravo, S:#1)
    Zathantj (Charlie, S:#19)        -          Atilosky (DELTA, S:#26)
    [FTB]WiseShooter (Echo, S:#32)   - [AUKA]ArSC89_CL (None, S:#9)
    iGuiReis (ECHO, S:#43)        -          DrGalinha (Golf, S:#44) 
    kalangotango (Echo, S:#33)       -    kevinsberger (CHARLIE, S:?)
    2006carl (Charlie, S:#25)        -       marceloDK22 (DELTA, S:#28)
    [juju]juju_cdg (ECHO, S:#22) -         [BP]Kiabbo01 (DELTA, S:#24) 
    spline009 (Foxtrot, S:#36)       -      whitemusk1010 (Echo, S:#31)
    lauandan (Delta, S:#29)          -       [Lgdz]Noizee95 (Alpha, S:#27)   
    [GT]oohNinja (BRAVO, S:#37)  - [Lixo]CerveJaria_Lixo (Delta, S:#16)
    [BR]RedFoo-BR (ALPHA, S:#38) -         fredman26 (Alpha, S:#34)
    [ExT]Lutthiien (BRAVO, S:#41) -    [nS]-nS-cegueta (FOXTROT, S:#35)
    [iiii]federicoaldabe (ALPHA, S:#12) - CrazyDave48 (Delta, S:#18)
    [DLM]-iBlaackMooN (ALPHA, S:#5)  -    SingleSpirit (Charlie, S:#40)
    [Hugo]Hugo_Diogo (Foxtrot, S:#17)-            ArkeniO (FOXTROT, S:#42)
    CostaDS (ALPHA, S:#30)        -          
    
    Left:
    Magoblanco (Delta, S:#23)
    Last edited by PapaCharlie9; 01-07-2013 at 15:21.
    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.

  4. #4

    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.

    SquadWithFriend.jpg

    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.

  5. #5

    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.

  6. #6

    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.


    Dispersal By Rank By Groups Or List
    Same Tags In Squad 8-Disperse Evenly For Rank >=: non-zero value
    2-Same Clan Tags For Rank Dispersal: True
    8-Enable Disperse Evenly List: True
    8-Enable Strict Dispersal: False
    2-Same Clan Tags In Squad: True
    Same Tags In Team 8-Disperse Evenly For Rank >=: non-zero value
    2-Lenient Rank Dispersal: True
    2-Same Clan Tags In Team: True
    8-Enable Disperse Evenly List: True
    8-Enable Strict Dispersal: False
    2-Same Clan Tags In Team: True
    On Friends List 8-Disperse Evenly For Rank >=: non-zero value
    2-Lenient Rank Dispersal: True
    2-On Friends List: True
    8-Enable Disperse Evenly List: True
    8-Enable Strict Dispersal: False
    2-On Friends List: True
    Time Since Last Move 8-Disperse Evenly For Rank >=: non-zero value
    2-Lenient Rank Dispersal: True
    2-Minutes After Being Moved: non-zero value
    8-Enable Disperse Evenly List: True
    8-Enable Strict Dispersal: False
    2-Minutes After Being Moved: non-zero value
    Excluded By Whitelist 1-Whitelist: use code R 1-Whitelist: use code D
    Last edited by PapaCharlie9; 02-07-2013 at 15:57.
    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.

  7. #7

    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.

    That's why version 1.0.4.0 introduced Whitelist option codes. The codes enable you to apply whitelist exclusions selectively.

    Quick & Easy Chart

    This is copied from the main documentation post in the plugin thread.

    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.

  8. #8

    Getting Started: How to do your first setup

    Just starting out with MULTIbalancer? Using the plugin for the first time? This post contains an tutorial on how to use the Presets and Settings Wizards to get up and running.

    Before you begin, read through everything in post #1, #2, and #3 in the MULTIbalancer plugin thread. I know it is a lot and you don't have to retain all of it, but you should be at least familiar with the general concepts, like unstacking and scrambling.

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

    Most of the time, using Standard is good enough. For this example, just to do something different, lets use BalanceOnly.

    Now you are ready to set up your Conquest Large settings.

    Start with Section 1 - Presets.

    Use Round Phase, Population, and Exclusions preset: BalanceOnly

    Use your answer to Question 4 here. Don't worry if later you notice this changes to None or something else, that's all right. The preset just gets you started.

    Enable Unstacking: False

    Beginners are advised to disable unstacking, so leave this False. Besides, for this example, we are doing BalanceOnly anyway.

    Next is Enable Settings Wizard: True.

    For this example, fill in the new form items that are revealed with the answers to the questions from above. If you are doing a different mode, of course, the values will be different.

    Which Mode: Conquest Large

    Metro Is In Map Rotation: False

    Maximum Players For Mode: 40

    Lowest Maximum Tickets For Mode: 600

    Highest Maximum Tickets For Mode: 600

    Preferred Style Of Balancing: BalanceOnly (same choice you made for the preset)

    Now you are ready to apply the changes, set Apply Settings Changes to True.

    That's all the Wizard can do. You should see some messages in the plugin.log window telling you what the wizard did and that you should review the changes it made.

    Now scroll down to Section 8 - Conquest Large and finish the rest of the per-mode settings.

    Determine Strong Players By: RoundScore
    (You can choose anything here, use whatever scoring method you think is best. RoundScore is best for Conquest/Domination type modes, RoundKills is best for TDM/SQDM type modes)

    Only Move Weak Players: True
    (For now, leave this True. If you notice your server stays unbalanced for too long, change it to False).

    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.

  9. #9

    BF4: Clan Getting Moved, Whitelist Not Working, Bad Tags or HTTP errors

    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.

    If you think you are having a problem, type all the commands listed below and post in the MULTIbalancer thread here: https://forum.myrcon.com/showthread....lancer-1-0-7-0

    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:

    test f4 PapaCharlieNiner

    That's "f4", not "bf4". You should see something like this:

    Code:
    [08:50:26 62] [MULTIbalancer]:0 [Show In Log] Command: test f4 PapaCharlieNiner
    [08:50:26 63] [MULTIbalancer]:0 [Show In Log] Testing BF4 Clantag fetch:
    [08:50:26 63] [MULTIbalancer]:7 (FETCH) Fetching from Battlelog BF4 clanTag(PapaCharlieNiner)
    [08:50:26 92] [MULTIbalancer]:7 (FETCH) TIME took 2.28 secs, url: http://battlelog.battlefield.com/bf4/user/PapaCharlieNiner
    [08:50:27 50] [MULTIbalancer]:7 (FETCH) TIME took 3.56 secs, url: http://battlelog.battlefield.com/bf4/warsawoverviewpopulate/248897113/1/
    [08:50:27 53] [MULTIbalancer]:7 (FETCH) Set tag LGN for PapaCharlieNiner
    [08:50:27 56] [MULTIbalancer]:7 DEBUG: UpdateFromWhitelist([LGN]PapaCharlieNiner) set ALL flags!
    [08:50:27 57] [MULTIbalancer]:7 (FETCH) Battlelog BF4 tag updated: [LGN]PapaCharlieNiner
    [08:50:27 58] [MULTIbalancer]:0 [Show In Log] Status = Succeeded
    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.

  10. #10

    Per-Mode Unstacking Settings Explanation

    Setting up unstacking can be confusing because there are three concepts that need to be understood and each needs an understandable name.

    1) Swap: always a pair of single-player moves, one weak player and one strong player that exchange places on teams

    2) Group: a number of swaps done during an unstacking activation

    3) Delay: seconds between each group

    Unstacking needs to be done in groups. A single swap (2 moves) is not enough, usually, to affect team unstacking. Therefore several swaps need to be done in a single group.

    These concepts map directly to the corresponding settings:

    Max Unstacking Swaps Per Round
    Number Of Swaps Per Group
    Delay Seconds Between Swap Groups

    Let's look at some examples:

    Max Unstacking Swaps Per Round: 6
    Number Of Swaps Per Group: 2
    Delay Seconds Between Swap Groups: 300

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

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

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

    So at time 10: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

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

    Swap #3: Strong3 to losing team, Weak3 to winning team
    Swap #4: Strong4 to losing team, Weak4 to winning team

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

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

    Unstacking is still needed, but unfortunately, the maximum number of swaps (6) has been done already, so no more swaps may be done for the rest of the round.


    Max Unstacking Swaps Per Round: 12
    Number Of Swaps Per Group: 3
    Delay Seconds Between Swap Groups: 600

    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.

 

 

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •