wake-up-neo.net

Wie trainiere ich ein künstliches neuronales Netzwerk, um Diablo 2 mit visuellen Eingaben zu spielen?

Ich versuche gerade, eine ANN zum Spielen eines Videospiels zu bewegen, und ich hatte gehofft, von der wunderbaren Community hier Hilfe zu bekommen.

Ich habe mich für Diablo 2 entschieden. Das Spiel läuft also in Echtzeit und isometrisch, wobei der Spieler einen einzelnen Avatar steuert, auf den sich die Kamera konzentriert.

Um die Dinge konkret zu machen, musst du die Erfahrungspunkte deines Charakters x erhalten, ohne dass die Gesundheit auf 0 sinkt, wo durch das Töten von Monstern Erfahrungspunkte gesammelt werden. Hier ist ein Beispiel für das Gameplay:

here

Nun, da ich möchte, dass das Netz nur auf der Grundlage der Informationen funktioniert, die es von den Pixeln auf dem Bildschirm erhält, muss es eine sehr umfangreiche Darstellung lernen, um effizient zu spielen, da dies vermutlich erfordern würde, dass es (zumindest implizit) weiß, wie Teile die Spielwelt in Objekte auf und wie man mit ihnen interagiert.

Und all diese Informationen müssen dem Netz beigebracht werden ... irgendwie. Ich kann mir nicht vorstellen, wie ich dieses Ding trainieren soll. Meine einzige Idee ist es, ein separates Programm zu haben, das etwas von Natur aus Gutes/Schlechtes im Spiel (z. B. Gesundheit, Gold, Erfahrung) visuell vom Bildschirm extrahiert und diese Statistik dann in einem Lernverfahren zur Verstärkung verwendet. Ich denke, das wird Teil der Antwort sein, aber ich denke nicht, dass es genug sein wird; Es gibt einfach zu viele Abstraktionsebenen von rohen visuellen Eingaben bis hin zu zielgerichtetem Verhalten, als dass ein derart begrenztes Feedback ein Netz in meinem Leben trainieren könnte.

Meine Frage: Wie können Sie ein Netz auf andere Weise trainieren, um zumindest einen Teil dieser Aufgabe zu erledigen? am liebsten ohne tausende von etikettierten beispielen zu machen ...

Nur für ein bisschen mehr Richtung: Ich suche nach anderen Quellen für das Lernen von Verstärkung und/oder nach unbeaufsichtigten Methoden zum Extrahieren nützlicher Informationen in dieser Umgebung. Oder einen überwachten Algorithmus, wenn Sie sich überlegen können, wie Sie beschriftete Daten aus einer Spielwelt herausholen können, ohne sie manuell beschriften zu müssen.

UPDATE (27.04.12):

Seltsamerweise arbeite ich immer noch daran und scheine Fortschritte zu machen. Das größte Geheimnis, um einen ANN-Controller zum Laufen zu bringen, ist die Verwendung der fortschrittlichsten ANN-Architekturen, die für die jeweilige Aufgabe geeignet sind. Daher habe ich ein Deep Believe Net verwendet, das aus faktorisierten bedingt eingeschränkten Boltzmann-Maschinen besteht und das ich zuvor unbeaufsichtigt trainiert habe (auf einem Video, in dem ich das Spiel spiele) Feinabstimmung mit zeitliche Differenz-Rückausbreitung (dh Verstärkungslernen mit Standard-Feedforward-ANNs).

Immer noch auf der Suche nach wertvolleren Informationen, insbesondere zum Problem der Aktionsauswahl in Echtzeit und zur Codierung von Farbbildern für die ANN-Verarbeitung: -)

UPDATE (21.10.15):

