Lerp( FClamp( Played_Rounds / RToBal , 0, AutoBalanceCurPPRWeightMax/100 ), PRI.AvgPPR, PPR )
The downside with using more of current PPR is that anyone over/underperforming will probably be switched or swapped.
PPR = points per roundNew_PPR = points per 120seconds
Quote from: holyspam on August 08, 2020, 16:33PPR = points per roundNew_PPR = points per 120secondsNo. It the new calculation assumes only that the current round will last 120 seconds. Old PPR is:a. "Points scored so far", when in round 1b. "The total of (all points scored in round 1 and all points scored so far in round 2)", when in round 2c. In round 3 onwards "(The total of all points scored, including the ones scored so far in this round) divided by (one less than the round number you're in).(Yes, I know b and c are the same calculation - but the impact is greater in round 2).New PPR is:Your total points in the game / (number of rounds played + "the proportion (up to a whole round) of this round played assuming that the current round will last 120 seconds")
The balancer aims to swap players to get as close to the same average team PPR as it can.
I think you need to read my posts above a little more carefully.
Quote from: Piglet on August 08, 2020, 17:14I think you need to read my posts above a little more carefully.I think you need to join ingame and see what's displayed.
there is another area in balancer that is flawed (or could be better)
need to look at the balancing code again because it has an idea of 'sticky players'
// move player that closest matches the required PPR gap / number of players needed for(C=Level.ControllerList; C!=None; C=C.NextController) { // Skip players who are on the don't switch list. //Note: (Piglet) This is the code as I found it. Surely the "continue" on this iterator has no effect! for(i=0; i<DontAutoBalanceList.Length; ++i) { if(DontAutoBalanceList[i] == C) continue; } ....more stuff around checking the player and seeing if they are the "right one" to move... }
...same stuff... // Skip players who are on the don't switch list. Note:(Piglet) Made this change to make the code work, but the players hated it. The 'wrong' player was swapped leaving the teams unbalanced. Reverting to investigate further some time. for(i=0; i<DontAutoBalanceList.Length; ++i) { if(DontAutoBalanceList[i] == C) break; } if(i<DontAutoBalanceList.Length) continue;...same stuff...