A Bit of Better Balancing  (Read 5587 times)

The_Cowboy

  • Sr. Member
  • *
  • Posts: 101
  • Country: in
  • CodeZilla
Re: A Bit of Better Balancing
« Reply #75 on: October 26, 2021, 00:46 »
I think what Gil has found is an abstraction for right translation to vCTF gametype. It is my work to now project/map it to the current state of Equalizer abstraction for robust(?) concreteness (you know with relevant partitions for various gaugable actions  8)). I should come up with something this weekend!
Quote from: Wormbo
You learn UnrealScript mainly by reading other people's code. Removing code without an important reason (download size reduction and lack of helpfulness are not important in that sense) is extremely antisocial IMHO.

The_Cowboy

  • Sr. Member
  • *
  • Posts: 101
  • Country: in
  • CodeZilla
Re: A Bit of Better Balancing
« Reply #76 on: October 27, 2021, 17:24 »
At the risk of freaking you guys I am inscribing the pdf here
https://digital.lib.washington.edu/researchworks/handle/1773/22797?show=full

I am interested in gauging the non linear effects. That is, using meta analysis to generate more meta (which is community driven!).

Let me know how it feels :D
Quote from: Wormbo
You learn UnrealScript mainly by reading other people's code. Removing code without an important reason (download size reduction and lack of helpfulness are not important in that sense) is extremely antisocial IMHO.

Gil-galad

  • Junior Member
  • *
  • Posts: 42
  • Country: pt
  • Hail the Holy Flying Spaguetti Monster!
Re: A Bit of Better Balancing
« Reply #77 on: October 28, 2021, 15:37 »
I've tried to read it, but I'm no mathematician and know nothing of game design.

I wonder what you think of the TrueSkill method over Elo. From what I read, it seems to fit better, and it doesn't seem so different than Elo. Since it adds a certainty/uncertainty value to the prediction. If i got that right.

It says this that I found interesting :
Quote from: Alexander Benjamin Jaffe, p. 118 :
TrueSkill aims to generalize Elo to games with teams of more than one player, and potentially more than two teams.

That is our case, and we could even argue that it would apparently fit better VCTF4.

For those who would rather NOT read anything of that document :
Quote from: Alexander Benjamin Jaffe
It is a Bayesian method which models each player’s skill not by a single value, but by a normal distribution of belief. Players are assigned a mean and a variance for their skill. As players win and lose games these beliefs are updated. Wins and losses shift a player’s mean skill up and down; outcomes consistent with predictions decrease variance (increase confidence), whereas inconsistent outcomes increase variance

Still have to read the thing again. And to be clear, I have no idea if this would be complicated or hard to implement to our case.

EDIT : it seems there is a TrueSkill 2, that explicitly "support matches with any number of teams and any number of players on each teams". And it supports players quitting and joining, is very light on the server... it really seems worth it to me.
« Last Edit: October 29, 2021, 00:53 by Gil-galad[The REAL one] »
His sword was long, his lance was keen.
His shining helm afar was seen;
the countless stars of heaven's field
were mirrored in his silver shield.

The Fall of Gil-galad - J. R. R. Tolkien

holyspam

  • Sr. Member
  • *
  • Posts: 243
  • Country: gr
Re: A Bit of Better Balancing
« Reply #78 on: October 28, 2021, 17:06 »
If you have enough data for every player for every single match, you could actually create some statistics to help you rate skills and contribution to victory.

win rate % for each map for this player
win rate % for this player when in the same team with X,Y,Z player
win rate % for this player when playing against X,Y,Z player

"Flag cap rate per minute" on wins
"Flag cap rate per minute" on defeats

"Average time between flag caps" for this player
"Minimum average time between flag caps" for this player (95th percentile)

"Average time between flag caps" when playing with player X,Y,Z
"Minimum average time between flag caps" for this player (95th percentile) when playing with player X,Y,Z

"Returns per minute" on wins
"Returns per minute" on defeats

"Maximum average returns" for this player(95th percentile)
"Maximum average returns" for this player(95th percentile) when playing with player X,Y,Z

