5 Reaktionen

Online Sports-Manager „Live“-Spielberechnung – Teil 1

Geschätzte Lesedauer:

Wie wir ja schon angekündigt haben, befinden wir uns in der frühen Entwicklungsphase eines Browsergame-Projekts, das wir (vorerst) Sports-Manager getauft haben.

An dieser Stelle soll euch nun ein kleiner Einblick gegeben werden, was für uns eine zentrale Herausforderung bei der Entwicklung jedes Online-Managers darstellt – das Live-Spiel oder grundsätzlich die Berechnung der Begegnungen in der Simulation. Dabei ist es unserer Ansicht nach egal, ob es sich um einen Fußballmanager, Basketballmanager oder andere Sportart handelt, die man zumindest in Grundzügen miteinander vergleichen kann.

Berechnungsansätze

Grundsätzlich kommen viele Möglichkeiten in Betracht die Berechnung der Begegnungen durchzuführen. Ein paar hiervon stellen wir vor und geben eine kurze Begründung, weshalb wir uns dafür oder dagegen entschieden haben.

Variante 1: Live-Berechnung mit KI

Die wohl komplexeste, rechenintensivste und zugleich fehleranfälligste Variante. Hierbei wird jeder Spieler auf dem Spielfeld einzeln betrachtet und trifft eigene Entscheidungen. Natürlich basieren diese „Entscheidungen“ auf den verschiedenen Gegebenheiten, Spielsituationen und Wahrscheinlichkeiten. Uns sind kaum Online-Manager bekannt, die diese Möglichkeit der Berechnung nutzen. Zwei Fußballmanager, deren Berechnung wohl zumindest teilweise auf dieser Methode basiert sind Soccer-Match und GoalStar. Die genauen Berechnungshintergründe sind uns allerdings nicht bekannt, bis auf die Tatsache, dass C++ für die Berechnungen eingesetzt wird [1] und mehrere Server eingesetzt werden.

Für unser Projekt kommt diese Art der Berechnung aus mehreren Gründen nicht in Frage.

Zum Einen soll die Software später auch auf einem (vernünftig ausgestatteten) Webspace laufen und nicht zwingend einen eigenen (oder auch mehrere) Server als Voraussetzung haben. Eine KI-Berechnung mit annehmbarer Performance wird außerdem schwer in PHP zu realisieren sein, so dass man hier auf andere Technologien wie Java, C++ o.ä. zurückgreifen müsste.

Variante 2: Einfache Vorabberechnung

Eine einfache Möglichkeit der Berechnung ist die Stärken beider Mannschaften zu vergleichen und hieraus das Ergebnis zu berechnen – eventuell gemischt mit ein paar Zufallswerten. Wie sich die Stärken der Mannschaften hierbei zusammensetzen ist nicht wichtig, es zählen ausschließlich die Gesamtwerte.

Hierbei kann man sich nun entscheiden, ob das stärkere Team immer gewinnt, oder ob mit einer Wahrscheinlichkeit gearbeitet wird.
Hier nun ein Beispiel:
Team A hat eine Stärke von 140, Team B eine Stärke von 120.
Berechnen wir den Anteil von Team A, so ergibt sich 140 / (140 + 120) = 140 / 260 = 0,538 = 53,8%.
Wir könnten – wenn wir nun mit Wahrscheinlichkeiten arbeiten – also sagen, dass Team A in knapp 54% aller Fälle die Begegnung gewinnt. In PHP Code ausgedrückt sähe das zum Beispiel so aus:

[pastacode lang=“php“ message=“PHP“ highlight=““ provider=“manual“]

$teamA = 140;
$teamB = 120;
 
$anteilA = $teamA / ($teamA + $teamB);
if(mt_rand(1, 100) < = $anteilA) {
  // Team A gewinnt
} else {
  // Team B gewinnt
}

[/pastacode]

Dies ist allerdings eine sehr vereinfachte Darstellung und es fehlen auch jegliche Überprüfungen auf Fehler oder mögliche Stolpersteine (was passiert, wenn teamA + teamB == 0 ist?). Wie das genaue Ergebnis der Begegnung in dieser Berechnung aussieht, würde man vermutlich auch an den Stärken festmachen. Je größer der Stärkenunterschied, desto größer auch der Unterschied im Ergebnis.

