Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Helmut

5x Contest-Sieger

  • »Helmut« ist der Autor dieses Themas

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

91

23.02.2015, 01:56

So, die erste Runde ist vorbei und hier sind auch schon die vorläufigen Ergebnisse!

Das Paket enthält jetzt auch alle Sourcecodes.
Davids Einsendung ist noch nicht in der Auswertung enthalten, weil seine KI etwas langsamer ist und er natürlich auch 7 Versionen einsenden musste :) Ich werd das über Nacht mal rechnen lassen. So wie es aussieht ist seine KI die Beste (wenn man von meiner absieht:)), er will aber nur außer Konkurrenz teilnehmen.
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

92

23.02.2015, 02:15

Ich habs doch ernsthaft verpasst ~.~ Bis jetzt durchgeschlafen.

Nächste Runde macht meine K.I.(Kartoffel Intelligenz) mit!
WIP Website: kevinheese.de

93

23.02.2015, 07:05

Hallo Helmut, danke erstmal fürs organisieren Auswerten.

Kleinen Verbesserungsvorschlag hätte ich, die Tabelle wer gegen wen gespielt hat komplett zu füllen, so kann jeder Teilnehmer in einer einzigen Spalte/Zeile lesen wie die Ergebnisse waren. Aktuell muss man die Ergebnisse in seiner Zeile und seiner Spalte nachlesen (ausgenommen erster und letzter in der Tabelle).
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

94

23.02.2015, 08:46

Ha da habe ich ja ordentlich verkackt :D
Naja mein Ansatz war ja absichtlich so naiv, jetzt klaue ich mir alles zusammen :P

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

95

23.02.2015, 09:52

Tja, wie gesagt, ich finds eigentlich Scheisse. Man hat einen Arsch voll Rechenzeit und alle guten KIs benutzen daher den gleichen Brute Force Algorithmus und welche gewinnt haengt davon ab, wer in der erlaubten Rechenzeit mit ein paar Tricks und Optimierungen die meisten Iterationen hinbekommt. Ich habe ja extra 2 KIs mit unterschiedlichen Ansaetzen eingeschickt, leider gibt es keine absolute Messung der Zeit, aber die "schlechte" hat pro verbrauchte Rechenzeit vermutlich hundert mal mehr Punkte gemacht. Und der Witz ist, das man die schnelle immer noch als Heuristik in die langsame einsetzen kann, um die langsame besser zu machen.

96

23.02.2015, 11:37

Es wäre interessant diesen Tiefensuchen Algorithmus einmal zu verbieten. Oder noch strikter zu werden was Rechenzeit angeht. Ich werde mal was anderes ausporbieren auch wenn eine Brute Force Tiefensuche wahrscheinlich schwer zu schlagen ist

Ich kann den neuen Contest Code unter Ubuntu nicht mehr bauen.
Folgende Datei wird nicht gefunden:

C-/C++-Quelltext

1
#include "alt\KIs3.h"

woher soll diese Datei kommen ?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

97

23.02.2015, 12:45

@domin:
Sehe ich das richtig, dass deine KI davon ausgeht, dass es nur 36 verschiedene x-Positionen gibt, die man erreichen kann? Tatsächlich sind es ja doppelt so viele. Man bewegt sich zwar nur in Schritten von 250, aber wenn man einmal gegen das Netz läuft, kann man plötzlich andere x-Positionen erreichen (dafür die alten nicht mehr). Läuft man dann wieder gegen die "Außenwand", kann man wieder die ursprünglichen Positionen erreichen. Das liegt daran, dass das Netz die Bewegung nicht an einem ganzen Vielfachen von 250 stoppt. Keine Ahnung, ob Helmut das mit Absicht gemacht hat ... :)
Aber da gibt es noch ein paar Probleme. Manchmal springt deine KI wild drauf los, bevor der Ball im Spiel ist, und trifft ihn dann beim Anstoß so ungünstig, dass sie sich sofort ein Eigentor schießt. Vor allem bei zwei Bällen habe ich das oft beobachtet.
Meine KI macht gegen deine hin und wieder einen dummen Fehler, indem sie hochspringt und deine dann den Ball unter ihr durchschießt. Meine KI springt zu oft. Springen ist eigentlich schlecht, da man für die nächsten 33 Frames keinen Einfluss mehr auf die eigene y-Position hat.

auch wenn eine Brute Force Tiefensuche wahrscheinlich schwer zu schlagen ist

Das glaube ich nicht. Brute Force kommt schnell ans Limit und kann nicht besonders weit voraussehen. Oft werden triviale Lösungen übersehen. Ich glaube, dass Helmut da was ganz Cleveres entwickelt hat, so wie ich ihn kenne. Seine "Profi"-KI spielte ja auch schon ziemlich stark.

Mir schwebte da eine Suche vor, die nicht in Schritten von 1 rechnet, sondern immer so weit, bis es zum nächsten Ballkontakt oder Punkt kommen kann. Das sind oft so um die 30 Frames. Mit ein paar Tabellen kann man dann bestimmen, wohin sich die Spieler in dieser Zeit bewegt haben könnten, und sampelt diese möglichen Positionen. Dabei kann man diejenigen mit höherer Wahrscheinlichkeit samplen, die zu einem Ballkontakt führen. Das ist cleverer als einfach stupide eine Folge von Tastendrücken zu samplen, denn davon führen viele zur selben Situation (z.B. Links, Links, Springen führt zur selben Situation wie Springen, Links, Links - wenn es währenddessen nicht zum Ballkontakt kommt). Man reduziert dadurch den Suchraum und kann in der begrenzen Zeit mehr Züge untersuchen. Ich habe damit angefangen das zu implementieren, aber die Ergebnisse waren eher schlecht. Wahrscheinlich habe ich da noch einen Bug drin. Auch ist es da nicht so trivial, sich am Ende der Suche für den besten Zug zu entscheiden.

Was ich stattdessen umgesetzt habe, ist die Wiederverwendung des Suchbaums über mehrere Frames hinweg, so dass nicht alles neu berechnet werden muss. Und die Entscheidungen an den Knoten sind nicht rein zufällig, sondern gehen bevorzugt in die Richtung, wo vorher schon gute Züge gefunden wurden. Das ist angelehnt an Monte Carlo Tree Search (MCTS), eine sehr beliebte Technik für General Game Playing-KIs (KIs spielen Spiele, die sie vorher gar nicht kennen). Darum meinte ich auch, dass man bei so einem Contest sehr viel lernen kann, denn ich habe deswegen einige Paper über MCTS gelesen. Da muss man allerdings aufpassen: Der normale MCTS-Algorithmus ist für sequenzielle Spiele gedacht, wo die Spieler abwechselnd ziehen. Es gibt aber auch eine Variante für gleichzeitige Züge.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

98

23.02.2015, 16:00

Wäre eigentlich mal interessant was GAs und KNNs da anstellen würden. Vielleicht hat ja mal jemand Lust und Zeit da zu gucken:)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

99

23.02.2015, 16:21


Ich kann den neuen Contest Code unter Ubuntu nicht mehr bauen.
Folgende Datei wird nicht gefunden:

C-/C++-Quelltext

1
#include "alt\KIs3.h"

woher soll diese Datei kommen ?


Selbe Problem, wenn ich die Zeile Auskommentiere kommt die Konsole (egal ob Release oder Debug) aber kein Fenster geht auf.

Edit:

C-/C++-Quelltext

1
2
DoContestRound();
return;

die auch noch Auskommentieren dann gehts
Wer aufhört besser werden zu wollen hört auf gut zu sein!

aktuelles Projekt:Rickety Racquet

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

100

23.02.2015, 16:34

Wäre eigentlich mal interessant was GAs und KNNs da anstellen würden. Vielleicht hat ja mal jemand Lust und Zeit da zu gucken:)

Über neuronale Netze habe ich auch mal kurz nachgedacht, den Gedanken aber sehr schnell verworfen. Dem Spiel fehlt es an "Kontinuität": Wenn ich den Ball auch nur minimal anders treffe, kann das das Ergebnis fatal beeinflussen. Damit kommen neuronale Netze nicht klar. Dieses Spiel ist eher wie Schach (da ist mit neuronalen Netzen auch nichts zu gewinnen).

@Helmut:
Wann kommt die aktualisierte Auswertung? :)

Werbeanzeige

Ähnliche Themen