Ich erinnere mich, dass ich diese Frage damals gestellt habe und dachte, ich sollte erwähnen, dass dies keine verrückte Idee mehr ist. Seit meinem letzten Update hat DeepMind seine Art veröffentlicht Artikel darüber, wie man neuronale Netze dazu bringt, Atari-Spiele von visuellen Eingaben aus zu spielen . In der Tat ist das einzige, was mich daran hindert, ihre Architektur für das Spielen einer begrenzten Teilmenge von Diablo 2 zu verwenden, der fehlende Zugriff auf die zugrunde liegende Spiel-Engine. Das Rendern auf dem Bildschirm und das anschließende Weiterleiten an das Netzwerk ist viel zu langsam, um in angemessener Zeit trainiert zu werden. Aus diesem Grund werden wir wahrscheinlich bald keinen solchen Bot mehr sehen, der Diablo 2 spielt, sondern nur, weil er entweder Open Source oder mit API-Zugriff auf das Rendering-Ziel spielt. (Beben vielleicht?)

130
zergylord

Ich kann sehen, dass Sie sich Sorgen darüber machen, wie Sie das ANN trainieren sollen, aber dieses Projekt verbirgt eine Komplexität , die Sie möglicherweise nicht kennen. Objekt-/Zeichenerkennung bei Computerspielen durch Bildverarbeitung ist eine sehr herausfordernde Aufgabe (nicht sagen verrückt für FPS- und RPG-Spiele). Ich zweifle nicht an Ihren Fähigkeiten, und ich sage auch nicht, dass dies nicht möglich ist, aber Sie können problemlos zehnmal mehr Zeit mit dem Erkennen von Inhalten verbringen als mit der Implementierung des ANN selbst (vorausgesetzt, Sie haben bereits Erfahrung mit digitale Bildverarbeitung Techniken).

Ich finde Ihre Idee sehr interessant und auch sehr ehrgeizig . An dieser Stelle möchten Sie es vielleicht noch einmal überdenken. Ich habe das Gefühl, dass Sie dieses Projekt für die Universität planen. Wenn Sie sich also wirklich auf ANN konzentrieren, sollten Sie sich wahrscheinlich für ein anderes Spiel entscheiden, etwas Einfacheres.

Ich erinnere mich, dass jemand anderes vor nicht allzu langer Zeit nach Tipps für ein anderes, aber irgendwie ähnliches Projekt gesucht hat. Es lohnt sich, es auszuprobieren.

Andererseits gibt es möglicherweise bessere/einfachere Ansätze zum Identifizieren von Objekten im Spiel, wenn Sie Vorschläge annehmen. Nennen wir dieses Projekt zunächst das, was Sie möchten: einen Smart-Bot .

Eine Methode zur Implementierung von Bots greift auf den Speicher des Spieleclients zu relevante Informationen, wie die Position des Charakters auf dem Bildschirm und seine Gesundheit. Das Lesen des Computerspeichers ist trivial, aber genau herauszufinden, wo im Speicher gesucht werden muss, ist nicht sinnvoll. Speicherscanner wie Cheat Engine können dabei sehr hilfreich sein.

Eine andere Methode , die unter dem Spiel funktioniert, besteht darin, Renderinformationen zu manipulieren. Alle Objekte des Spiels müssen auf dem Bildschirm gerendert werden. Dies bedeutet, dass die Positionen aller 3D-Objekte schließlich zur Verarbeitung an die Grafikkarte gesendet werden. Seien Sie bereit für ernsthaftes Debuggen.

In dieser Antwort habe ich kurz 2 Methoden beschrieben, um durch Bildverarbeitung das zu erreichen, was Sie wollen. Wenn Sie sich für sie interessieren, finden Sie weitere Informationen in Exploiting Online Games (Kapitel 6), einem hervorragenden Buch zu diesem Thema.

51
karlphillip

UPDATE 2018-07-26: Das war's! Wir nähern uns jetzt dem Punkt, an dem diese Art von Spiel lösbar sein wird! Mit OpenAI und basierend auf dem Spiel DotA 2 könnte ein Team eine KI erstellen, die halbprofessionelle Spieler in einem 5-gegen-5-Spiel schlagen . Wenn Sie DotA 2 kennen, wissen Sie, dass dieses Spiel in Bezug auf die Mechanik sehr ähnlich zu Diablo-ähnlichen Spielen ist, aber man könnte argumentieren, dass es aufgrund des Teamspiels noch komplizierter ist.

