![]() |
Fussball KI,wie anfangen?
Hallo,
ich programmier ja schon seit einiger Zeit ein Browsergame bei welchem man per Java-Applet eine 2D Simulation anschauen können soll. Jetzt habe ich mein Applet soweit, dass ein Match-Objekt als XML in die Datenbank gespeichert wird usw und jetzt möchte ich anfangen ne gescheite KI zu programmieren. Wie geht man sowas am besten an? Also konkrekt habe ich folgende Ausgangssituation: 1 Ball 2 Teams a 5 Spieler Jeder Spieler hat ne x/y-Koordinate als "Startposition" keine Torhüter dafür kleinere Tore aufs Tor geschossen werden darf erst im Strafraum(mal schaun ob das bleibt) Fouls gibts erstmal nicht, entweder man gewinnt oder verliert einen Zweikampf Spieler haben unterschiedliche Attribute wie Schnelligkeit, Zweikampf, Schusskraft usw. Also wie fang ich jetzt an ne KI zu programmieren? Wie leg ich fest wo Spieler am besten hinlaufen? Mir fehlt irgendwie der Ansatz wie man so ne Logik entwickelt. Hat mir jemand nen Rat? |
AW: Fussball KI,wie anfangen?
Hallo, ich hatte mal vor langer Zeit im Internet eine Open-Source Fussball KI gefunden. Bin mir nicht ganz sicher ob ich das hier posten darf, deswegen schicke ich dir das später mal per PM. Muss das noch suchen :stupid:
|
AW: Fussball KI,wie anfangen?
Ich hab mich selber damit nicht so richtig auseinandergesetzt aber wie wäre denn diese Idee hier:
Du nimmst alle Felder her, und gibt ihnen einen Wert -- der Wert gibt dann an, ob man sich diesem Feld nähern sollte. Den Wert berechnest du so, indem du alle gegnerischen Spieler durchiterierst, ihre Position zum Feld hernimmst und das umgeben Feld eben, je näher zum Spieler, mit einem desto schlechteren Wert bestückst. Und damit das ganze nicht chaotisch von statten geht, sorgst du dafür, dass das Team (eigene Spieler) sich in eine bestimmte Richtung unter bestimmten Vorraussetzungen (Verteidigen/Angreifen/Position halten/..) bewegt... Ist schwer zum Erklären; aber wenn du das Grundprinzip verstehst, dann hab ichs geschafft, es dir richtig zu erläutern. Die Frage, ob es sinnvoll und nützlich ist, bleibt jedoch weiterhin offen... MfG |
AW: Fussball KI,wie anfangen?
Ich will dich nicht entmutigen, aber solltest du noch nie eine KI geschrieben haben, rate ich dir erst mal ein KI für TicTacToe zu schreiben. Eine KI für ein Fußballspiel dürfte alles andere als trivila sein, wenn sie einigermaßen realistisch sein soll.
|
AW: Fussball KI,wie anfangen?
Also du meinst,dass ich das Spielfeld in viele kleine Felder zB ein raster 5x7 unterteile und wenn sich Ball/Gegner in einem bestimmten Feld befinden bewegt man sich dahin, wenn das eigene Team den Ball hat laufen die Spieler sich frei,d.h. dass die Passwege zum Ballführenden Spieler frei sind?
Muss ich mal überlegen entweder ich unterteils in Felder oder geh über die x-/y-Abstände Ich hab momentan ein Spielfeld mit 600x400 Pixel. |
AW: Fussball KI,wie anfangen?
Hi,
ich würde dir raten, deine KI unabhängig von der grafischen Repräsentation zu halten. LG, Frederic |
AW: Fussball KI,wie anfangen?
Eventuell hilft es, mal auf einem Blatt Papier "zu Spielen" (gegen einen anderen Menschen, zufälliges auswürfeln, Spiel irgendwie aufnehmen) und dir nachher (oder dabei) zu überlegen, was du warum gemacht hast.
|
AW: Fussball KI,wie anfangen?
Zitat:
Abgespeichert werden nur die Ausgangswerte zusammen mit einem Randomseed. Ich hab das schonmal getestet, da kommt dann auch immer das gleiche Ergebnis und der gleiche Spielverlauf raus. Zitat:
|
AW: Fussball KI,wie anfangen?
Hi,
wäre es nicht besser, die grafische Ausgabe auf Basis der Berechnungen des nicht-grafischen Laufes zu generieren anstatt es doppelt zu berechnen? LG, Frederic |
AW: Fussball KI,wie anfangen?
Dann bekomm ich aber ein kleines Speicherproblem,weil ich quasi jeden Schritt speichern müsste.
So kann ich nur den Anfangszustand speichern was vielleicht 1,5KB in der Datenbank belegt(was immernoch genug ist) Und da die zweite Berechnung in nem Java-Applet also auf dem Client geschieht belastet sie meinen Server ohnehin nicht. Ich muss natürlich die Appletversion mitspeichern für den Fall, dass sich mal was an der Berechnung ändert, aber das ist ein eher kleines Problem. |
AW: Fussball KI,wie anfangen?
Auch wenn es wahrscheinlich nicht die Liga des Browsergames ist, trotzdem interessant:
![]() |
AW: Fussball KI,wie anfangen?
[OT] KI für Fußball? Was würde Gladbach und was würde Schalke dafür Zahlen?
(und was erst Dortmund, damit Schalke soetwas nicht bekommt)[/OT] Gru K-H |
AW: Fussball KI,wie anfangen?
schon interessant der heise-artikel, aber tatsächlich nicht so meine Lige :D
Ich hab jetzt mit nem Professor der Hochschule hier gesprochen, der als auch am RoboCup teilnimmt und sich bissl mit KI auskennt. Er meinte, dass es für ein solches Projekt am besten wäre mit Desicion Trees zu arbeiten. Diese könnte man dann in XML-Dateien auslagern wodurch man das Programm selbst nichtmehr verändern müsste, sondern die KI über die XML-Datei verändern kann. (Hätte auch den Vorteil, dass man einen KI-Editor programmieren und dann jährliche User-Wettbewerbe veranstalten kann - "Wer hat die beste KI") Naja soweit so gut, aber wie baue ich eine solche Datei am besten auf? Ich muss ja quasi Zustände und Aktionen festlegen, da wären als Aktionen: passen,schiessen, dribbeln, laufen,angreifen. Als Zustände fallen mir spontan ein: anstossSpieler, anstossTeam, anstossGegner, ballbesitzSpieler, ballbesitzTeam, ballbesitzGegner Dazu muss man in die XML-Datei noch die Positionen auf dem Spielfeld mit einbringen, sowie den aktuellen Spielstand. Aber wie bau ich da so einen Desicion Tree in XML Form dann auf und wie interpretiert man sowas dann? |
AW: Fussball KI,wie anfangen?
Oha,keine Antwort.
*push* Also ich hab mich mal durch Tutorials gewühlt aber hab noch bissl Probleme. Also angenommen ich habe nur "wenige" Bedingungen und Zustände: Zustände: -Ich hab den Ball -Mein Team hat den Ball -Das gegnerische Team hat den Ball -Keiner hat den Ball Bedingungen: [Spielerentfernung] -Entfernung zum Ball -Entfernung zum Gegner -Entfernung zum Mitspieler -Entfernung zum Tor [Mitspielerentfernung] -Entfernung zum Ball -Entfernung zum Gegner -Entfernung zum Tor [Gegnerentfernung] -Entfernung zum Ball -Entfernung zum Mitspieler -Entfernung zum Tor Aktionen: -Schiessen -Passen -Laufen -Warten Dann könnte ein XML-File in etwa so aussehen(oder?):
Code:
Wäre das richtig? Oder wie würdet ihr das machen?
<root>
<situation type="playerball"> ... </situation <situation type="teamball"> ... </situation <situation type="opponentball"> ... </situation <situation type="freeball"> <condition type="player_dist_ball" value="100"> <condition type="team_dist_ball" value="less"> <action type="wait"> </condition> <condition type="team_dist_ball" value="more"> <action type="move_to_ball"> </condition> </condition> <condition type="player_dist_ball" value="200"> ... </condition> <condition type="player_dist_ball" value="else"> ... </condition> </situation </root> |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz