Ich entwickle eine KI für ein Strategiespiel (denken Sie an Final Fantasy Tactics) und habe Probleme, das Design der KI zu entwickeln. Mein Hauptproblem besteht darin, herauszufinden, welches das optimale ist.
Lassen Sie mich zunächst die Priorität der Maßnahmen beschreiben, die die KI ergreifen soll:
Töte die nächste Spielereinheit
Erfülle die primäre Anweisung (töte alle Spielereinheiten, töte die Zieleinheit, überlebe x Runden)
- Verbündete Einheit / Zauberpuffer heilen
Jetzt kann die KI ihrerseits Folgendes tun:
Bewegen -> {Angriff / Fähigkeit / Gegenstand} (entweder Angriff oder Fähigkeit oder Gegenstand)
{Angriff / Fähigkeit / Gegenstand} -> Bewegen
Gehen Sie näher heran (wenn sich die Ziele nicht in Reichweite befinden)
- {Angriff / Fähigkeit / Gegenstand} (falls kein Zug verfügbar ist)
Anmerkungen
Fähigkeiten haben verschiedene Bereiche / Effekte / Kosten / Effekte. Jede ai-Einheit hat vielleicht 5-10 Fähigkeiten zur Auswahl. Die KI wird das Töten der Sicherheit vorziehen, es sei denn, ihre Anweisung lautet, x Runden zu überleben. Es ist auch nicht wichtig, dass Fähigkeiten viel kosten. Während ein Spieler einen großen Zauber für später speichern möchte, wird die KI ihn höchstwahrscheinlich so schnell wie möglich verwenden.
Die Bewegung erfolgt auf einem (hexadezimalen) Gitter
Anzahl der Spielereinheiten: 3-6
Anzahl der ai-Einheiten: 3-7 oder mehr. Wahrscheinlich max 10.
KI und Spieler steuern abwechselnd EINE Einheit, anstatt alle gleichzeitig.
Die Plattform ist Android (wenn das Programm nach einiger Zeit nicht reagiert, wird ein Popup mit der Aufschrift "Beenden oder Warten erzwingen" angezeigt - was wirklich schlecht aussieht!).
Nun kommen die Fragen:
Die beste Fähigkeit wäre offensichtlich die, die die meisten Ziele mit dem größten Schaden trifft. Da jede Fähigkeit unterschiedliche Reichweiten hat, weiß ich nicht, ob sie sich in Reichweite befinden, ohne jeden möglichen Ort zu erkunden, an den ich mich bewegen kann.
Eine Lösung wäre, alle möglichen Orte zu durchlaufen, an die man sich bewegen kann, um den optimalen Angriff an diesem Ort zu bestimmen - was mir eine Liste der optimalen Bewegungen für jeden Ort gibt. Wählen Sie dann das Optimum aus der Liste aus und führen Sie es aus. Dies wird jedoch viel CPU-Zeit in Anspruch nehmen. Gibt es eine bessere Lösung?
Meine derzeitige Idee ist es, so nah wie möglich an die nächste, größte Gruppe von Menschen heranzukommen und von dort aus den optimalen Angriff / die optimale Fähigkeit zu bestimmen. Ich denke, dies wäre viel weniger Arbeit für die CPU und würde dennoch weitreichende Angriffe ermöglichen. Es ist nicht optimal, aber die KI wird immer noch "klug" erscheinen.
Sonstige Hinweise / Fragen:
- Überdenke / kompliziere ich es? Bessere Lösung? Ich bin offen für alle möglichen Vorschläge
- Ich habe mir die Zauberfrage angesehen , aber sie berücksichtigt nicht die Bewegung. Verwenden Sie diesen Algo also vielleicht für jeden möglichen Bewegungsort? In der Top-Antwort wurde erwähnt, dass es nicht gut für Wirkungsbereiche und Gruppenkämpfe geeignet ist - erfordert es also möglicherweise weitere Anpassungen?
- Bitte , wenn Sie eine Grafik / Baum erwähnen, lassen Sie mich wissen im Grunde , wie es zu benutzen. ZB bedeutet Knoten Fähigkeit, Stufe entspricht Schaden, dann suchen Sie nach dem tiefsten Knoten.