Wie erwartet wurde dies dank der neuesten Fortschritte beim Vertiefungslernen mit Tiefenlernen und der Verwendung offener Spiel-Frameworks wie OpenAI erreicht, was die Entwicklung einer KI erleichtert, da Sie eine ordentliche API erhalten und das Spiel beschleunigen können (die KI wird gespielt) das entspricht 180 jahren gameplay gegen sich selbst jeden tag!).

Am 5. August 2018 (in 10 Tagen!) , es ist geplant, diese KI gegen Top-DotA 2-Spieler auszuspielen. Wenn dies klappt, erwarten Sie eine große Revolution, die vielleicht nicht so medial ist wie das Lösen des Go-Spiels, aber dennoch ein großer Meilenstein für die KI-Spiele sein wird!

UPDATE 2017-01: Das Feld bewegt sich seit dem Erfolg von AlphaGo sehr schnell, und es gibt neue Frameworks, die die Entwicklung von Algorithmen für maschinelles Lernen in nahezu allen Spielen erleichtern Monate. Hier ist eine Liste der neuesten, die ich gefunden habe:

  • OpenAI's Universe : Eine Plattform, um praktisch jedes Spiel mit maschinellem Lernen zu spielen . Die API befindet sich in Python und führt die Spiele hinter einer VNC-Remote-Desktop-Umgebung aus, sodass die Bilder aller Spiele erfasst werden können! Sie können Universe wahrscheinlich verwenden, um Diablo II mit einem Algorithmus für maschinelles Lernen zu spielen!
  • OpenAI's Gym : Ähnlich wie bei Universe, aber spezifisch auf Verstärkungslernalgorithmen ausgerichtet (es ist also eine Art Verallgemeinerung des von AlphaGo verwendeten Frameworks, aber für viel mehr Spiele). Es gibt einen Kurs über Udemy die Anwendung von maschinellem Lernen auf Spiele wie Breakout oder Doom mit OpenAI Gym.
  • TorchCraft : Eine Brücke zwischen Torch (Maschinelles Lernen) und StarCraft: Brood War.
  • pyGTA5 : ein Projekt zum Bau von selbstfahrenden Autos in GTA5 mit nur Screenshots (mit vielen Videos online ).

Sehr aufregende Zeiten!

WICHTIGE AKTUALISIERUNG (2016-06): Wie von OP festgestellt, wird dieses Problem des Trainings künstlicher Netzwerke zum Spielen nur mit visuellen Eingaben von mehreren Personen angegangen seriöse Institutionen mit vielversprechenden Ergebnissen wie DeepMind Deep-Qlearning-Network (DQN) .

Und jetzt, wenn Sie die nächste Herausforderung annehmen möchten, können Sie eine der verschiedenen AI-Vision-Spieleentwicklungsplattformen verwenden, wie zum Beispiel - ViZDoom , eine hochoptimierte Plattform (7000 fps) zum Trainieren von Netzwerken, um Doom mit nur visuellen Eingaben zu spielen:

ViZDoom ermöglicht die Entwicklung von KI-Bots, die Doom nur unter Verwendung der visuellen Informationen (des Bildschirmpuffers) spielen. Es ist in erster Linie für die Erforschung des maschinellen visuellen Lernens und insbesondere des vertieften Lernens gedacht. ViZDoom basiert auf ZDoom, um die Spielmechanik bereitzustellen.

Und die Ergebnisse sind erstaunlich, siehe die Videos auf ihrer Webseite und Nettes Tutorial (in Python) hier!

Es gibt auch ein ähnliches Projekt für Quake 3 Arena mit dem Namen Quagents , das auch einen einfachen API-Zugriff auf die zugrunde liegenden Spieldaten bietet. Sie können es jedoch verschrotten und nur Screenshots und die API verwenden, um Ihren Agenten zu steuern.