KDR on wins
KDR on wins with player X,Y,Z

I could go on forever.

To achieve team balance you need to keep win rate percentages close to 50% for each team.


Comparing 2 players with base statistics like win rate %, flag caps per minute they might be very close.
You proceed to the next metric "average time between flag caps" which will probably follow "flag caps per minute" in most cases, so that could be a draw too
But then you reach "minimum average time between flag caps"
Player1 has a top 5% of 20seconds while player2 has a top 5% of 40seconds, that means that while both may have the same average skills, player1 has a higher skill ceiling than player2

Although i don't think you would have to reach that deep to balance, you can probably balance teams based on winning percentages of team compositions alone.

You can also try going the other route, placing players that are evenly matched when playing against each other on alternate teams.
« Last Edit: October 28, 2021, 17:19 by holyspam »

Flenser

  • Junior Member
  • *
  • Posts: 28
  • Country: us
Re: A Bit of Better Balancing
« Reply #79 on: October 29, 2021, 01:18 »
So complicated.

The more criteria you add, the more players can game the system.

If holding the flag is "good", then you get players taking the flag and hiding forever. Remember when Cybershock and his buddies would take the flag and then hide in a tree, because being jerks was funny?

Just put in a simple balancer based on player's scores and see how it does. Over-engineering is probably a waste of time, and possibly counter-productive.

Piglet

  • 1337
  • *
  • Posts: 2872
  • Country: gb
Re: A Bit of Better Balancing
« Reply #80 on: October 29, 2021, 08:30 »
I still hold the view that the stats being logged are what we need, and that we should try to spread out the key skills between the teams.

I'm just not sure how you do the calculation to do that spread of skills to get about the same amount of capping/defense/fragging skill on each team

Gil-galad

  • Junior Member
  • *
  • Posts: 42
  • Country: pt
  • Hail the Holy Flying Spaguetti Monster!
Re: A Bit of Better Balancing
« Reply #81 on: October 29, 2021, 09:04 »
After reading that paper, and then some, I get what Flenser says.
Still, I do not think using the scores is the right solution, because 1. scores are biased and/or simplified representations of skills and 2. the points on vctf could certainly be improved, imo.

Perhaps I got it all wrong since the beginning, and parsimony in criterias choice will do better, all the more in the long run, since it doesn't presume on what gameplay / dynamics will prove to be successful, thus allowing a broader way to achieve victory, and more diverse matches. Only victory truly decides. If it works. Less is more?

On the TrueSkill 2 diagram as seen on the paper I shared (p. 11), it seems that they only consider the kill rate, the death rate, and win or loss to guess the balance and player distribution. Oh, and the duration of the match and time played on the match.

Here the github of a package "containing implementations of several rating systems for multi-player competitions: all-pairs Glicko, all-pairs BAR, Codeforces, TopCoder, TrueSkill-SPb, and the new system Elo-MMR".  Alas, I didn't find any shared example of a TrueSkill 2 implementation.
« Last Edit: October 30, 2021, 09:23 by Gil-galad[The REAL one] »
His sword was long, his lance was keen.
His shining helm afar was seen;
the countless stars of heaven's field
were mirrored in his silver shield.

The Fall of Gil-galad - J. R. R. Tolkien

The_Cowboy

  • Sr. Member
  • *
  • Posts: 101
  • Country: in
  • CodeZilla
Re: A Bit of Better Balancing
« Reply #82 on: October 30, 2021, 13:59 »
All Good! I have started reading the literature and I came up with and idea:
"What if at the end of each game, during mapvote say, we ask for the feedback from all players, essentially if they feel the game they played was balanced?"
Quote from: Wormbo
You learn UnrealScript mainly by reading other people's code. Removing code without an important reason (download size reduction and lack of helpfulness are not important in that sense) is extremely antisocial IMHO.

sup

  • Sr. Member
  • *
  • Posts: 212
  • Country: br
  • Y O L O
Re: A Bit of Better Balancing
« Reply #83 on: October 30, 2021, 18:12 »
All Good! I have started reading the literature and I came up with and idea:
"What if at the end of each game, during mapvote say, we ask for the feedback from all players, essentially if they feel the game they played was balanced?"

