Info
Hey, ich bin Danni-san (13468602) und ich möchte hier mein Projekt zu Hattrick mit euch teilen.
Wer mir für den Webserver und die hunderte Stunden an Arbeit ein Bier spendieren möchte, darf dies gerne in Form von HT-Credits tun. ;)
Funktionen des Simulators
by Danni-san (13468602)
Erläuterungen
Dieser HT Simulator simuliert anhand von Ratings zweier Teams sowie diversen Einstellungen
ein Spiel, anähernd wie es in HT geschieht. Führt man zu einem Spiel mehrere Simulationen
durch, wird der Durchschnitt aller Ergebnisse verwendet, um eine Abschätzung zur
Siegeswahrscheinlichkeit zu geben. Ist die Anzahl der durchgeführten Simulationen
gering (1-5.000), können dabei größere Schwankungen entstehen.
Bei vielen Simulationen (50.000-100.000) ist das Ergebnis genauer.
Dafür dauert die Berechnung länger (10-30 sec).
Aus Performance-Gründen ist die Anzahl der Simulationen pro Spiel aktuell auf 100.000
begrenzt, bzw. eine maximale Berechnungszeit von 30 sec eingestellt.
Wie bei HT werden mehrere Events generiert (Torchancen, SE’s), welche irgendwann im Spiel
auftreten. Diesen Events wird zufällig eine Auftrittsminute (1. - 90. min) zugewiesen.
Anschließend werden sie in der Reihenfolge ihres Auftretens abgewickelt.
Jedes Event findet also zu einer bestimmten Minute während des Spiels statt.
Außer den normalen Chancen und dessen Verwertungswahrscheinlichkeit werden alle
Wahrscheinlichkeiten zur Umwandlung von Chancen (durch Taktik) oder durch
Sonderereignisse (SE’s, PNF, 6er etc) direkt an den Simulator übermittelt und
für die Berechnung verwendet. So kann der Nutzer zB selber einstellen wie
hoch die Chance für einen Konter oder ein Tor durch ein SE sein soll.
Die Chancen
Es werden 5 offene Chancen und je Team 5 eigene Chancen erstellt.
Zum Zeitpunkt einer offenen Chance wird anhand der aktuellen MF-Ratings beider
Teams zu diesem Zeitpunkt die Wahrscheinlichkeit berechnet, ob die Chance Team A
oder Team B erhält. Bei einer eigenen Chance entfällt die Chance, sollte das
entsprechende Team diese nicht erhalten.
Die Formel für die Wahrscheinlichkeit zum Erhalt einer Chance ist:
(mf_ratings_a-0.75)^3 / ((mf_ratings_a-0.75)^3 + (mf_ratings_b-0.75)^3)
mit mf_rating_a < mf_rating_b
Über welche Seite der Angriff erfolgt (links 25%, Mitte 35%, rechts 25% und Standards 15%)
wird jeweils bei Abwicklung der Chance ermittelt. Danach wird ggf. noch eine Umwandlung
der Chancenseite geprüft, sollten Taktiken eingestellt sein.
Verwertung
Wird für ein Team eine Chance abgewickelt, wird zunächst geprüft ob diese Chance
zu einem Torversuch kommt. Wird sie nicht durch eigenes oder gegnerisches Pressing
verhindert oder von einem gegnerischen 6er geblockt, wird eine Seite für die
Chance ermittelt. Ggf. wird diese durch die eigene Taktik noch umgelenkt.
Anschließend werden die eigenen Sturmratings der Angriffsseite (Standard wird auch
als “Seite” betrachtet) mit den gegenüberliegenden Verteidigungsratings des Gegners
verglichen.
Die Formel zum Torerfolg ist:
92 * (att-0.75)^3.5 / ((att-0.75)^3.5 + (def-0.75)^3.5)
SE’s und kreativ spielen
Sonderereignisse durch Spezialfähigkeiten der Spieler sind dahingehend abstrahiert,
dass jedes Team 2 SE-Chancen pro Spiel erhält. Die eingestellte
SE-Umwandlungswahrscheinlichkeit gibt an, wie wahrscheinlich diese SE-Chancen
zu einem Tor führen.
Standardmäßig liegt dieser Wert bei 5%, da selbst ohne Spezis Tore durch SE’s fallen können.
Als ungefähre Handregel gilt:
Jede Torrelevante Spezis erhöht die Grundwahrscheinlichkeit für ein SE Tor um x%.
SN (als FL, ZM, ST, wenn kein Gegenspieler SN ist): +3%
UB: +3%
BZ (als FL, ZM, ST): +2% (bei vielen gegnerischen KBs auch +3%)
KB: +2%
Die Taktik “kreativ” erhöht die Anzahl der SE-Chancen für beide Teams um 1.
Spielen beide Teams kreativ, erhalten beide Teams pro Spiel 4 SE-Chancen.
Pressing
Spielt ein Team “Pressing”, wird die eingestellte Taktik-Umwandlungswahrscheinlichkeit
dazu verwendet um eine normale (offene oder eigene) Chance zu vernichten,
bevor sie ausgeführt wird. Dies geschieht zum Zeitpunkt des Auftretens einer
normalen Chance. Spielen beide Teams Pressing, wird bei jeder Chance zuerst die
Wahrscheinlichkeit von Team A zum Pressen einer Chance verwendet und in einer
zweiten Abfrage die Presswahrscheinlichkeit von Team B geprüft.
Pressing führt außerdem dazu, dass ein Weitschuss des Gegners zu 10% geblockt wird.
Taktik: Angriff über Flügel / durch die Mitte
Bei AoW werden alle Angriffe, die durch die Mitte kommen zu der Wahrscheinlichkeit
für die Taktikumwandlung auf links oder rechts umgeleitet (je 50%). Chancen über
Standard werden nicht umgewandelt.
Äquivalent werden bei AiM Chancen über rechts oder links zur Mitte umgewandelt,
zu der eingestellten Wahrscheinlichkeit.
Standards und Weitschuss
Standards werden nicht in direkte oder indirekte Freistöße unterteilt. Die Ratings
für Standard werden bei allen Standardchancen, Elfemetern und Weitschüssen
zur Torberechnung verwendet.
Bei Weitschuss werden alle Chancen über rechts, links und der Mitte zu
Weitschüssen (Chance über Standard) umgewandelt, abhängig der
Taktikumwandlungswahrscheinlichkeit.
Taktik Konter und taktikunabhängige Konter
Bei vergebenen Chancen des Gegner erhält man bei eingestellter Kontertaktik
zusätzliche Chancen, welche direkt ausgeführt werden. Die Umwandlungswahrscheinlichkeit
entspricht der Taktikumwandlung. Die Wahrscheinlichkeit sinkt nicht mit
steigender Anzahl an erhaltenen Kontern.
Zusätzlich und unabhängig von der eingestellten Taktik kann ein taktikunabhängiger
Konter ausgelöst werden. Die Wahrscheinlichkeit hierfür wird vom Nutzer als
“taktikunabhängige Konter-Wahrscheinlichkeit” eingestellt. Sie liegt standardmäßig
bei 2% und wird je eingesetztem BZ-VT um +1% erhöht.
PNF und 6er
Der eingestellte Wert “Tor durch PNF” ist die Wahrscheinlichkeit, dass der PNF ein Tor
bei vergebener Chance erzielt. Auf der Simulatorseite kann die Anzahl der PNFs
angegeben werden. Dieser Wert wird jedoch nur dafür verwendet den “Tor durch PNF”
Wert einzustellen. Nur dieser Wert wird für die Simulator verwendet.
Da bei einem PNF zunächst zu 10% ermittelt wird, ob er eine Chance erzeugt und
danach noch ein Vergleich des Torschützen mit dem gegnerischen Torwart durchgeführt
wird, ist hier der Standardverwertungswert bei nur 5% eingestellt.
Entsprechend kann man die Wahrscheinlichkeit des PNF-Tores für den aktuellen Fall
manuell einstellen.
Die Prüfung auf ein PNF Tor geschieht bevor das andere Team ggf. einen Konter
erhält. Ein PNF verringert also die Anzahl der Konter des Gegners. (Diese Reihenfolge
ist fürs echte HT nicht bestätigt.) Nach einer misslungenen Konterchance kann kein
PNF-Tor erzielt werden.
Äquivalent zum PNF kann unter “Pressing durch 6er” die Wahrscheinlichkeit eingestellt
werden, dass eine gegnerische Chance geblockt wird, bevor sie abgehandelt wird.
Auch hier wird nicht in zwei Schritten (wird 6er gefordert + Vergleich mit
Gegenspieler) gerechnet, sondern direkt die eingestellte Wahrscheinlichkeit
verwendet.
Rückzug
Da der Simulator die Events nacheinander abarbeitet und zu jedem Zeitpunkt des Spiels
den aktuellen Spielstand kennt, kann der Effekt des Rückzuges simuliert werden.
Ist “Rückzug” aktiviert, werden bei jedem Event abhängig des aktuellen Spielstandes
die Ratings des führenden Teams angepasst. Bei einer Führung von mehr als einem Tor
wird pro Tordifferent der Sturm um x% reduziert und die Verteidigung um y% erhöht.
Bei einem Chancenevent wird dann anhand der neu berechneten Ratings ermittelt,
ob die diese zum Torerfolg führte.
Kondition
Abhängig der aktuellen Minute im Simulator kann ein Abzug aller Ratings aufgrund von
niedriger Kondition simuliert werden. Ist die angegebene Kondition eines Teams unter
9.00, wird entsprechend der Tabelle ____ ein Abzug auf die Ratings berechnet.
Dieser wird minutengenau bzw prozentual entsprechend der Tabelle ermittelt.
Die angegebene Kondition wird also als Teamdurchschnittskondition verwendet
und wirkt immer auf alle Ratings. Umwandlungswahrscheinlichkeiten sind davon
nicht betroffen.
Die angegebene Kondition muss nicht in 0.25er-Schritten angegeben sein.
In einer Verlängerung bleibt der Konditionswert von dem aus Minute 90.
Unterschätzung
Ist der eingestellte Wert für Unterschätzung größer als 0, wird in der ersten
Halbzeit das MF-Rating des Teams um den eingestellten Wert (in Prozent) reduziert.
Als Faustregel wird hier die Punktedifferenz der beiden Teams eingestellt. Bei 20 Punkten
Unterschied wird also das MF-Rating jeweils auf 80% reduziert, bevor eine Chance
vermittelt wird.
In Minute 45 wird die Reduzierung des MF-Ratings entsprechend des Spielstandes
angepasst oder aufgehoben.
Bei Rückstand: Aufhebung
Bei Führung mit einem Tor: Reduzierung des Abzugs auf ⅓ (Beispiel: 20% * ⅓ => nur noch 7% Abzug)
Bei Führung mit zwei Toren:: Reduzierung auf ⅔ (14% statt 20%).
Bei Führung mit mehr als zweit Toren: keine Anpassung
Verlängerung und Elfmeterschießen
Wird das Spiel als “Pokalspiel” simuliert, wird bei Gleichstand am Ende des regulären
Spiels eine Verlängerung durchgeführt. Hierfür erhalten beide Teams eine zusätzliche
eigene Chance und zwei offene Chancen werden ermittelt.
Ist das Spiel nach diesen 4 zusätzlichen Chancen immer noch Unentschieden, wird ein
Elfmeterschießen simuliert. Hierfür werden die Torwahrscheinlichkeiten per Standard von
beiden Teams verwendet, jedoch um 10% erhöht. Je Runde wird also eine Chance über
Standard pro Team berechnet. Nach der 5. Runde wird das Spiel beendet, sollte eine
Mannschaft ein Tor mehr als das andere haben. Ist das Spiel nach der 22. Runde im
Elfemeter immer noch Unentschieden, erhält Team A zu 50% ein Extrator und gewinnt.
Andernfallls erhält Team B den “Sieg durch Münzwurf”.
Die Tore durch Elfmeter tauchen in den Statistiken normal als Standardtore auf und
zählen auch als Endergebnis.
Anweisungen
Als Anweisung kann ab einer bestimmten Minute und unter einer bestimmten Bedingung
das Team andere “Grundratings” erhalten. Diese “Grundratings” sind wie die normalen
eingestellten Ratings und werden ab dem Zeitpunkt der Anweisungsdurchführung statt
der zuvor verwendeten Ratings benutzt. Diese Ratings werden durch Abzüge wie Rückzug,
Kondition oder Unterschätzung im Verlauf des Spiels noch verändert.
Nachdem eine Anweisung durchgeführt wurde, wird sie für das restliche Spiel gelöscht.
D.h. bei einer Anweisung bei Führung wird diese nur einmal ausgeführt, auch wenn im
späteren Spielverlauf kurzzeitig der Ausgleich geschossen und man danach erneut in
Führung geht.
Diese Funktion ist also besser dafür geeignet eine Einwechslung eines Verteidigers
für einen Stürmer zu simulieren, als den Austausch eines Stürmers wegen Kondieinbruch.
Im ersten Fall würde man zB eine 2-5-3 Aufstellung in den Simulator als Ratings zu
min 0 eingeben. Die Anweisungsratings würden einer 3-5-2 Aufstellung zu Minute 0
entsprechen. Wird diese Anweisung nun in Minute 70 ausgeführt und Konditionsabzug
wäre aktiviert, würden ab min 70 die Ratings aus der Anwesung (3-5-2) verwendet werden,
jedoch ggf. Abzüge durch Kondition erhalten.
Möchte man einen Stürmeraustausch wegen Kondieinbruch simulieren, müsste man in der
Anweisung die selben Ratings wie zum Spielbeginn verwenden, jedoch die Ratings im Sturm
leicht erhöhen. So wären die Sturm-Ratings nach der Anweisungsausführung trotz
Kondiabzug wieder auf dem selben Niveau wie zu min 0.
In den Anweisungen können auch die Wahrscheinlichkeiten für PNF, 6er und BZVT
geändert werden. So kann zB das Defensivstellen eines 6ers bei Führung eingestellt
werden, welcher zu Beginn des Spiels noch nicht aktiv war.
Schätzung per Torerwartung
Die Schätzung per Torerwartung berechnet anhand der Ratings und Taktiken die durchschnittliche
Anzahl an Toren die jedes Team schießen würde. Alle Effekte, die erst im Spielverlauf
auftreten (Kondi, Anweisungen, Rückzug, etc.) werden vernachlässigt.
Anschließend wird anhand der erwarteten Tore eine Prognose für die Siegchancen berechnet.
Diese ist nur eine Annährung. Eine genauere Prognose erhält man durch die Simulation
mit 100.000 Spielen.
Die Formel zur Siegprognose anhand der Torerwartungen lautet:
var win_a = (15.70958 * b + 103.2459) + ( -17.8024 * b - 94.45938 ) / ( 1 + Math.pow( a / ( 1.55401 * b + 0.5448175 ), 1.871846-0.7598422*b + 0.379157 * Math.pow(b,2) -0.04217432 * Math.pow(b,3) ) )