HearthClone Entwicklung HearthClone - die Gegner-KI
HearthClone - die Gegner-KI 16.04.2018 - 10:47 2
Folgenden Nutzern gefällt das Design: damios, anti-freak

Nun ist es soweit - die KI wird eingebaut!

Hier möchte ich den Verlauf für die Interessierten von euch ausführen.

Und es soll eine Einladung zur Diskussion sein...

 

Wie an anderer Stelle bereits erwähnt, verwende ich ein Neuronales Netzwerk mit finiten Kombinationen (es existieren also nur jene Verbindungen, die auch spielbar sind [Münze auf Münze ist z.B: nicht spielbar])

Zudem ergeben sich vorbestimmte Reihenfolgen oder parallele Spielzüge:

- eine Handkarte muss erst ausgespielt werden (und führt dann ggfls. eine Heldenfunktion aus)
- die Reihenfolge von zusätzlichen Waffen/Rüstungen/Münzen vor der Verwendung einer Karte/Basis spielen eine Rolle (Kostenermittlung) können aber beliebig kombiniert werden

 

Hier ist mal der Entwurf für das Netzwerk:  KIbaum.svg

Er ist bzgl. der (Multinomialkoeffizienten) Permutation aller relevanten Objekte (Karten/Zusätze) reduziert.
Man stelle sich diesen Baum also an den entsprechenden Verzweigungen ver-N-facht vor, abhängig von der im Spiel (oder dem Inventar) befindlichen Objekte.

Hier werde ich Rekursionen über alle relevanten Objekte verwenden.

Am Ende jedes Zweiges befindet sich dann die entsprechende Bewertungsfunktion (für die GUV*1 der beiden 'kämpfenden' Objekte

Das Neuronale Netzt ist also RIESIG.

Die Gefahr besteht, dass bei maximalen Ausprägung ein Laufzeitproblem entsteht.
Um das zu verhindern, werde ich eine Abbruchtiefe hinzufügen, um ggfls nicht alle Verbindungen zu bewerten.

Jeder Zweig wird mit einer GUV beendet und daraus eine Gewichtung für die Backpropagation (rückgerichtete Knotengewichtung) ermittelt, welcher jeden Zweig für die Angriffs- oder Verteidigungsstrategie priorisiert oder dämpft.

Im Gegensatz zur Ansatz mit einem Minmax-Algorithmus muss ich mir so nicht für jeden Spielzug die Endwerte zu jeder Karte merken, denn....

Wenn alle Zugfolgen bewertet sind, findet das NN dann die optimale Karte selbständig, über die Gewichtungen - für EINE OPTIMALE AKTION (Karte oder Basis).

Dies wird dann solange wiederholt, bis keine sinnvolle Aktion mehr verbleibt und der Spielzug beendet wird.

Damit jeder Stamm eine individuelle Prägung bekommt (und somit in den Kämpfen unterschiedliche Strategien entstehen) werde ich die Gewichtungsfunktionen je Stamm individuell gewichten (manch ein Stamm wird agressiver sein als andere und/oder z.B: auch Basisangriffe vor Kartenangriffen bevorzugen, ...)

 

*1) GUV = Gewinn- und Verlustrechnung - was kostet ein Angriff und welchen Erfolg(Schaden) bringt er?

 

 


Aktualisiert: 16.04.2018 - 10:47
Grund:
16.04.2018 - 21:44
Byte
In den letzten 60 min online
Byte
Rang 4

Projekte: 1
Designs: 3
Blogs: 1
Aktivität:
Sehr aktiv
Byte
In den letzten 60 min online
Byte
Rang 4

Projekte: 1
Designs: 3
Blogs: 1
Aktivität:
Sehr aktiv

Wow! Das ist ne Nummer zu hoch für mich. Das Einzige was ich noch behalten hab. Rekursiv geht schief! :D Aber ich denke Du hast das im Griff. ;)

 


17.04.2018 - 06:44
Ersteller
mercuryus
In den letzten 60 min online
mercuryus
Rang 11

Projekte: 7
Designs: 12
Blogs: 9
Aktivität:
Sehr aktiv
Ersteller
mercuryus
In den letzten 60 min online
mercuryus
Rang 11

Projekte: 7
Designs: 12
Blogs: 9
Aktivität:
Sehr aktiv

Das ist nicht so schwer, wenn man 'drin steckt'

Ziel ist es ja, einen würdigen KI-Gegner zu haben und aufgrund der zahlreichen Kombinationsmöglichkeiten des Spiels, ist es etwas 'kompliziert'.
Beim Durchdenken bewundere ich immer wieder das menschliche Gehirn, das solche Aufgaben (zwar fuzzi, aber) in wenigen Sekunden auflösen kann.
Und das ab dem Zeitpunkt, ab dem die Regeln klar sind - aprospos: ich muss auch noch die Hilfe schreiben .

Rekursiv geht schief! ? - Rekursion ist nur einen Schleife mit Abbruchbedingung - meist halt mit mehr als nur einer Variablen.

Bei dieser KI ist die Herausforderung, dass durch die Rekursion die Gewichte einer ganzen Gruppe von Objekten eingestellt werden - ich hoffe, dass dies zu schlüssigen Ergebnissen führt. Vom Design her, sollte es das.


17.04.2018 - 19:37
Byte
In den letzten 60 min online
Byte
Rang 4

Projekte: 1
Designs: 3
Blogs: 1
Aktivität:
Sehr aktiv
Byte
In den letzten 60 min online
Byte
Rang 4

Projekte: 1
Designs: 3
Blogs: 1
Aktivität:
Sehr aktiv

Im Grunde spielt man nicht nur gegen die KI sondern auch gegen den, der die KI kreiert hat. Und, wenn die KI steht kannst Du sie auch gegen sich selbst spielen lassen. Nur wer gewinnt dann eigentlich? Die KI oder der Schöpfer der KI? Wahrscheinlich der mit den besten Karten. :D


17.04.2018 - 22:35
Ersteller
mercuryus
In den letzten 60 min online
mercuryus
Rang 11

Projekte: 7
Designs: 12
Blogs: 9
Aktivität:
Sehr aktiv
Ersteller
mercuryus
In den letzten 60 min online
mercuryus
Rang 11

Projekte: 7
Designs: 12
Blogs: 9
Aktivität:
Sehr aktiv

sehr philosophisch - mag ich.

Aber KI gegen KI wird eine wichtige Rolle beim Balancing spielen!
Ich werde auch die KI's gegeneinander kämpfen lassen, um besonders die Stammesgewichte und die Kartenverteileung/-Werte auszubalancieren.
Und natürlich, die KI selbst zu testen...

Soll ich evtl. den 'Zuschauer-Modus' als Option im Menü anbieten?