Jump to content

Balancing teams


goztow
 Share

Recommended Posts

As requested, I create a seperate topic for this.

I want to suggest the games to be balanced based on the points a player got in the last game. Blackintel had this on their Ren server, they can surely complete my info.

If you want to please friends playing together then there should also be a clan tag that makes you have a better chance of being on the same team. In Bf4 this system exists and I find it enjoyable to know I will be able to work together with my clan mates. The game balancer should also balance out different clans so they are not on the same team.

In RenX belonging to a clan should be as easy as to add the clan tag when you choose your name. that way there's no need to go through a complete process of creating clans.

So here's how I see it. Say in example 1 there are 10 players from last game in this game and 4 new players. None of them are in the same clan. The 10 players that were in last game are ordered from 1 to 10, based on the points. Player 1, 4, 5, 7, 9 go on GDI. Player 2, 3, 6, 8, 10 go on Nod. The 4 new players are randomly added to the teams to ensure they have correct numbers.

Now let's say in example 2 that within the 10 players, there are 3 people that have clantag A: 1 of them is on Nod, 2 of them are are on GDI. The balancer should swap the GDI player to Nod and in return swap the player that was closest to him in rank order from Nod to GDI.

In example 3, within the 10 players, there are 3 people that have eachother on friendslist A and 2 people that have clantag B. The balancer will try to place them together but will also ensure that clan A is not on the same side as clan B as we can suppose that people playing together might have better teamwork.

To illustrate.

Example 1:

GDI: 1, 4, 5, 7, 9, NEW1, NEW2

Nod: 2, 3, 6, 8, 10, NEW3, NEW4

Example 2:

GDI: A1, A3, A5, 7, 9, NEW1, NEW2

Nod: 2, 4, 6, 8, 10, NEW3, NEW4

Example three:

GDI: A1, A3, A5, 6, 8, NEW1, NEW2

Nod: 2, 4, B7, B9, 10 NEW3, NEW_B4

There could be some sort of limit on the number of clan players a single side can have. E.g. maximum 75 % of the players on one side can be of the same clan.

Discuss these ideas :).

Link to comment
Share on other sites

The BlackIntel system worked slightly differently, I'll explain it below and attempt to adapt it for clan support.

Players would be sorted by score, highest to lowest, e.g.: 100, 50, 40, 30, 20, 10, and 0 (I denote players by their scores in my examples)

Then, both teams would be cleared and each player would be assigned to the team with the smallest score in order:

N: - G: - (both empty, assign player 60 at random)

N: 100 G: - (GDI has least points, assign next player (50) to GDI)

N: 100 G: 50 (GDI has least points again, assign 40 to Nod)

N: 100 G: 50, 40 (GDI has least points again, assign 30 to Nod)

N: 100 G: 50, 40, 30 (Now Nod has least points, so assign 20 to Nod)

N: 100, 20 = 120 G: 50, 40, 30 = 120 (both have equal points, assign at random, say GDI** )

N: 100, 20 = 120 G: 50, 40, 30, 10 = 130 (now, GDI is full, so assign all remaining players to Nod)

**: Actually, it might be better to assign to the smallest team here, although this virtually never happens anyway.

This is a quick and easy approximation to get two teams of equal size with minimal score difference. The most notable difference between alternating players is probably that the 2nd and 3rd players usually team up.

In my experience, this works very well for balancing the teams. There are some downsides though: balanced teams cause more deadlocks, and in smaller games when two players are significantly better than the rest, they will hardly ever be in the same team (fair, but not always enjoyable). I like the suggestion Gozy makes to attempt to put clan players in the same team. Our algorithm could be adapted to favor placing someone in the same team as their clanmates (perhaps only if the score difference is not too large?). It could also add extra score to the team if multiple clan members are playing together, to avoid too much imbalance.

Alternatively, it could do a preprocessing step grouping clan members in a single "entity", and then assigning clans to teams. Splitting up the clan if the clan's players are responsible for too much of the score/player count (and also with a random probability to add some variation?). E.g.:

A100, B50, B40, 30, B20, C10, and A0

B50, B40, B20 = 110

A100, A0 = 100

C10 = 10

30

N: B50, B40, B20 = 110, G: - (assign strongest clan B first)

N: B50, B40, B20 = 110, G: A100, A0 = 100 (assign clan A)