Warum ist eine solche Plattform nützlich, wenn wir nur Screenshots verwenden? Selbst wenn Sie nicht auf die zugrunde liegenden Spieldaten zugreifen, bietet eine solche Plattform Folgendes:

  • Hochleistungsimplementierung von Spielen (Sie können mit weniger Zeit mehr Daten/Spiele/Lerngenerationen generieren, so dass Ihre Lernalgorithmen schneller konvergieren können!).
  • eine einfache und ansprechende API zur Steuerung Ihrer Agenten (dh, wenn Sie versuchen, menschliche Eingaben zur Steuerung eines Spiels zu verwenden, können einige Ihrer Befehle verloren gehen, Sie würden sich also auch mit der Unzuverlässigkeit Ihrer Ausgaben befassen ...).
  • einfache Einrichtung von benutzerdefinierten Szenarien .
  • anpassbares Rendering (kann nützlich sein, um die Bilder zu "vereinfachen", um die Verarbeitung zu vereinfachen)
  • synchronisiertes ("turn-by-turn") Abspielen (damit Sie Ihren Algorithmus zunächst nicht in Echtzeit verwenden müssen, bedeutet dies eine enorme Reduzierung der Komplexität ).
  • zusätzliche Komfortfunktionen wie plattformübergreifende Kompatibilität, Retrokompatibilität (Sie riskieren nicht, dass Ihr Bot nicht mehr mit dem Spiel arbeitet, wenn es ein neues Spielupdate gibt) usw.

Zusammenfassend lässt sich sagen, dass diese Plattformen einen Großteil der früheren technischen Probleme , mit denen Sie zu tun hatten (wie man Spieleingaben manipuliert, wie), lindern Um Szenarien usw. einzurichten, müssen Sie sich nur mit dem Lernalgorithmus selbst befassen.

Also mach dich jetzt an die Arbeit und mach uns zum besten AI Visual Bot aller Zeiten;)


Alter Beitrag , der die technischen Probleme bei der Entwicklung einer KI beschreibt und sich nur auf visuelle Eingaben stützt:

Im Gegensatz zu einigen meiner oben genannten Kollegen halte ich dieses Problem nicht für unlösbar. Aber es ist sicher eine ganz harte Sache!

Das erste Problem, auf das oben hingewiesen wurde, ist das der Darstellung des Spielzustands : Sie können den vollständigen Zustand nicht mit nur einem einzigen Bild darstellen , müssen Sie eine Art Auswendiglernen pflegen (Gesundheit, aber auch ausgerüstete Objekte und Gegenstände, Quests und Ziele usw.). Um solche Informationen abzurufen, haben Sie zwei Möglichkeiten: entweder durch direkten Zugriff auf die Spieldaten, was am zuverlässigsten und einfachsten ist; Oder Sie können eine abstrakte Darstellung dieser Informationen erstellen, indem Sie einige einfache Verfahren implementieren (Inventar öffnen, Screenshot erstellen, Daten extrahieren). Natürlich müssen Sie beim Extrahieren von Daten aus einem Screenshot entweder eine überwachte Prozedur (die Sie vollständig definieren) oder eine unbeaufsichtigte Prozedur (über einen Algorithmus für maschinelles Lernen) ausführen, aber dann wird die Komplexität erheblich erhöht ...). Für unbeaufsichtigtes maschinelles Lernen müssen Sie eine relativ neue Art von Algorithmen verwenden, die als strukturelle Lernalgorithmen bezeichnet werden (die die Struktur von Daten lernen, anstatt sie zu klassifizieren oder einen Wert vorherzusagen). Ein solcher Algorithmus ist das Recursive Neural Network (nicht zu verwechseln mit Recurrent Neural Network) von Richard Socher: http://techtalks.tv/talks/54422/

Ein weiteres Problem ist, dass das Spiel, selbst wenn Sie alle benötigten Daten abgerufen haben, nur teilweise beobachtbar ist . Sie müssen also ein abstraktes Modell der Welt einfügen und es mit verarbeiteten Informationen aus dem Spiel versorgen, z. B. dem Standort Ihres Avatars, aber auch dem Standort von Questgegenständen, Zielen und Feinden außerhalb des Bildschirms. Vielleicht schauen Sie sich dazu die Mixture Particle Filter von Vermaak 2003 an.

