# Neuronale Netze und Spiele



## TheBohne (11. Jan 2017)

Hey ihr,
Ich spiele im Moment mit neuronalen Netzen und evolutionären Algorithmen herum. Nun gibt es im Internet zahlreiche Videos wie Mario lernt, seine Level zu bewältigen. Jetzt würde ich das Ganze natürlich selber gerne einmal programmieren und testen. Meine Frage an euch:
Wie erhalte ich das Spielfeld als Imputvariable für das neuronale Netz? 
Am schönsten wäre es selbstverständlich über Bilderkennung das Spielfeld jede x Sekunden auszulesen und zu interpretieren. Jedoch stelle ich mir dies sehr kompliziert und rechenaufwändig vor. Vorteilhaft wäre es dann jedoch, dass ich die geschriebene Software auf viele weitere Spiele anwenden könnte ohne groß etwas umzuändern. 
Eine weitere Möglichkeit wäre, das neuronale Netz direkt in das Spiel einzubinden, bzw das Spiel selber zu programmieren und die Mapinformationen direkt an das neuronale Netz zu übergeben. Hierdurch hätte ich eine wesentlich höhere Performance, da ich das Spielfeld ja nicht noch einmal interpretieren muss.
Beide Möglichkeiten scheinen mir dennoch sehr programmieraufwänding. Gibt es eine andere Möglichkeit das schneller und einfacher zu lösen?
Vielen Dank schon einmal für eure Antworten.


----------



## JuKu (12. Jan 2017)

Bilderkennung braucht einige Jahre an Entwicklungszeit, da forschen große Unternehmen wie Facebook schon ewig dran.
Du solltest die Map direkt übergeben, bei einem Super Mario könnte dies z.B. ein 2D Array sein, die Enemys sind allerdings nicht im Raster --> müsstest du extra übergeben.
Das Spielfeld bleibt bei Super Mario immer gleich, lediglich der Scroll Offset ändert sich.
Demzufolge müsstest du die KI direkt ins Spiel einbinden.

Könntest du die Videos ma hier rein posten?
Würde mich auch mal interessieren.


----------



## TheBohne (12. Jan 2017)

Danke für die Antwort.
Hier das Video:





Könnte mir nur vorstellen dass diese Spiele Reverse Engineered wurde. Und dann die KI implementiert.


----------



## JCODA (12. Jan 2017)

Das gepostete Video ist von SethBling, er sagt selbst am Ende, dass er es für einen Emulator programmiert hat. (Sogar in der Videobeschreibung verlinkt: http://pastebin.com/ZZmSNaHX)
Ich habe dieses Video damals als "Motivation" verwendet, mit einem Kommilitonen https://github.com/Daarknes/Gadakeco/ zu implementieren. Wir haben ein simples Jump&Run implementiert und dann den von SethBling benutzen Algorithmus: Neuroevolution of Augmenting Topologies. http://nn.cs.utexas.edu/downloads/papers/stanley.ec02.pdf

Wir haben bei unserem Spiel letztendlich die sichtbaren Dinge in eine diskrete Map geschrieben, d.h. wir hatten ja automatisch Zugriff auf interne Daten.


----------



## TheBohne (12. Jan 2017)

Ah ja da hätte ich auch Mal reinschauen können . Bedeutet also es gibt keinen "geheimen" drick ohne großen Aufwand an genau Spieledaten zu kommen ohne es selber zu entwickeln bzw Reverse Engineering


----------

