mmofacts.com

ELO-System

gepostet vor 17 Jahre, 3 Monate von Kapsonfire
Für mein Browsergame möchte ich eine Rangliste machen. Wenn ein Spieler gewinnt bekommt er durch gegner $x Ratingpunkte....
Hab mir jetzt die offizielle Rechnung genommen, wie es auch in Schach ist
de.wikipedia.org/wiki/Elo-Zahl
Nunja Regel in der ELO wie ich es verstanden habe...
Wenn der Gegner 10 ELO-Punkte verliet bekommt man selber 10 ELO-Punkte...
Nunja leider gibt mir PHP was anderes aus.
Gegner Rating What-If (WIN/DRAW/LOSS) Annehmen Ablehnen
Justin 2001 0 / -5 / -10 Annehmen
Da würde man wenn man Gewinnt 0 ELO-Punkte bekommen
Man Selber und der gegner haben in diesem Fall 2001 Rating-Punkte

$gegner=mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='$forder[spieler1]'"));
$chancetowin= 1/(1+10*(($ownuser[rating]-$gegner[rating])/400));
$whatif1=ceil(10*(1-$chancetowin));
$whatif2=ceil(10*(0.5-$chancetowin));
$whatif3=ceil(10*(0-$chancetowin));
echo ''.$gegner[name].''.$gegner[rating].'';
echo "$whatif1 / $whatif2 / $whatif3";
echo 'Annehmen';
if(($gegner[rating-50])>$ownuser[rating]){ echo 'Ablehnen';} echo '';
oder habe ich einen denkfehler?
gepostet vor 17 Jahre, 3 Monate von Kapsonfire
kann mir niemand helfen?
gepostet vor 17 Jahre, 3 Monate von Drezil
edit: hab mich verrechnet ..
vielleicht die formaln falsch aus der wikipedia exportiert? ka ..
gepostet vor 17 Jahre, 3 Monate von Agmemon
Müsste das hier
($ownuser[rating]-$gegner[rating])
nicht umgedreht werden?
gepostet vor 17 Jahre, 3 Monate von planetenkiller
Deine Formel für den Erwartungswert ist falsch.
Siehe Diskussion de.wikipedia.org/wiki/Diskussion:Elo-Zahl am anfang:
du musst im Nenner nicht 10 mal sondern 10 hoch

$chancetowin= 1/(1+ pow(10, (($ownuser[rating]-$gegner[rating])/400)) );
*Edit*
Agmemon hat recht es ist gegner-selber
gepostet vor 17 Jahre, 3 Monate von Kapsonfire
aber im wiki steht doch nichts von hoch
nunja ich berechne es jetzt anders^^

$gegner=mysql_fetch_array(mysql_query("SELECT * FROM users WHERE id='$forder[spieler1]'"));
$chancetowin= 1/(($gegner[rating]+$ownuser[rating])/$ownuser[rating]);
$whatif1=round((50*(1-$chancetowin)));
$whatif2=round((50*(0.5-$chancetowin)));
$whatif3=round((50*(0-$chancetowin)));
funktioniert wunderbar
oder muss ich bei meiner formel irgendwas beachten.. meines wissens rechnet er auch super die chance des gewinnens aus oder nicht?
gepostet vor 17 Jahre, 3 Monate von KoMtuR
Original von Browser-Games World
aber im wiki steht doch nichts von hoch

das steht im text:
:E_A = \frac {1}{1 + 10^{\frac{R_B - R_A}{400}} }
wie du siehst heißt das 10^((R_B-R_A)/400)
gepostet vor 17 Jahre, 3 Monate von Kapsonfire
ok ich hab mir nur das bild angeschaut^^
gepostet vor 17 Jahre, 3 Monate von TheUndeadable
Auch das Bild sagt es klar und deutlich aus.
Aber spätestens in der 11. Klasse machst du auch Exponentialfunktionen und kannst die hochgestellten Ziffern lesen.
gepostet vor 17 Jahre, 3 Monate von ThaDafinser
parabeln, kubische parabeln *muha*
das waren noch zeiten =)
dann integral und so zeug^^
gepostet vor 17 Jahre, 3 Monate von Kapsonfire
Original von TheUndeadable
Auch das Bild sagt es klar und deutlich aus.
Aber spätestens in der 11. Klasse machst du auch Exponentialfunktionen und kannst die hochgestellten Ziffern lesen.

hmmm hatte ich schon in der 9.
aber nunja kann sein dass ich einfach in eile war und es übersehen habe^^
gepostet vor 17 Jahre, 3 Monate von raufaser
Jetzt muss ich mal eine Lanze brechen.
Muss es eigentlich sein, das ihr jeden Satz mit diesem dämlichen "^^" beendet...?
DrakeL kann das auch gut. Ich weiß nicht wie die anderen es sehen, aber mich stört es.
Nur mal als Anregung.
Gruß,
Marc
gepostet vor 17 Jahre, 3 Monate von COrthbandt
Also ich finde die "^^" völlig richtig. Ist der Ersatz für die fehlenden Großbuchstaben.
So quasi Post-Shift ;-)
Zum Thema: Ich würde mir das mit dem ELO-System genau ansehen. Es hat nämlich auch einige ernste Probleme. Es gibt Alternativen, die allerdings deutlich komplizierter sind und deshalb bei Schachturnieren schlecht nachzuvollziehen sind. Aber in einem BG wäre das kein Problem, denke ich mal, denn das ist ja inherent computerbewertet.
gepostet vor 17 Jahre, 3 Monate von raufaser
Na gut, um nicht nur rumzumeckern, hier mal die Funktion, die ich nutze, um zu berechnen, wieviel Erfahrungspunkte ein Spieler bekommt, wenn er ein Monster in meinem Spiel killt. Bin eigentlich ganz zufrieden damit.

// Calc xp given by mobkill
function return_mobkill_xp( $level_player, $level_mob )
{
$p_val = 100 * $level_player;
$m_val = 100 * $level_mob;
$xp = $m_val - $p_val;
$xp = ($xp <= 0 ? 100 + ($xp / 5) : $xp);
return ($xp < 0 ? 0 : $xp);
}
Übergeben wird die Stufe des Spielers und die Stufe des Monsters und zurück kommen die Erfahrungspunkte, die der Spieler erhält.
Vielleicht ist es ja eine Anregung...
Gruß,
Marc

Auf diese Diskussion antworten