Außerdem müssen Sie einen autonomen Agenten haben, mit dynamisch generierten Zielen . Eine bekannte Architektur, die Sie ausprobieren können, ist der BDI-Agent, aber Sie müssen ihn wahrscheinlich anpassen, damit diese Architektur in Ihrem praktischen Fall funktioniert. Als Alternative gibt es auch das rekursive Petri-Netz, das Sie wahrscheinlich mit allen Arten von Variationen der Petri-Netze kombinieren können, um das zu erreichen, was Sie wollen, da es ein sehr gut untersuchtes und flexibles Framework mit hervorragenden Formalisierungs- und Beweisverfahren ist.

Und schließlich, auch wenn Sie alle oben genannten Schritte ausführen, müssen Sie einen Weg finden, um das Spiel in beschleunigter Geschwindigkeit zu emulieren (möglicherweise mithilfe eines Videos) Schön, aber das Problem ist, dass Ihr Algorithmus nur unkontrolliert zuschaut und es für das Lernen sehr wichtig ist, es selbst zu versuchen. Es ist bekannt, dass der derzeitige Algorithmus nach dem neuesten Stand der Technik viel mehr Zeit benötigt, um dasselbe zu lernen, was ein Mensch lernen kann (umso mehr, wenn er verstärkt lernt). Wenn sich der Prozess also nicht beschleunigen lässt ( Das heißt, wenn Sie die Spielzeit nicht beschleunigen können, konvergiert Ihr Algorithmus nicht einmal in einem einzigen Leben ...

Abschließend ist festzuhalten, dass das, was Sie hier erreichen möchten, an der Grenze (und möglicherweise etwas darüber hinaus) der aktuellen Algorithmen liegt. Ich denke, es ist möglich, aber selbst wenn es so ist , werden Sie eine Menge Zeit damit verbringen , weil dies kein theoretisches Problem ist, sondern ein praktisches Problem , dem Sie sich hier nähern, und daher müssen Sie viele verschiedene KI-Ansätze implementieren und kombinieren um es zu lösen.

Mehrere Jahrzehnte Forschung mit einem ganzen Team, das daran arbeitet, würden möglicherweise nicht ausreichen. Wenn Sie also allein sind und in Teilzeit daran arbeiten (da Sie wahrscheinlich einen Job haben, der Ihren Lebensunterhalt verdient), können Sie ein ganzes Leben verbringen, ohne irgendwo in der Nähe zu sein eine funktionierende Lösung.

Mein wichtigster Ratschlag hier wäre also, dass Sie Ihre Erwartungen senken und versuchen, die Komplexität Ihres Problems zu verringern, indem Sie alle Informationen verwenden, die Sie können, und vermeiden Sie es, sich so weit wie möglich auf Screenshots zu verlassen (dh versuchen Sie, sich direkt in das Spiel einzumischen, suchen Sie nach DLL Injektion)) und vereinfachen Sie einige Probleme, indem Sie überwachte Prozeduren implementieren. Lassen Sie Ihren Algorithmus nicht lernen Alles (dh lassen Sie die Bildverarbeitung so weit wie möglich fallen und verlassen Sie sich auf interne Spielinformationen. Wenn Ihr Algorithmus später gut funktioniert, können Sie einige Teile Ihres AI-Programms durch Bildverarbeitung ersetzen und so beispielsweise Ihr volles Ziel erreichen Wenn Sie etwas zum Laufen bringen können, können Sie versuchen, Ihr Problem zu komplexisieren und überwachte Prozeduren und Gedächtnisspieldaten durch unbeaufsichtigte Algorithmen für maschinelles Lernen (siehe Screenshots) zu ersetzen.

Viel Glück, und wenn es funktioniert, veröffentlichen Sie unbedingt einen Artikel. Sie können sich sicherlich einen Namen machen, wenn Sie ein so schweres praktisches Problem lösen!

41
gaborous

Das Problem, das Sie verfolgen, ist unlösbar, wie Sie es definiert haben. Es ist normalerweise ein Fehler zu glauben, dass ein neuronales Netzwerk "auf magische Weise" eine umfassende Darstellung eines Problems erlernen würde. Eine gute Tatsache, die Sie berücksichtigen sollten, wenn Sie entscheiden, ob ANN das richtige Werkzeug für eine Aufgabe ist, ist, dass es sich um eine Interpolationsmethode handelt. Überlegen Sie, ob Sie Ihr Problem als Annäherung an eine Funktion definieren können, bei der Sie viele Punkte aus dieser Funktion und viel Zeit für den Entwurf und das Training des Netzwerks haben.

Das von Ihnen vorgeschlagene Problem besteht diesen Test nicht. Die Spielsteuerung ist keine Funktion des Bildes auf dem Bildschirm. Es gibt viele Informationen, die der Spieler im Gedächtnis behalten muss. Für ein einfaches Beispiel ist es oft richtig, dass der Bildschirm jedes Mal, wenn Sie einen Laden in einem Spiel betreten, gleich aussieht. Was Sie kaufen, hängt jedoch von den Umständen ab. Egal wie kompliziert das Netzwerk ist, wenn die Bildschirmpixel eingegeben werden, wird beim Betreten des Geschäfts immer dieselbe Aktion ausgeführt.

Außerdem gibt es das Problem der Skalierung. Die von Ihnen vorgeschlagene Aufgabe ist einfach zu kompliziert, um sie in angemessener Zeit zu erlernen. Sie sollten aigamedev.com sehen, wie die KI des Spiels funktioniert. Künstliche Neuronale Netze wurden in einigen Spielen erfolgreich eingesetzt, jedoch nur in sehr begrenztem Umfang. Die Entwicklung von Spiel-KI ist schwierig und oft teuer. Wenn es einen allgemeinen Ansatz für den Aufbau funktionaler neuronaler Netze gäbe, hätte die Branche diesen höchstwahrscheinlich genutzt. Ich empfehle Ihnen, mit sehr viel einfacheren Beispielen wie Tic-Tac-Toe zu beginnen.

26
Don Reba

Es scheint, als würde das Herz dieses Projekts untersuchen, was mit einem ANN möglich ist. Daher würde ich vorschlagen, ein Spiel auszuwählen, bei dem Sie sich nicht mit Bildverarbeitung befassen müssen (was nach den Antworten anderer hier wie ein wirklich zu sein scheint schwierige Aufgabe in einem Echtzeitspiel). Sie können die Starcraft-API verwenden, um Ihren Bot zu erstellen. Sie gibt Ihnen Zugriff auf alle relevanten Spielzustände.

http://code.google.com/p/bwapi/

17
tstramer

Angenommen, Sie könnten jederzeit eine Reihe von 'Ergebnissen' (die Wahrscheinlichkeiten beinhalten könnten) aus einer Reihe aller möglichen 'Züge' generieren und es gibt eine gewisse Vorstellung von Konsistenz im Spiel (z. B. können Sie Level X immer wieder spielen) wieder), könnten Sie mit N neuronalen Netzen mit zufälligen Gewichten beginnen und jedes von ihnen das Spiel auf folgende Weise spielen lassen:

