Ich möchte heute einmal meine Vorstellungen von der Spielzugberechnung vorstellen, zumindest das, was ich als Diskussionsgrundlage ansehe.
Eine Grafik, die einen möglichen Zwischenstand darstellen soll:
Wir gehen davon aus, das Spieler 1 im Ballbesitz ist.
Die erste Abfrage eines jeden Berechnungsschritts ist immer "Passen oder Werfen?".
Bei "Passen":
Zuerst wird das Passziel aus allen möglichen Spielern von der Berechnung gewählt. Das sind praktisch immer 6, da immer 7 Spieler eines Teams auf dem Platz stehen. Danach werden die Standorte des Passgebers und des Passnehmers geprüft. Wenn beide Spieler im Innenfeld stehen, kommt der Pass zu 100% an, es braucht keine weitere Abfrage für diesen Schritt des Spielzugs. Wenn mindestens einer der Spieler im Außenfeld steht, wird geprüft, ob der Ball abgefangen wird (15%-Chance, 5% je gegnerischen Innenfeldspieler). Wenn der Ball abgefangen wird, dann wird aus allen Spielern im Innenfeld des Gegners einer zufällig gewählt, der dann im Ballbesitz ist. Der Spielzug endet beim Abfangen eines Balls.
Spieler 1 kann also auf Spieler 2, 3 und 5 sicher passen und auf Spieler 4, 6 und 7 nur zu 85% sicher. Den Ball abfangen können nur Spieler 11, 13 und 15.
Passspiele sind immer unabhängig von den Attributen der Spieler. Positionen und Taktiken werden höchstens Einfluss darauf haben, wohin ein Spieler passen wird (wurfschwacher Spieler zu wurfstarker Spieler oder Innenfeldspieler zu Außenfeldspieler).
Bei "Werfen":
Zuerst wird das Wurfziel aus allen gegnerischen Innenfeldspielern von der Berechnung gewählt. Das sind praktisch immer 1-6, da mindestens ein Spieler je Team im Außenfeld stehen muss. Spieler 1 würde also definitiv auf Spieler 11, 13 oder 15 werfen. In der von mir vorgesehenen Berechnung ist es nicht möglich, das ein Wurfversuch ein anderes Ziel trifft, als vorab ausgewählt wird. Ebenso kann nur das Wurfziel einen geworfenen Ball fangen. Zwar wäre das möglich (und auch realistisch), aber es erfordert viele zusätzliche Abfragen die vermutlich vernachlässigt werden können.
Gehen wir davon aus, das Spieler 1 auf Spieler 11 wirft. Es werden drei Werte errechnet. Der Wurfwert für den Werfer und Fangwert sowie Ausweichwert für das Wurfziel. Alle drei Werte sind eine Toleranz von 10% um die jeweilige Stärke des Spielers. Ein Spieler mit Werfen 15 hat also bei jedem Wurf einen Wurfwert von 13,5 (90%) bis 16,5 (110%). Nach der Berechnung dieser Werte werden sie verglichen. Zuerst Wurfwert vs Fangwert und, wenn der Wurfwert höher ist, Wurfwert vs Ausweichwert. Nur dann, wenn der Wurfwert beide Vergleiche gewinnt, wurde das Wurfziel getroffen.
Ein Wurf ist unabhängig vom Erfolg immer das Ende eines Spielzugs.
Ballbesitz nach Spielzügen:
Am Ende eines Spielzugs wird ein neuer Ballbesitz ermittelt. In manchen Fällen ergibt sich der Beginn des nächsten Spielzugs von selbst:
Ein Ball wurde während eines Passspiels abgefangen
Ein Abwurfversuch wurde vom Wurfziel gefangen
Jeweils ist der Spieler, der den alten Spielzug beendet der Beginn des neuen Spielzugs.
Sowohl ein erfolgreicher Abwurf als auch ein erfolgreiches Ausweichen benötigen eine Abfrage zur Bestimmung des Ballbesitzes. Theoretisch entscheidet die Flugbahn des Balls diese Abfrage stark, zur Vereinfachung möchte ich die Abfrage immer gleich anwenden.
Bei erfolgreichem Abwurf:
Chance von 10% je Innenfeldspieler, das der Ball in Besitz des zuletzt verteidigenden Teams landet. Wenn "ja", dann wird von der Berechnung ein zufälliger Innenfeldspieler des zuletzt verteidigenden Teams ausgewählt. Wenn "nein" wird ein zufälliger Außenfeldspieler des zuletzt angreifenden Teams ausgewählt.
Im Szenario besteht eine 20%-Chance, da nur noch Spieler 13 und 15 im Innenfeld stehen. Spieler 11 befindet sich bei dieser Abfrage schon im Außenfeld.
Bei erfolgreichem Ausweichen:
Chance von 10% je Außenfeldspieler, das der Ball in Besitz des zuletzt angreifenden Teams landet. Wenn "ja", dann wird von der Berechnung ein zufälliger Außenfeldspieler des zuletzt angreifenden Teams ausgewählt. Wenn "nein" wird ein zufälliger Innenfeldspieler des zuletzt verteidigenden Teams ausgewählt.
Im Szenario besteht eine 30%-Chance, da Spieler 4, 6 und 7 im Außenfeld stehen.
---
Es ist recht schwierig zu beschreiben, was genau hier gemeint ist. Ich hoffe, es ist dennoch verständlich.
Momentan unklar ist mir, ob es eine Wahrscheinlichkeit braucht, das ein Wurf grundsätzlich daneben geht, also eine Abfrage bevor die Attributswerte berechnet werden (bspw ob der Ball vor Erreichen des Wurfziels den Boden berührt).
Besonderes Kopfzerbrechen bereitet es mir einem Spielzug mit einer Dauer zu bemessen. Einfach mit jedem Berechnungsschritt eine feste Dauer abziehen ist nicht so toll. Gut wäre es, wenn die Geschwindigkeit eines Spielzugs von der Situation abhängig ist, bspw wenn das Ergebnis "gut genug" ist, wird ruhiger gespielt, bzw andersrum schneller. Das erfordert allerdings eine vielzahl von Daten zusätzlich, wenn es brauchbar umgesetzt sein soll. Oder man macht einfach fest 100 Ballstationen (10 je Spielminute), was dann langweilig aber zuverlässig ist.
Realitätsnähe ist schön aber nervig.