Für unsere Zwecke ist auch diese Art der Berechnung nicht geeignet, da sie die Werte viel zu vereinfacht betrachtet. Der bekannte WebSoccer dürfte in seiner Urform (also ohne Erweiterungen) eine erweiterte Variante dieser Berechnungen verwenden. Wenn man sich die Spiel-Ergebnis-Dateien ansieht ist schnell ersichtlich, dass ausgerechnet wird wie viele Minuten zwischen je zwei Toren und Torversuchen einer Mannschaft liegen. In einer reinen Textdarstellung für den Manager wäre es wohl zu eintönig, wenn die Tore immer in gleichen Zeitabständen fallen. Einen weiteren Nachteil, weswegen wir diese Art der Berechnung verworfen haben wird im nächsten Beispiel erwähnt.

Variante 3: Erweiterte Vorabberechnung

Um der Berechnung mehr Tiefe zu verleihen ist es ratsam nicht nur die Gesamtstärke eines Teams einzubeziehen, sondern auch die einzelnen Teambereiche – also Torwart, Abwehr, Mittelfeld und Sturm und diese dann miteinander zu vergleichen. Das heißt: Abwehr Team A gegen Sturm Team B, Mittelfelder gegeneinander, sowie Sturm Team A gegen Abwehr Team B. Zusätzlich den Sturm gegen den Torwart betrachten um die Torausbeuten zu ermitteln.

Ein zusätzlicher Erweiterungsschritt bestünde dann darin diese Bereiche auch noch in links, rechts und zentral aufzuteilen, so dass es in jedem Team 9 Bereiche plus Torwart gibt, die verglichen werden. Linker Sturm Team A gegen rechte Abwehr Team B usw.

Diese Art der Berechnung hat im Vergleich zu den zuvor genannten einfachen Vorabberechnungen schon den entscheidenden Vorteil, dass wichtig ist an welchen Positionen die Spieler im Team aufgestellt sind und wie das gegnerische Team aufgestellt ist. Das Ergebnis hängt also nicht mehr ausschließlich von den Werten ab, sondern auch von der Taktik des Managers.

Diese Möglichkeit bietet allerdings immer noch keine einfache Möglichkeit einen Text-Ticker einzubauen, in dem der Spielverlauf verfolgt werden kann. Daher reicht auch diese Art der Berechnung für unser Projekt noch nicht aus.

Eine noch deutlich erweiterte Form dieser Berechnung verwenden auch wir für unser Projekt. Welche zusätzlichen Erweiterungen wir in der Berechnung noch vorgenommen haben und welche Probleme zu lösen waren (und noch sind) behandeln wir im nächsten Teil dieser Beitragsreihe.

[1] Quelle: pixcept KG Referenzen

Dieser Artikel wurde von Daniel Thielau verfasst.

4 Kommentare - bis jetzt!

Eigenen Kommentar verfassen
  1. schrieb am :

    Äääh: wollt ihr „richtige“, später stattfindende Spiele vorausberechnen oder sind das „fiktive“ Spiele?

  2. schrieb am :

    Wie bereits im ersten Artikel zum Sports-Manager erklärt, geht es um eine Anwendung für Sportsimulationen, wie man es beispielsweise mit der WebSoccer-Software für Fußballmanager-Simulationen kennt. Der WebSoccer ist eine Software, welche man kaufen konnte (als es die Firma dahinter noch gab), und sich auf seinem Server beziehungsweise Webspace installieren konnte. Damit hatte man sein eigenes Spiel angeboten und andere Leute konnten dann die Kontrolle über ihren eigenen virtuellen Verein übernehmen. Die Soccer-Zone, eines meiner Projekte, betreibt ebenso eine solche Simulation. Das Sports-Manager Projekt ist grundsätzlich aber nicht auf Fußball beschränkt.

  3. Peter
    schrieb am :

    Hi,

    Sag mal, hast du den Code dieser Live-Berechnung irgendwo rumliegen?

    Grüße

  4. Daniel Thielau Verfasser des Artikels
    schrieb am :

    Da ich ihn geschrieben habe, liegt die Vermutung nahe 🙂

Und jetzt du! Deine Meinung?

Erforderliche Felder sind mit einem Asterisk (*) gekennzeichnet. Die E-Mail-Adresse wird nicht veröffentlicht.
  1. Nach Absenden des Kommentar-Formulars erfolgt eine Verarbeitung der von Ihnen eingegebenen personenbezogenen Daten durch den datenschutzrechtlich Verantwortlichen zum Zweck der Bearbeitung Ihrer Anfrage auf Grundlage Ihrer durch das Absenden des Formulars erteilten Einwilligung.
    Weitere Informationen