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