N: B50, B40, B20 = 110, G: A100, A0, C10 = 110 (assign clan C; a clan player would be considered "better" than a non clan player)

N: B50, B40, B20, 30 = 140, G: A100, A0, C10 = 110

Just my first thoughts at adding clan support to our algorithm, I have not really thought this through... ;) Should test it with a few scenarios and see if it gives good results I guess.

Link to comment
Share on other sites

I would very much like something that allows friends to play on the same teams. I dont know how many times and how many games that has an autobalance that just throws players around without a care in the world. Really annoying when you play with someone you voicechat with, only to end up on opposite teams and having to try and spam the switch-teams button, if there is one.

Link to comment
Share on other sites

  • 2 weeks later...
The whole point is not to split up the group.

I know, but if you have a 4vs4 with 4 clan members on 1 team it's very likely that the clan players will inevitably win.

How a lot of these test sessions seem to go =P Sadly there isn't much that can be done against clan stacking other than leaving it up to the individual server admins. Friends naturally want to play with each other on the same side and play together. The worst thing they could do would be to actively prevent friends and clans playing together across the entire game and across every server.

Link to comment
Share on other sites

  • 1 month later...

There seem to be some issues with the team remix code. I see at least a few issues:

- OldRenScore does not get set correctly (I don't really see why it is necessary anyway). Currently players are all sorted as if they have score -1.

- Bots are not swapped (will cause unbalance if one team had 6 bots and the other has 0)

- The algorithm prefers (an inaccurate computation of) the least number of player swaps. For variation, I would say it should prefer the largest number of swaps.

The attached script solves the issues. It can be integrated with something like:

function ShuffleTeams()
{
local BITeamShuffler BITeamShuffler;
BITeamShuffler = new class'BITeamShuffler';
BITeamShuffler.ShuffleTeams(self);
}

It assigns players to teams evenly, prefers the largest number of swaps, and then distributes the remaining bots evenly.

BITeamShuffler.zip

  • Like 1
Link to comment
Share on other sites

- OldRenScore does not get set correctly (I don't really see why it is necessary anyway). Currently players are all sorted as if they have score -1.

Was working when I implemented and tested it. I haven't specifically tested it in the latest version (I have no reason to believe it broke) but looking at the code, doesn't look like anything has been changed. So I'm interested to know why you think they're always -1?

(I don't really see why it is necessary anyway)

People wanted it to be a shuffle that balanced teams out by score, not just the team counts, as it would then be more likely the teams would be more truly balanced. Of course score isn't a perfect way of calculating a players ability but it is still far more accurate than not considering it at all.

- Bots are not swapped (will cause unbalance if one team had 6 bots and the other has 0)

Bots didn't end up working as intended so it isn't accounted for properly. Will be fixed either by making the bots work the way that was intended, or just a fallback to considering bots like your one here does.

- The algorithm prefers (an inaccurate computation of) the least number of player swaps. For variation, I would say it should prefer the largest number of swaps.

That's down to preference, and should be made a server setting - which'll be added. Though I agree it should probably be largest swaps by default.

Players can also set their preferred Team when joining a game (not shown by any of the RenX interfaces, but it's there, left over from UT3), so that may also be considered in future as well.

The inaccuracy is only in the slim chance, where the teams have an almost even distribution of Nod and GDI players anyway, so whether they swap or not, would be totally negligible for either keeping most people on the same team, or moving them to the other team. But if people really care enough, it can be fixed - suppose might as well when I'm in there updating it anyway. Unless you're referring to something else?

It was kept in mind that people would potentially want to implement their own algorithms for shuffles (like now), so it has been setup in a way that it will be quick to add in a mutator hook, once the mutators are officially supported.

Link to comment
Share on other sites

It probably works for automatic gameovers but not for triggered ones. I see two assignments of OldRenScore, one only happens for non-triggered gameovers, the other just copies the value.

What I meant in my previous post by "I don't really see why it is necessary" is that I don't see why OldRenScore is needed, as from what I can see, RenScore is not reset before Shuffle is executed (at least not in my tests). I may be wrong if there are cases in which they are reset though. I completely agree with using scores as a basis for shuffling, in fact I introduced the concept to Renegade. ;)

I account for bots separately mostly to force human players to be distributed evenly. Imo that is preferable even if scores may imply the bots would be on one team and the humans should be on the other.

The inaccuracy occurs when the total number of players is odd. If GDI has 11 players, Nod has 10, and the newly assigned Team1 has GDICount==5 and NodCount==5, then Team1 will become GDI even though this will require 6 GDI->Nod + 5 Nod->GDI = 11 swaps whereas Team1 being Nod would only take 10. I thought the issue occurred in more situations, but it seems I was wrong. So far I could only come up with a counter example where teams are off by one player. It is a very minor issue indeed; I just named it because I noticed it and it's fixed in my version.

So yeah, do with my algorithm whatever you like. I just think it's more efficient and gives more accurate results, so I thought I'd share it.

Link to comment
Share on other sites

  • RypeL unpinned this topic

Necroing this as a reminder cause this has been braught up again by multiple players recently and i think this thread had some good ideas like simple clantags to keep people together that wanna be together. Might wanna work on this.

Link to comment
Share on other sites

  • Developer
7 hours ago, RypeL said:

Necroing this as a reminder cause this has been braught up again by multiple players recently and i think this thread had some good ideas like simple clantags to keep people together that wanna be together. Might wanna work on this.

Wait... what? The biggest complaints are certain groups of players BEING together too often.

Link to comment
Share on other sites

Well, just trying to avoid this beeing sniped again by groupers if reintroduced. Though i dont even remember if we really had a functional autobalance before ? Im not actually sure so i might imagine the whole discussion lol

But anyway the idea with still allowing some grouping somehow is:

- not all people that want to play with their friends are top5 in the server

- if like the top5 people wanna group up they first would have to make that clear and show it to the whole server by wearing that shared tag so they cant just go "its not our fault the server put us together"

- also if the top people group up the balancing algorithm should  give them the least experienced of the rest of the players as teammates. So they very well could still have a hard time. Atleast much harder then right now.

 

Link to comment
Share on other sites

As Rypel pointed out, this has recently become a bit of an issue and 'stacking' has become somewhat of a buzz word. As Yosh pointed out the common complaint is when several groups of 'pro players' stack to one team which causes a 'bottle neck' effect and is the core focus of the issue.

Over the year I've noticed that the shuffle we have in place is simply not good enough at sorting teams correctly, frequently re-stacking the teams again and again. FPI has tried to combat this by applying a 'manual shuffle' at the start of the 3rd round of stacked games, but as you can imagine this is a difficult task to pull off with 64 players. The 'swap teams' feature is also something to consider, a setting to have it disabled for 5 mins might be a good way to address it; as people only ever tend to quit the losing team.

Sorting teams on points? - I don't think this is a reliable way of sorting due to how easy points are to aquire, spaming a med tank on a building (for example) requires very little skill and can bump you to the top of the team. Instead, I think the sorting should be focused on the K/D ratio -- a more reliable way of 'weighing up' player skill.

I suppose a program could be written up to grab all the ratios of all the active players and put them in a temp database and begin placing them on teams starting from the highest to lowest alternating from GDI to nod. e.g. if player 1 had a K/D of 20 and player 2 had a K/D of 15 (top two) then the code would put player 1 in GDI and player 2 in nod, doing this until it reaches the bottom ranked K/D players.

Edited by TomUjain
  • Like 1
Link to comment
Share on other sites

Did some more research and found that the game indeed still sttempts to sort players by points gained in the last map, but theres an issue with it. Started work on a fix. After that issues is resolved I think we can expect things to become quite a bit more balanced.

  • Thanks 1
Link to comment
Share on other sites

  • Developer
7 minutes ago, RypeL said:

Did some more research and found that the game indeed still sttempts to sort players by points gained in the last map, but theres an issue with it. Started work on a fix. After that issues is resolved I think we can expect things to become quite a bit more balanced.

I don't see how points are a useful metric whatsoever for sorting teams. There's no real way to figure out the "skill" level of people just from 1 matches analytics

  • Like 1
Link to comment
Share on other sites

So what is your suggestion ? I didn’t say that I find sorting by points ideal. But even sorting by points is kinda broken right now and can actually screw the loosing team even more. And that’s more an issue with the sorting system itself regardless of what metrics it uses to sort. One issue is that currently it sorts the players at the end  of a map and not at the start of the next map. Because of that it doesent account for people leaving the server between maps even though that pretty much always happens. 

Link to comment
Share on other sites

  • Developer
22 minutes ago, RypeL said:

So what is your suggestion ? I didn’t say that I find sorting by points ideal. But even sorting by points is kinda broken right now and can actually screw the loosing team even more. And that’s more an issue with the sorting system itself regardless of what metrics it uses to sort. One issue is that currently it sorts the players at the end  of a map and not at the start of the next map. Because of that it doesent account for people leaving the server between maps even though that pretty much always happens. 

Random teams 

  • Like 1
Link to comment
Share on other sites

Good this is discussed here!

I have a feeling, but that might be the times when I join, that stacking is more a thing for the last few weeks or maybe month then a periode before, while it used to also be bad last year.

In the end stacking wins the game for a small group of people, but kills the playerbase. It's very easy to see when a 'pro group' of players is together for a few rounds after eachother. These end (really) quick, the playerbase drops and in the end the 'pro players' leave together (often within seconds from eachother) with a server half filled or less then at the moment when they joined...

Balancing can improve the game a lot and this might even increase the playerbase or keep the servers alive longer so North American people can join. People also drop out of the game cause of the time (who needs sleep?), but I've seen balanced games last longer and / or have more rounds till later in the evening / night (Dutch time).

Ideally teams should be balanced on:

- Based on points
- Based on veterancy
- Based on k/d
- Based on vehicle kills
- Based on building kills (if this can be calculed who did the most damage, not just the last shot)
- Based on repairpoints to the base
- Based on repairpoints to vehicles
- Based on placed mines 
- Based on defence kills mines
- Based on damage done by vehicles
- People who use teamchat (and yes you can argue they might use voice, but still basic game communication helps the team)
- People who have experience in commanding

Not necessarly in this order, but I guess this should cover the basics...

I know this is a lot and I am not sure where to start. If you would balance a game only on VP or points you might end up with 10 people who had a good score last game while someone who mined might have a lesser score, but saved the base five times.

The problem is to come up with a good way to divide the people, for example a miner might also have the highest k/d.
The goal is to make sure the teams have 'sort off' equally skilled teams where the base functions are present

Since I am not sure how the 'best defence, best offense and best support' notification are created it is hard for me to determine what still needs to be done.

I suggest:
1) move the person with most building damage to a team and the second to another team starting from the the player with the most points (so if player 1 has 10000 points tanking) and players 2 5000 points only, but all base damage, move that one)
2) Do the same with the top tanker & sniper / person with k/d
3) Make sure each team gets a person who mined
4) Make sure each team gets a person who repaired buildings
5) Make sure the team gets a person who repaired vehicles
6) Spread the remaining people over the teams based on score

