Topic: KI Training / Map Test Spielschleife
TickeHD Topic Opener |
Posted at: 2023-08-01, 00:13
Hallo, ich habe vor, die KI zu trainieren und Maps auf ihre Ausgewogenheit zu prüfen. Bis jetzt muss ich dafür immer das Spiel manuell starten und das können hunderte Runden sein, die ich immer wenn das Spiel durchgelaufen ist wieder neu starten muss. Ich stelle mir das so vor: Man wählt eine Karte aus, macht alle Einstellungen und kann für jeden Spieler eine andere KI-Inputdatei auswählen (Ich muss ja auch mehrere WAI Dateien gegeneinander spielen lassen können, damit ich sehe welche besser ist). Wenn das Spiel vorbei ist, soll das Ergebnis (Gewonnener Spieler und KI-WAI Outputdatei) gespeichert werden und anschließend das nächste Spiel gestartet werden, bis die Anzahl der eingestellten Spiele erreicht ist. Man soll auch die Möglichkeit bekommen, nach Abschluss dieser Schleife das ganze weiterlaufen zu lassen bzw. zwischendurch aufzuhören, wenn man meint, dass man schon genug Daten gesammelt hat. Die Allgemeinen Statistiken, welche man mit der Taste A aufgerufen werden können, sollten auch bei jedem Spiel einzeln abgespeichert werden. Eine Maximalspieldauer sollte vom Benutzer vorgegeben werden (Wenn die Zeit abgelaufen ist, wird das Spiel unentschieden und das nächste beginnt), schließlich können auch mal alle Spieler in einem Deadlog sein und das Spiel geht dann unendlich lange und die Schleife kommt nie zum Ende. Ich verwende für KI-Training und Kartentests immer den Spielmodi Landherr, wenn ich mehrere KI-Gegner gegeneinander antreten lasse. Wofür wir das gebrauchen können: Wenn wir eine neue Map gebaut haben, können wir ohne weiteren Aufwand eine von uns gebaute oder heruntergeladene Karte auf ausgewogenheit prüfen (Wenn immer der gleiche Spieler gewinnt, ist die Karte nicht ausgewogen). Außerdem wird KI-Training deutlich einfacher, weil nicht immer das Spiel manuell neu gestartet werden muss. Wenn es keinen großen Aufwand in der Programmierung der Schleifen darstellt wäre es außerdem schön, wenn diese Funktion auch so ausgelegt werden kann, dass mehrere Spiele gleichzeitig laufen können, denn moderne CPUs werden von Widelands nicht besonders beansprucht und verkraften locker mehrere parallel laufende Spiele. Gerne stelle ich meine starke Computerhardware für die Verbesserungen des Spiels Widelands kostenlos bereit, meldet euch bei Interesse bei mir. Ich selbst kann nicht besonders gut programmieren bzw. habe von dem Code von Widelands nur sehr wenig ahnung. Daher bitte ich euch, diesen Beitrag jemanden weiterzuleiten, der sich gut mit dem Code von Widelands auskennt und dies implementieren kann (Es muss nicht zwingend eine Implementierung in Widelands sein, es kann auch ein externes Tool sein, welches das Spiel steuert, so ist 1. keine neue Widelands Version erforderlich und es funktioniert auch mit älteren Versionen und 2. kann dieses Tool auch jemand programmieren, der kein offizieller Widelands Developer ist). Ich möchte nochmal darauf hinweise, dass dies einige Probleme lösen wird und dem Spiel und den Spielern Widelands einen deutlichen Mehrwert bieten wird. Wenn du also so etwas programmieren kannst: Es lohnt sich! Grüße Edited: 2023-08-01, 02:51
Top Quote |
kaputtnik |
Posted at: 2023-08-01, 08:54
Vllt kann man im ai-training switch ja einfach das Ergebnis des Spiels auf der Konsole ausgeben:
Dann kann man die Daten von einem externem Programm auslesen und das Spiel neu starten. Aber ob das dazu nützlich sein kann eine Karte auf Ausgewogenheit zu testen bin ich mir nicht sicher. Auf manchen Karten ist die ai einfach besser als auf anderen (zB wenn viele Bauplätze vorhanden sind vs wenig Bauplätze). Zudem wird die ai ja bei jedem Spiel leicht modifiziert. Top Quote |
hessenfarmer |
Posted at: 2023-08-01, 11:23
Also den Zweck der Kartenevaluation sehe ich nicht, aus den Gründen die auch @kaputtnik anführt. Edited: 2023-08-01, 11:25
Top Quote |
hessenfarmer |
Posted at: 2023-08-01, 11:33
Es wäre aber tatsächlich cool ein Skript (vorzugsweise Python) zu haben. dass folgendes erledigt: Top Quote |
TickeHD Topic Opener |
Posted at: 2023-08-01, 13:26
Erstmal danke für die Beiträge. Die bisher etablierte Möglichkeit die KI zu trainieren funktioniert nur zu einem gewissen Grad. Wenn ich immer die KI weiterführe die gewonnen hat, wird sie sich irgendwann wieder verschlechtern, weil es auch sein kann, dass nicht diese KI besser geworden ist, sondern alle anderen einfach viel schlechter mutiert worden. Wenn die KI über diese Grenze weiter trainiert werden soll, müssen wir mutierte KI Dateien mit nicht mutierten vorgängerdateien vergleichen. Und sind wir uns mal ehrlich, die aktuelle KI ist eher langweilig, was nicht daran liegt, dass der Code schlecht ist, sondern wie sie trainiert wurde. Zum Thema Karten testen: Natürlich ist mir bewusst, dass diese Methode fehleranfällig ist, aber es ist aktuell die beste Möglichkeit eine Karte auf Ausgewogenheit zu testen, viele Runden KI Gegner gegeneinander spielen zu lassen. Ich teste Karten schon Jahre lang auf diese Art. Man sieht mit dieser Möglichkeit deutlich, wenn eine Karte nicht ausgewogen ist, und die Mutationen kann man für den Kartentest ja auch einfach ausschalten, es wird aber zu einem ähnlichen Ergebnis führen. Das Script wäre also durchaus Hilfreich, weil ich es ja im Prinzip nur das gleiche macht wie ich von Hand. Top Quote |
Teayo |
Posted at: 2023-08-01, 15:45
Ja dem würde ich auch zustimmen. Am besten wäre es wenn diese Funktion im Spielmenü eingebaut würde. Das Imperium schlägt zurück ! TY Top Quote |
TickeHD Topic Opener |
Posted at: 2023-08-01, 16:39
Nun erstelle ich meine Zusammenfassung was gemacht werden muss: - Jeder Stamm bekommt standardmäßig eine eigene KI-Datei. - Einzelnen Computerspielern können unterschiedliche KI-Inputdateien zugewiesen werden. - Eine Schleife von mehreren hintereinander oder parallel laufenden KI-Spielen soll erstellt werden können: Der Benutzer wählt eine Karte aus, trägt alle Daten ein: Anzahl der Runden Anzahl der Spieler, Stämme, evtl Teams. Maximale Rundendauer, (Danach wird beendet und das nächste Spiel gestartet, wegen Deadlog Gefahr) Nach jedem Spiel wird in einem Verzeichnis (evtl vom Benutzer festlegbar) für jede Runde ein Ordner erstellt, in dem alle KI-Dateien gespeichert werden und welcher Spieler gewonnen hat, hier soll auch eine Abbildung (Bild) aller allgemeinen Statistiken gespeichert werden. (Messungen der Wirtschaft sind entscheidend: Nicht nur eine Sache muss in die Entscheidung einfließen sondern die gesamte Wirtschaft wie Teayo schreibt:Wenn eine KI sehr effizient mit Bauplatz umgeht, dafür dann aber nur mittelmäßig beim Militär abschneidet, dann sollte man diese KI trotzdem speichern, den die perfekte KI muss in allen Bereichen gut sein, militärisch, wirtschaftlich, bauen, taktisch, strategisch, seefahrt). Das könnte dann so aussehen: In dem Verzeichnis finden sich Ordner (1, 2, 3, 4, 5 usw.) und in jedem Ordner sind die KI-Dateien des jeweiligen Spiels und eine Datei, die angibt welcher Spieler gewonnen hat (z.B 555 für Spieler 5) So kann man dann ganz einfach herausfinden, welcher Spieler wie oft gewonnen hat: Man gibt in die Suche einfach 444 ein und man sieht, wenn 3 Dateien gefunden werden, hat Spieler 4 3 mal gewonnen. Wenn ihr eine Idee habt, wie es besser umgesetzt werden kann, ergänzt bitte, dann werde ich die Zusammenfassung entsprechend anpassen, zumindest ist das die Methode die ich selbst bei mir am Recher so nutze. - Mutationen sollen komplett deaktivierbar sein, um eine KI-Datei so zu testen, wie sie wirklich ist, ohne dass sie vom Spiel nochmal verändert wird. - Es soll keine Begrenzung der Imput-KI Dateien mehr geben, jedem KI-Spieler soll eine eigene KI-Datei zugewiesen werden können. - In den Allgemeinstatistiken soll der aktuelle Wert jeden Spielers angezeigt werden, wie in der Abbildung von Teayo. Schreibt mir gerne eure Ergänzungen und dann geben wir das einem Entwickler weiter. Edited: 2023-08-01, 18:02
Top Quote |
Teayo |
Posted at: 2023-08-01, 18:04
Das mit den Allgemeinen Statistiken von mir oben mit den Bild, das ist ein separater Verbesserungsvorschlag, den ich aufgrund der thematischen Nähe hier mit eingewoben habe. Das Imperium schlägt zurück ! TY Top Quote |
hessenfarmer |
Posted at: 2023-08-01, 18:34
Was ich in der oben angegebenen Aufzählung vergessen hatte, ist das manuelle Review der potenziellen Kandidaten für die nächste KI Generation. D.H. die Entscheidung zur Übernahme in eine neue Generation wurde bisher manuell per Replay überprüft. Desahlb die Vorauswahl der Kandidaten mit 10% besserem Score. Allgemein würde ich aber nicht die allergrößten Erwartungen in das KI Training setzen, da Das Skript sollte meiner Meinung nach extern geschrieben werden, ähnlich wie unsere Testsuite ( also Python), da es das auszuliefernde Program sonst nur aufblähen würde. Top Quote |