1 (edited by Magnet 2008-10-16 18:34:28)

Topic: Team auto-balancing is flawed

Hi,

With the upcoming release of 0.5.0, which we all hope will be a perfect release, I would like to report on the auto-balancing feature introduced in 0.4.3. To my knowledge it is unchanged in 0.5.0 so far.

While most servers are still, as far as I know, running 0.4.2, mine is on 0.4.3 and is quite popular these days so I thought my feedback could be useful to TeeWorlds developers. Hopefully they will manage to react to my report in time for the 0.5.0 release.

These are my thoughts based on my dealing with the auto-balancing feature and the numerous complaints of my users.

Simply put, this system is completely flawed and should be disabled by default because it leads in most cases to MORE unbalancing than no system at all (which results, hopefully, by players doing it themselves or other players leaving and making players who did not want to balance leave!).

Let's start with the good points of the system:
- you can't join a team if it has already one member more than the least populated team
- when auto-balancing, players keep their points.

These two points are good -- but I'm afraid they don't make up for the mess the rest of this feature puts players into.

When auto-balancing teams, the first player of the most populated team is sent to the opposing team. This often leads in unbalance that cannot be resolved because joining back is impossible!

Why does this happen? Because the system was badly thought and did not take into account the mechanics of team balance.

The problem is that the system balances team numbers rather than team levels, and it puts us in an incredible mess.

In an ideal world, for which it seems this system was thought for, every player would have the same individual level. Then the system would work perfectly.

The most common cause of team numbers unbalance is people (aka noobs) joining the winning or most populated team.  This is made impossible by the current system -- so remains only the other cause: people leaving from a team, to the point it becomes underpopulated.

We cannot emit hypothesis on the reason of their leaving, it might be because the team is losing or simply because they have to go. The leading player of the most populated would join and all would be good.

Sadly, we do not live in an ideal world and players have different levels. In most team games (mostly CTF), there are a few leading players and the rest are struggling with the game. Their actions limit themselves to taking bonuses, blocking their teammates and hooking them (not on purpose, but they need one second to realise and release their hook) and finally attacking the flag carrier of their own team because he looks different. I might be a tad sarcastic here but let's face it, except on a few rare and lucky servers (damn you Ckz Clanserver!), the general level is very heterogeneous. I find myself hooking up my teammates to help them score when they accidentally get the flag -- and I'm not talking of the times they are going to the wrong base! Most seem not to react to English, I'll put that on the account of youth and lack of socio-cognitive skills ;p.

In a lot of cases, there are a few good players and the rest can be more or less ignored considering team balance. Often, we have one good player in both teams, and about 5 total beginners or sometimes mid-levelers. Then 2 beginners leave from one team, the best (and unique decent) player in the most populated team joins the opposite... and there is no challenge whatsoever left, no fun for the two players who were having a "1on1 with extras".

Worst can happen. Yesterday I found myself against 5 decent to very good level players and alone with a mid-level player in my team along with complete beginners who prevent real balancing (that is, other people can't join to balance because the teams are already equal in number, even if not equal in level). In this case you cannot do much by yourself (even if as a flag carrier I kill the enemy flag carriers 5 times in a row, there's a new one getting it because they have the ability to camp and move, which new players do not) and the whole game is fucked up.

I realize this problem is hard to solve without having some sort of information about player levels (and that should be integrated at some point with optional nick registration imho), but if TeeWorlds tries to solve team balancing it should not do it with an algorithm so naive and use more variables. On the topic of playing level, I would love, on the server list, an "advised/required level" for servers. Players (using optional registration) would have to earn a level by playing games (5 levels would be more than enough: total beginner, mid-level, good player, very good player, ninja). Aside for a few mid-level bullies who love to terrorize complete beginners on some servers (and myself who goes after the mid-level bullies ;p), no one has fun playing with people of very different level.

Here's an idea to explore: we have (points earned)/(time spent playing) ratio which is an activity indicator. It doesn't say much but at least it tells if the player is active and better ratios often mean better player. Team numbers should be variables just like the activity indicator.

You can use the average or median of all player's indicators to use it as a reference to know if a player is above or below the current level of the game. You can use the variance to automatically kick players of too low level for the game if wanted in the configuration (I'm sorry, I would like a world where I kick no one but complete beginners ruin CTF2 by continuously taking all bonuses and weapons they're not even using properly!). And admins of beginner servers levels could automatically kick players with too high variance! ;p.

I am willing to put my thoughts into code (if it's not too messy) before the 0.5.0 release (I am myself computer scientist/software engineer) if it gets any support and if the devs can't handle it now. I am myself quite busy with work so I would require some pointers.

As for my server, the current solution I've opted for is to set sv_teambalance_time to 500 so that it won't allow players to join a more numerous team, but will never perform autobalancing. This isn't a proper solution, but still better than nothing.

I really hope matricks and other developers give some thoughts to this problem before the release, because all servers will migrate and a lot of games will become very boring. You're in a team, made 900 points because you were alone *really playing* and played better to an opposing active team. Last minute (default timing), opponents decide to leave because they're sore losers. You end up in their team, having 1000 points to do all over again, you do 500, some players leave, two good players come and do the 100 finishing  points.... That's depressing smile.

I'm sorry for sounding elitist if I do. I am merely pointing the obvious: there are different levels, and I think the game should help provide the most fun to each and every player, that is a game at their level. That doesn't mean new players shouldn't join better level games, because if they don't they will never improve; however their joining shouldn't ruin the game because of a flawed sub-system -- that is, the current auto-team balancing.

Thanks for the few who read till here.

2

Re: Team auto-balancing is flawed

I agree with u that the teambalance stuff is not very effective. I myself dont like it, because it just makes things complicated. But I disagree with the 'levels system' which u mentioned. Everyone started somewhere, and the best way to learn is to play with better players. Also it would be quite annoying for new players to be autokicked because they havent got a specific level. The game is for everyone, pros, noobs, blockers, campers, teamhookers, loosers, funny-guys and the rest. wink However I understand ur points, but everytime something like that happens to me ( like playing against more players, or with novice players on my team ) I just consider it a good practice.

We will meet again when the flowers spread their glorious scent of victory and the birds sing us the melody of justice...

3

Re: Team auto-balancing is flawed

I don't like this whole complicated level system, thing like that I would oppose greatly. I'm basically against any ideas that would separate players from each other. I've summarized some of my ideas for the whole user registration here: http://teeworlds.com/trac/teeworlds/wik … ationIdeas

The whole kick if the player has less then say 5 points/minute is flawed because it would most likely kick everyone eventually except the guy who is better then the rest.

What we could do however is to auto balance the teams based on points/minute instead of highest score and try to make the teams even that way. I myself doesn't have time to do it but I can add a ticket for it. It will perhaps not be for 0.5.0 but 0.5.1.

4 (edited by Magnet 2008-10-16 19:31:29)

Re: Team auto-balancing is flawed

torch wrote:

I agree with u that the teambalance stuff is not very effective. I myself dont like it, because it just makes things complicated. But I disagree with the 'levels system' which u mentioned. Everyone started somewhere, and the best way to learn is to play with better players. Also it would be quite annoying for new players to be autokicked because they havent got a specific level. The game is for everyone, pros, noobs, blockers, campers, teamhookers, loosers, funny-guys and the rest. wink However I understand ur points, but everytime something like that happens to me ( like playing against more players, or with novice players on my team ) I just consider it a good practice.

I consider it a good practice too when I have the slightest remote chance to win. If I don't I'm just bored and I go play somewhere else. Playing alone (with two complete beginners) against 3 players equally good as yourself or even slightly below is hard. Make that 5 and it's simply impossible, no fun and meaningless.

matricks wrote:

I don't like this whole complicated level system, thing like that I would oppose greatly. I'm basically against any ideas that would separate players from each other. I've summarized some of my ideas for the whole user registration here: http://teeworlds.com/trac/teeworlds/wik … ationIdeas

I don't want to separate players from each others either, I want the game to find the most appropriate game for each player. If new players were just like an unused slot it wouldn't be much of a problem, but add it bonus/weapon rarefaction and bad team-balancing subsystem and it becomes a problem.

My idea of "player level" would not prevent anyone from joining any public server. However you must realize that some servers admins will force players to be registered to join, just like IRC channel admins force users to be identified to join. I know I will. I know I will mod my server if this is not available in the vanilla TW archive (it should be disabled by default).


The player level idea is another discussion altogether. It was an idea popping in my head and I would rather have developed it in another thread. Regarding team balancing, the activity indicator (points earned)/(time spent), what you call points/minute, is enough.

Just to clear the misunderstandings:

Player level would be a way to HELP players find the most appropriate server for their level and help them meet players of their levels to train with. In my mind, all players willing to go to the registration process would start level 1. Thus they would be encouraged to go to the TW tutorial map, etc.

Right now there is no satisfying solution to grant a player a level. In fact I am myself not sure this is a good idea, but it could be a support for more advanced mods. If it were to be, in my mind the best way would be that winning players of the upcoming MTC tournament (or the ESL cup) get level 5 and finalists level 4. They would go and give levels below theirs to players they play with. Two or three level 4 would nominate a lv 3, two level 3 would be required to nominate a lv 2, etc. Obviously the administration side should be web based (it's a social network) because it shouldn't be done in TW. In fact TW shouldn't need to know about it, it could be a complete ad-hoc solution as long as we can have custom fields in the server listing and favorites.



matricks wrote:

The whole kick if the player has less then say 5 points/minute is flawed because it would most likely kick everyone eventually except the guy who is better then the rest.

No, you are taking an absolute value. I am talking about game instance average. For instance, you have, for a specific game, 5 points/minute on average with a variance of 3. It means the best player has 8 points / minute, the worst has 2 points / minute.

It would be a (disabled by default) feature that would allow *willing admins* who *want their server to have a minimum level* to have players, say that have a very low activity ratio (either afk players or way, way too low level *COMPARED* to other players *in this very instance*) to be kicked. This is very much to free slots for other players as well as to have players in an acceptable level range (1 to 2).


matricks wrote:

What we could do however is to auto balance the teams based on points/minute instead of highest score and try to make the teams even that way. I myself doesn't have time to do it but I can add a ticket for it. It will perhaps not be for 0.5.0 but 0.5.1.

That's actually the very base of what I was proposing with the "activity indicator".

5

Re: Team auto-balancing is flawed

i know it's not directly related to this topic, but is it possible to change the score behaviour when changing teams (ie not resetting individual score)? it would greatly help people's ability to balance themselves, i think?

6

Re: Team auto-balancing is flawed

I think 'levels' are out of tw shape.
To solve this teambalance problem, maybe the devs could change it 'looking' at the score of each player.
I know score isn't everything to classify a player, but it's better.
Then they could try to balance by score wink

Or everytime choose the third player on the scoreboard and pass him/her to the other team (it's better than the first player)

check out these maps: infiltrate - choco - dustycloud

7 (edited by goatee 2008-10-21 07:27:07)

Re: Team auto-balancing is flawed

Slightly off-topic:
The blue team has a statistical disadvantage as new players are always sent to the red team if teams are equal. With auto-balanced teams this disadvantage grows as there are only 3 scenarios left (r+1=b,r=b,r=b+1) of which 2 lead to red getting the new player.
Each team should have a 50% chance to get him/her on equal sizes.

On-topic:
Player levels and level-specific servers will only lead to ***holes joining the noob servers with newly created players.
Also stats will give even more incentive to those damn bot users.

Kicking idle players (maybe based on score to avoid tricking it with macros) should be an integral part of auto-balance. I can live with noobs in my team as most will leave when we get owned too much. But i have had idle players in my team for hours. Those guys just suck.

8

Re: Team auto-balancing is flawed

sengoku wrote:

i know it's not directly related to this topic, but is it possible to change the score behaviour when changing teams (ie not resetting individual score)? it would greatly help people's ability to balance themselves, i think?

Agree.

9

Re: Team auto-balancing is flawed

IF there will be levels you have to give the points only for games with at least one opponent. because if not people could go to an empty ctf-server, making 505 points and are "better" even if they are not because they didn't fight against someone.
and not counting the flag-captures would end up badly for ctf I think!

pwnd-leader
You just got pwnd!

10

Re: Team auto-balancing is flawed

goatee wrote:

Slightly off-topic:
The blue team has a statistical disadvantage as new players are always sent to the red team if teams are equal. With auto-balanced teams this disadvantage grows as there are only 3 scenarios left (r+1=b,r=b,r=b+1) of which 2 lead to red getting the new player.
Each team should have a 50% chance to get him/her on equal sizes.

agreed, in r=b it should be a random chance of 50%

goatee wrote:

On-topic:
Player levels and level-specific servers will only lead to ***holes joining the noob servers with newly created players.
Also stats will give even more incentive to those damn bot users.

yeah, true. i think player levels are a massive overcomplication of a simple problem smile

goatee wrote:

Kicking idle players (maybe based on score to avoid tricking it with macros) should be an integral part of auto-balance. I can live with noobs in my team as most will leave when we get owned too much. But i have had idle players in my team for hours. Those guys just suck.

totally agree