I assume this can all be measured (since most of it allready is).

Divide the rest who are left on score...

It would off course be better to give a player scores in different fields and spread them over the teams like that, but that might be too difficult. Also an accounting system would also be nice, but I realize this is all volunteraly and takes a lot of time. 

Random teams will not work, especially if teamswitching will be as it is now cause the teams will soon not be random... Persons realizing what they are doing will likely switch to the more good team and / or their friends (unless they prefer a side) and the new and less good players will stay in the other team. In the end I still dont get why people rather win a few quick (super unbalanced / stacked) rounds without effort, then enjoy a challenging game which can be fun even while losing. It's sad that a lot of current games prove this behaviour.

  • Like 1
Link to comment
Share on other sites

  • 1 year later...

I had posted something along the lines of this thread elsewhere--it's too bad that here we are a year after [tmx]ryz's last post and nothing seems to have changed.  What I said in another thread was,

 

Today two developers told me that there is currently no mechanism to balance teams between matches.  I didn't know this--I just thought whatever did exist did not work properly.  One said it just isn't possible...  I have no business developing/coding anything, but it's very surprising that there is no way to measure points/vp/rank/etc. and use that information to sort teams.

I was also told that I have no idea what the Fair Play situation was, which is totally correct.  I do remember when Fair Play had a measure to prevent ppl from switching teams for a certain period at the beginning of matches.  I was told that "the developers" told Fair Play that they could not do anything like this, or their server would be de-listed from the launcher.  Again, I don't know the situation, and I'm no pillar of the community, but I don't understand why balance-related measures can't be experimented with on a per-server basis if the developers say they are unable to do anything about it themselves.

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...