People will vote anything just for fun. Trust me
Like I said, the simplest and most efficient solution is points/time played

Look this game right now:



The best ranked players in this game are:

Paul (RU)
Little_Johnny (IN)
Rounin_Napoli (IT)
Kyhado (US)
-=BL@=- (PT)
HELL_FIRE_BACK (FR)

If they were together in the same team the game would last 2 minutes
Coincidentally they were separated 3 for each side, creating a balance (at least acceptable)





Piglet

  • 1337
  • *
  • Posts: 2872
  • Country: gb
Re: A Bit of Better Balancing
« Reply #84 on: October 30, 2021, 19:09 »
I had a look at all the stats captured to date and tried various things. The points/hour average is pretty accurate in spotting the better players.

Duke was the exception. He caps a lot but his scores aren't that high.

sup

  • Sr. Member
  • *
  • Posts: 212
  • Country: br
  • Y O L O
Re: A Bit of Better Balancing
« Reply #85 on: October 30, 2021, 22:03 »
I had a look at all the stats captured to date and tried various things. The points/hour average is pretty accurate in spotting the better players.

Duke was the exception. He caps a lot but his scores aren't that high.

Yes, I tried a lot of complex formulas too in excel and points/time played was the most realistic based on what I know of player skills.

There are some exceptions, for example Mjolnir. He often plays alone, so he has a high number of caps in easy games, distorting his position a little bit.

Duke never defends, I believe this should make him have a lower score

But, anyway, it's the most accurate way I've found to assess player skills.

The negative points I thought are:
-Skilled new players will take a certain amount of time to be ranked
-Need to track the players by IP (if some player changes his name it doesn't change the balancing system)
-When you have a lot of good players (especially with odd number) it will be difficult to determine which ones should be on each team (but, as I said, separating the good players is already an acceptable balance)

The_Cowboy

  • Sr. Member
  • *
  • Posts: 101
  • Country: in
  • CodeZilla
Re: A Bit of Better Balancing
« Reply #86 on: October 31, 2021, 01:31 »
Ok, sounds reasonable. All I need now is to find a graceful way to switch player teams when balance is, you know, disturbed  8)

Could be a 4 second timer notifying about switching action to the individuals, IDK!
Quote from: Wormbo
You learn UnrealScript mainly by reading other people's code. Removing code without an important reason (download size reduction and lack of helpfulness are not important in that sense) is extremely antisocial IMHO.

holyspam

  • Sr. Member
  • *
  • Posts: 243
  • Country: gr
Re: A Bit of Better Balancing
« Reply #87 on: October 31, 2021, 06:57 »
Using scores for balance will work for 70-80% of players, add flag caps statistics, that can account for a remaining 10%, but it only works if all games are equal.
The balancer should only work when teams become unbalanced by more than ~10% anyway.

Before enabling any balancer, you should rate players based on data gathered.
That rating needs weighted averages.

In order to pick how each statistic should be weighted, firstly we need to discard data gathered for games with few players(8 players or less) or extreme games(26+).
For each player pick stats from complete games - at least 90% of the map's total duration.
Then, pick 2-3 known top players and compare them to known good or average players, a good way to weight scores compared to flag caps, returns, kills, deaths etc..
Then probably weigh the score rate at 60%, then the next important metric at 20%, then divide the remaining stats equally.
Finally make the balancer use that rating, on every map add/subtract rates.


Hold up, i just invented ELO ranking

COMPLETELY UNEXPECTED, WHAT A SURPRISE

Flenser

  • Junior Member
  • *
  • Posts: 28
  • Country: us
Re: A Bit of Better Balancing
« Reply #88 on: November 03, 2021, 20:41 »

Piglet

  • 1337
  • *
  • Posts: 2872
  • Country: gb
Re: A Bit of Better Balancing
« Reply #89 on: November 04, 2021, 08:23 »
If you thought that was bad you should have seen the map before that. Bloodbath, with me on defence and justice and nard on attack,..