Page 4 of 4
Re: chrank and the constant failure of balance
Posted: 24 Feb 2013, 23:05
by Silentwings
If you have any algorithms for actually doing this, let the world know.
Re: chrank and the constant failure of balance
Posted: 24 Feb 2013, 23:52
by dansan
spads already tries to distribute strong and weak players evenly over the allyteams.
That a team can be more than its parts is something that you must teach the players, not the computers.
Re: chrank and the constant failure of balance
Posted: 25 Feb 2013, 01:46
by NeonStorm
ZK devs got annoyed because it is too complex (joke) :D
First, you need 2 ELO ratings and a counter for your average team size:
Code: Select all
1v1 ELO: gets adjusted by "VALUE* 2/ (teamSize +1) = VALUE* 0…1"
MPvMP ELO: gets adjusted by "VALUE* teamSize/counter = VALUE* 0…1…[expected 2…5]"
BASE_WEIGHT = (100?) - how many MP games do you want to take into account?
gameWeight = ~ 0…1…[expected 2…5], lower/higher for extrem short/long games, lower for extrem imbalanced games, etc
AverageTeamSize: increases by "teamSize/AverageTeamSize(previous value) /BASE_WEIGHT *gameWeight"
Advanced ELO System for team games:
Code: Select all
Skills Player{
energyManagement = [elo = ELO, importance = 1],
metalManagement = [elo = ELO, importance = 1],
allySupport = [elo = ELO, importance = 1],
…
};
Skills Overall/Team{
energyManagement = elo, metalManagement = elo, allySupport = elo, …
};
class SkillSetup{
skills = {
skill = {
players = 0…+inf // how much players should be over AverageElo/weight
eloDispersal = 0…1…+inf // 0…1 for less elo difference, 1…+inf for more elo difference
weight = 0…1…+inf
LinkedSkills{
SkillA = importanceModifier(0…1…+inf),
SkillB = importanceModifier(0…1…+inf),
}
…
} } }
LinkedSkills: If someone is poor at using the given metal, the importance variable of his metalManagement skill (for the metal bar) is altered to importance=i…*modifier.
(A player which sucks could spend metal to the team instead which is good)
The correct SkillSetup is very important, even more important than how many Skills you have or have forgotten.
First, calculate the overall elo for each player skill (not team) - you will need to know it for the eloDispersal.
Also get the overall from all overall elos and call it BaseElo.
Secondly, foreach skill s, player p:
p
.elo = (p.elo -overall.elo)*SkillSetup.eloDispersal) +BaseElo. This step optimizes the balancing code performance.
Last - if you wish to use your current balancing script - foreach player p, skill s: p.elo = overall( p.elo *SkillSetup.weight )
The balancing script now has an elo to give you some good team setups.
You can additionally write your own balancing script - here is an example:
count = 0; foreach Team-Player p: if(p[skill] > BaseElo) increment count;
if( count > Team[skill].players ) it is a good team, else you can use count /Team[skill].players *SkillSetup[skill].weight /count(skills) to get a value for the performance drop
Re: chrank and the constant failure of balance
Posted: 25 Feb 2013, 02:10
by Silentwings
That's very far from a functioning implementation. All you seem to be suggesting that is skill should be a multidimensional quantity, then project it onto a single value by weighting each type of skill, and use current balancing scripts. (This has been suggested lots before in various guises and you can search for the threads.)
For example, how are you proposing to calculate/update the multiple skill values for each player? Where is your justification for thinking the 3 skills you pick are a good choice? How should chranks be implemented in this system? Have you tried testing your system to see how well (if at all) it predicts results within a database of past games?
Re: chrank and the constant failure of balance
Posted: 25 Feb 2013, 04:08
by NeonStorm
This 3 choices are only Examples...
And I don't know how I can get the resource management skill, because many widgets auto-share excess before a gadget does it (which will log it).
The share-value only counts built units, not plain resources, etc.
then project it onto a single value
Not like the current Elo implementation does.
The more players in the lobby are good at some special skill, the less important it should get - before it merges into one value.
But some skills are always equally important.
Some skills can be WaterMaps, MetalMaps, Big/SmallMaps (relative to team size), etc.
It also refines the top-10 or top-100 combinations with a better algorithm, because teams which are very-good-team vs very-bad-team would be to time-intensive to process with this degree of complexity.
Re: chrank and the constant failure of balance
Posted: 25 Feb 2013, 14:42
by KingRaptor
Take it from us: Don't listen to a word Neon says. He's emmanuel with more numbers in his posts.