Kriegsalter-AI
Age of War AI, ein Projekt, für das ich eine abscheuliche Zeit verbracht habe, die zu einem massiven Spagheti -Code wurde. Es war mein erstes großes Projekt und es zeigte mir, wie viel mehr ich lernen musste, weil mir in allen Bereichen fehlte (und ich es immer noch am wahrscheinlichsten tue). Im Kontext dieses Projekts habe ich Folgendes gemacht:
Wie man kein Projekt macht
- Holen Sie sich das Vanilla Age of War -Spiel, machen Sie ein Modul, das Daten über die OpenCV -Bibliothek extrahiert, während das Spiel weitergeht, und füttert es in den ordentlichen Algorithmus. Was ich nicht wusste, ist, dass die Bewertung von 30 bis 50 Agenten in einem Spiel, das nicht beschleunigt ist, und die durchschnittliche Spielzeit von 10 Minuten pro Sitzung dauert, ist wirklich viel Zeit, um zu trainieren, und es lieferte keine wesentlichen Ergebnisse
- Holen Sie sich Cheat Engine, stellen Sie fest, dass es nicht mit diesem speziellen Spiel funktioniert, für wer weiß welchen Grund weiß, dann einen Dekompiler für Flash -Spiele und injizieren Sie ein Skript in das Spiel, das Textdateien hervorbringt, um das gesamte OpenCV -Ding für das Erhalten von Werten zu umgehen. Ich habe etwas bessere Ergebnisse erzielt, da ich es geschafft habe, das Spiel X2 mit Cheat Engine zu beschleunigen, aber es fehlte immer noch viel.
- Mach die Einheit in Gang. Da ich bereits einen Weg in den Spielcode gefunden habe, entwickelte ich alle IT -Mechaniken um und machte eine ziemlich treue Simulation in der Einheit, die genau die gleichen Parameter wie das ursprüngliche Spiel hatte.
- Simulieren Sie 50 Umgebungen in Einheit mit 10 -facher Geschwindigkeit und lassen Sie sie über TCP mit meinem Python -Skript kommunizieren, das jetzt einen Gott -ordentlichen Manager für all diese Umgebungen und ihre jeweiligen Handlungen hatte. Hier habe ich tatsächlich einige bedeutende Ergebnisse und Strategien gesehen, die im normalen Modus yay entwickeln und gewonnen haben. Aber ich wollte Moe
- Wechseln Sie vollständig auf Unity ML -Agenten, die im Wesentlichen das Python -Skript, den Zug und den Agenten mit PPO aufgeben und nach unzähligen Schaltparametern und seinen Funktionen eine ziemlich gute Strategie haben, die das Spiel im Hard -Modus gewinnt
- Testen Sie es im ursprünglichen Spiel und verzeichnen Sie den Gewinn und stellen Sie fest, dass Sie 2 Monate bei einem Projekt verloren haben, das in weniger als 3 Wochen hätte abgeschlossen sein können
- Machen Sie immer noch eine Visualisierungsbibliothek für ordentlich mit dem mathematischen Engine Manim, da ich einige coole YouTube -Videos zu dem Thema gefunden habe, das ihre Repositories nicht veröffentlichte
Sie können den Überblick über diesen Schmerz hier sehen - ich werde zu 100% in diesen Kanal zurückkehren, um ihn auf mindestens 1 m zu bringen, aber im Moment habe ich andere Ziele zu verfolgen.
Laufen auf Python 3.7.9
Eingänge:
- Anzahl der Truppen im Training (1 Eingabe)
- Feind HP - Prozent der Gesamtgesundheit (1 Input)
- Mein HP - Prozent der Gesamtgesundheit (1 Input)
- Geld - normalisiert durch grundlegende Einheitenkosten (Geld/cost_of_basic_unit) (1 Eingabe)
- XP - kann das Alter aufrüsten oder nicht (1 Eingabe)
- Kann die Fähigkeit aktivieren - 0 bis 1 Abklingzeit (1 Eingang)
- Meine Truppen am Boden vom Typ 1, 2, 3, 4 (4 Eingänge)
- Feindtruppen auf dem Boden vom Typ 1, 2, 3, 4 (4 Eingänge)
- Anzahl der verfügbaren Kanonensteckplätze (1 Eingang)
- Spieler Alter - Ein heißer Codiert (5 Eingänge)
- Feindes Alter - Ein heißer Codiert (5 Eingänge)
- Array mit Türmen und Türmen Alter (max. 4) (1 Eingabe für Typ, da sie zunehmend stärker sind und 1 Eingabe für die Altersabwertung) (2 für jeden Steckplatz) (8 Eingänge)
- Wo findet der aktuelle Kampf statt (0-1 Ihre Basis zur feindlichen Basis) (1 Eingabe)
Ausgänge:
- Erstellen Sie Truppen Tier 1, 2, 3 (3 Aktionen)
- Erstellen Sie Truppen Tier 4 für das Weltraumalter (1 Aktion)
- Kaufen Sie Kanonenschlitz (1 Aktion)
- Kaufen Sie Cannon Tier 1, 2, 3, erster verfügbarer Steckplatz (3 Aktionen)
- Verkaufen Sie Kanonen auf einem bestimmten Slot (4 Aktionen)
- Warten Sie (1 Aktionen)
- Fähigkeit verwenden
Abhängigkeiten:
- Numpy
- Paddel -OCR
- Open-CV
- Scipy
- ordentlicher Python
pip install numpy paddlepaddle paddleocr opencv-python scipy neat-python
Die Vermögenswerte funktionieren nur für die spezifische Auflösung, wenn Sie die Spieleschließung ändern möchten. Sie müssen die Vermögensgröße entsprechend ändern (z. B. das Spiel und das Vermögen x% kleiner).
Sie können das Archiv herunterladen, das ich für das Spiel von hier verwendet habe