• Please make sure you are familiar with the forum rules. You can find them here: https://forums.tripwireinteractive.com/index.php?threads/forum-rules.2334636/

RO2 A Mathematical Method for Balancing Matches For Asymmetric Team Skills

Moach

FNG / Fresh Meat
Aug 13, 2017
1
0
39
After playing for a great number of hours, and having become familiar with the trends and tendencies that most commonly develop in online games, it increasingly becomes obvious that there are certain conditions which drastically affect gameplay balance towards one team or another.

This is chiefly the case when one team has a greater number of more experienced players than the other. Regardless of which team (allied or axis), whenever such accumulation of skill develops, even if only to a subtle degree, that team will become predictably dominant over the other, and will continue to prevail time and time again until the server population has rotated enough that the disparity lessens or turns toward the other team.


given how easily disturbed the balance of power is, it takes surprisingly little difference in team skill distribution to cause such conditions.


I have thus devised a simple mathematical method to correct for this rather undesirable predictability of a match's outcome when teams have uneven experience summed totals.


the idea is this:

scale the starting number of "death tickets" for each team, according to the ratio of the total XP sum of its players to that of the other team.

in algorithmic form, it would be:


defendXP = ∑ defPlayerXP; // calculate total sum of XP for all players in each team (defending and attacking)
attackXP = ∑ attPlayerXP;

defenderTickets = mapDefendTickets * (attackXP / defendXP); // scale ticket count by ratio against opponent
attackerTickets = mapAttackTickets * (defendXP / attackXP);


as you can figure, this would cause a team with a lower total XP sum to have it's tickets multiplied by a >1 ratio, whereas the opposing higher XP team would have their multiplied by its reciprocal.

the amount of correction could then be scaled by inserting a lerp operation into the process, thus providing scalar control of the amount of correction applied

the latter part of the algorithm would then become:


defenderTickets = mapDefendTickets * lerp(attackXP / defendXP, 1.0, correctionScalar);
attackerTickets = mapAttackTickets * lerp(defendXP / attackXP, 1.0, correctionScalar);



this should very likely contribute to consistently well balanced matches, with equally likely outcomes for each team regardless of skill distribution factors (which are unpredictable and beyond server control, and thus regarded as unfair)

thank you