1) Erstellen Sie für jede mögliche "Bewegung" eine Liste möglicher "Ergebnisse" (mit zugehörigen Wahrscheinlichkeiten). 2) Verwenden Sie für jedes Ergebnis Ihr neuronales Netzwerk, um einen zugehörigen "Wert" (Punktzahl) des "Ergebnisses" zu bestimmen (z. B. a Zahl zwischen -1 und 1, 1 ist das bestmögliche Ergebnis, -1 ist das schlechteste) 3) Wählen Sie den Zug, der zum höchsten Wahrscheinlichkeitswert führt * Punktzahl 4) Wenn der Zug zu einem Gewinn oder einer Niederlage geführt hat, stoppen, ansonsten zurück zu Schritt 1.

Bewerten Sie nach einer bestimmten Zeit (oder nach einem Gewinn/Verlust), wie nahe das neuronale Netzwerk am Ziel war (dies wird wahrscheinlich einige Domänenkenntnisse erfordern). Werfen Sie dann die 50% (oder einen anderen Prozentsatz) der NNs, die am weitesten vom Ziel entfernt waren, führen Sie eine Überkreuzung/Mutation der oberen 50% durch und führen Sie die neue Gruppe von NNs erneut aus. Laufen Sie weiter, bis ein zufriedenstellendes NN herauskommt.

