1 |
Indeed the teamstrength system is currently my favourite system as I said [url=http://zero-k.info/Forum/Thread/22345?postID=156359#156359]here[/url] recently. In my above posts I explained that there are 2 possibilities to generalize teamstrength for FFA (the matrix approach and the teamstrength proportional one) and that I don't know which of them is correct. It seems like @Sprung has figured it out now. The elo->infinity argument makes it fairly convincing.
|
1 |
Indeed the teamstrength system is currently my favourite system as I said [url=http://zero-k.info/Forum/Thread/22345?postID=156359#156359]here[/url] recently. In my above posts I explained that there are 2 possibilities to generalize teamstrength for FFA (the matrix approach and the teamstrength proportional one) and that I don't know which of them is correct. It seems like @Sprung has figured it out now. The elo->infinity argument makes it fairly convincing.
|
2 |
\n
|
2 |
\n
|
3 |
Now I'm happy that I didn't find the time to implement the matrix solution for the current system (even though this would have been much better than the current implementation and the teamstrength system needs further consideration, because it makes a difference even for 2 teams). The teamstrength proportional system will also be easier to implement.
|
3 |
Now I'm happy that I didn't find the time to implement the matrix solution for the current system (even though this would have been much better than the current implementation and the teamstrength system needs further consideration, because it makes a difference even for 2 teams). The teamstrength proportional system will also be easier to implement.
|
4 |
{{{ playerstrength = g(elo)
|
4 |
{{{ playerstrength = g(elo)
|
5 |
teamstrength
=
(
sum
of
team's
playerstrength)
*h(
n)
}
}
}
Should
teams
with
higher
elo
deviation
really
get
a
higher
win
probability
prediction?
Note
that
this
is
a
consequence
of
g
being
convex
and
if
we
only
assume
teamstrength
proportional
probabilities
with
any
g
and
the
invariance
to
shifts
in
the
elo
scale,
we
already
get
g(
elo)
=B^(
elo-eloShift)
,
which
is
convex.
Btw
the
condition
that
all
players'
elo
average
must
be
1500
is
equivalent
to
the
product
of
all
playerstrengths
being
1
only
if
eloShift=1500.
[spoiler]Generally
the
(
number
of
all
players)
-th
root
of
the
product
of
all
playerstrengths
=
10^(
(
1500-eloShift)
/400)
.
[/spoiler]
|
5 |
teamstrength
=
(
sum
of
team's
playerstrength)
*h(
n)
}
}
}
Should
teams
with
higher
elo
deviation
really
get
a
higher
win
probability
prediction?
Note
that
this
is
a
consequence
of
g
being
convex
and
if
we
only
assume
teamstrength
proportional
probabilities
with
any
g
and
the
invariance
to
shifts
in
the
elo
scale,
we
already
get
g(
elo)
=B^(
elo-eloShift)
,
which
is
convex.
From
the
condition
"no
change
for
1v1"
we
can
conclude
B=10^(
1/400)
.
Btw
the
condition
that
all
players'
elo
average
must
be
1500
is
equivalent
to
the
product
of
all
playerstrengths
being
1
only
if
eloShift=1500.
[spoiler]Generally
the
(
number
of
all
players)
-th
root
of
the
product
of
all
playerstrengths
=
10^(
(
1500-eloShift)
/400)
.
[/spoiler]
|
6 |
The teamstrength function does not really fulfill the conditions of a norm. The effect of different team sizes is indeed the biggest remaining question now, though. This is described by the function h. In the easiest case we use h=1/teamsize. Additionally we can multiply factors to consider extra com advantage and extra com player weighting as described [url=http://zero-k.info/Forum/Thread/21102?postID=152660#152660]here[/url], but I think this would only make it unnecessarily complicated, because those factors would be nearly 1 anyway. What I would really try is using h=sqrt(average size of all teams)/teamsize to make win chances more distinct for bigger teams like [url=http://zero-k.info/Forum/Thread/20208]this[/url]. For example a 3 player team in a 2v3 would have h=sqrt(2.5)/3. [spoiler]Note that bigger teams are not rated better here, but only more distinct.
|
6 |
The teamstrength function does not really fulfill the conditions of a norm. The effect of different team sizes is indeed the biggest remaining question now, though. This is described by the function h. In the easiest case we use h=1/teamsize. Additionally we can multiply factors to consider extra com advantage and extra com player weighting as described [url=http://zero-k.info/Forum/Thread/21102?postID=152660#152660]here[/url], but I think this would only make it unnecessarily complicated, because those factors would be nearly 1 anyway. What I would really try is using h=sqrt(average size of all teams)/teamsize to make win chances more distinct for bigger teams like [url=http://zero-k.info/Forum/Thread/20208]this[/url]. For example a 3 player team in a 2v3 would have h=sqrt(2.5)/3. [spoiler]Note that bigger teams are not rated better here, but only more distinct.
|
7 |
\n
|
7 |
\n
|
8 |
Furthermore I would delete the factor "Math.Sqrt(sumCount / 2.0)" in [url=https://github.com/ZeroK-RTS/Zero-K-Infrastructure/blob/fb41815993843f0facae823206ea0bbf5bbee90d/ZkData/Ef/SpringBattle.cs#L146]SpringBattle.cs[/url], which is exaclty the factor I would multiply to h instead as explained in the 3rd paragraph of [url=http://zero-k.info/Forum/Thread/20208?postID=148318#148318]this post[/url] (where D(n)/n=h(n)).
|
8 |
Furthermore I would delete the factor "Math.Sqrt(sumCount / 2.0)" in [url=https://github.com/ZeroK-RTS/Zero-K-Infrastructure/blob/fb41815993843f0facae823206ea0bbf5bbee90d/ZkData/Ef/SpringBattle.cs#L146]SpringBattle.cs[/url], which is exaclty the factor I would multiply to h instead as explained in the 3rd paragraph of [url=http://zero-k.info/Forum/Thread/20208?postID=148318#148318]this post[/url] (where D(n)/n=h(n)).
|
9 |
\n
|
9 |
\n
|
10 |
Additionally I would fix 1v1 XP in SpringBattle.cs to use 1v1 elo instead of team elo.
|
10 |
Additionally I would fix 1v1 XP in SpringBattle.cs to use 1v1 elo instead of team elo.
|
11 |
\n
|
11 |
\n
|
12 |
In order to fix balance the function "public static double GetTeamsDifference(List<BalanceTeam> t)" in line 111 of Balancer.cs would have to give the following result: {{{ E = sum from k=1 to N (teamsize_k*(1/N - p_k)² + c*Var_k) }}} , where N is the number of teams, p_k team k's teamstrength proportional win probability and Var_k its elo variance, maybe even with c=0.
|
12 |
In order to fix balance the function "public static double GetTeamsDifference(List<BalanceTeam> t)" in line 111 of Balancer.cs would have to give the following result: {{{ E = sum from k=1 to N (teamsize_k*(1/N - p_k)² + c*Var_k) }}} , where N is the number of teams, p_k team k's teamstrength proportional win probability and Var_k its elo variance, maybe even with c=0.
|
13 |
\n
|
13 |
\n
|
14 |
Finally I would give every player a small teams elo (maybe including 1v1) and a big teams elo and then always use a weighted average of both depending on team size. {{{ player's small team elo weighting = 2/number of all players in the game
|
14 |
Finally I would give every player a small teams elo (maybe including 1v1) and a big teams elo and then always use a weighted average of both depending on team size. {{{ player's small team elo weighting = 2/number of all players in the game
|
15 |
player's big team elo weighting = 1-player's small team elo weighting }}} [/spoiler]
|
15 |
player's big team elo weighting = 1-player's small team elo weighting }}} [/spoiler]
|