1
tstramer

Ich denke, Ihre beste Wahl wäre eine komplexe Architektur, die einige/möglicherweise Netzwerke umfasst: eine, die Gegenstände erkennt und auf diese reagiert, eine für den Laden, eine für den Kampf (vielleicht benötigen Sie hier eine für die Erkennung von Feinden, eine für Angriffe) usw .

Versuchen Sie dann, sich das einfachste Diablo II-Gameplay vorzustellen, wahrscheinlich ein Barbar. Halten Sie es dann zunächst einfach, wie in Act I, nur im ersten Bereich.

Dann denke ich, dass wertvolle "Ziele" das Verschwinden von feindlichen Objekten und die Verringerung der Gesundheitsbarriere (umgekehrt erzielt) sind.

Sobald Sie diese separaten, 'einfacheren' Aufgaben erledigt haben, können Sie mit einem 'Master'-ANN entscheiden, welche Unter-ANN aktiviert werden soll.

Was das Training angeht, sehe ich nur drei Optionen: Sie könnten die oben beschriebene Evolutionsmethode verwenden, müssen dann aber die "Gewinner" manuell auswählen, es sei denn, Sie codieren ein ganz eigenes Programm dafür. Sie könnten die Netzwerke dazu bringen, jemanden beim Spielen zu beobachten. Hier lernen sie, einen Spieler oder eine Gruppe von Spielern zu emulieren. Das Netzwerk versucht, die nächste Aktion des Spielers vorherzusagen, wird verstärkt, um eine korrekte Schätzung zu erhalten usw. Wenn Sie tatsächlich die gewünschte ANN erhalten, kann dies mit dem Videospiel geschehen, ohne dass ein tatsächliches Live-Spiel erforderlich ist. Schließlich können Sie das Netzwerk das Spiel spielen lassen, indem Sie Todesfälle, Level-Ups, wiedererlangte Gesundheit usw. als positive Verstärkung und Todesfälle von Spielern, verlorene Gesundheit usw. als negative Verstärkung erhalten. Aber zu sehen, wie selbst ein einfaches Netzwerk Tausende von konkreten Schulungsschritten erfordert, um auch einfache Aufgaben zu erlernen, würde für diese eine Menge Geduld erfordern.

Alles in allem ist Ihr Projekt sehr ehrgeizig. Aber ich denke, es könnte "theoretisch gemacht werden", wenn genügend Zeit zur Verfügung steht.

Hoffe es hilft und viel Glück!

Als ersten Schritt können Sie den Unterschied zwischen aufeinanderfolgenden Bildern untersuchen. Sie müssen zwischen Hintergrund- und tatsächlichen Monster-Sprites unterscheiden. Ich denke, die Welt kann auch Animationen enthalten. Um diese zu finden, müsste ich die Figur bewegen und alles, was sich mit der Welt bewegt, in einem großen Hintergrundbild/Animation sammeln.

Sie können Feinde mit Korrelation erkennen und identifizieren (mithilfe von FFT). Wenn sich die Animationen jedoch pixelgenau wiederholen, ist es schneller, nur einige Pixelwerte zu betrachten. Ihre Hauptaufgabe besteht darin, ein robustes System zu schreiben, das erkennt, wann ein neues Objekt auf dem Bildschirm angezeigt wird, und nach und nach alle Frames des Sprite-Frames in eine Datenbank überträgt. Wahrscheinlich müssen Sie auch Modelle für Waffeneffekte bauen. Diese Dosen sollten abgezogen werden, damit Ihre Gegner-Datenbank nicht überladen wird.

1
whoplisp