Neu bei der Erstellung von KI - wo soll ich anfangen? [geschlossen]


58

Ich bin neu in der Spielprogrammierung und versuche, ein einfaches 2D-Top-Down-Weltraumspiel mit 2 Raumschiffen zu erstellen, die sich gegenseitig bekämpfen. Mir geht es gut mit dem benutzergesteuerten Raumschiff, aber ich habe keine Ahnung, wie ich überhaupt anfangen soll, eine KI zu programmieren. Sind bestimmte Methoden / Muster für diese Situation besser? Wo würde ich überhaupt anfangen?


1
Hier sind meine Folien zur KI aus dem Kurs, den ich gemacht habe: sol.gfxile.net/gpc/05ai.pdf
Jari Komppa

4
if-Anweisungen. viele von ihnen.
verzögert

Antworten:



27

Wenn Sie AI zum ersten Mal entwickeln, müssen Sie sich nicht um Zustandsmuster, Verhaltensmathematik oder gar ein Buch über dieses Thema kümmern.

Sie können buchstäblich mit so etwas davonkommen:

if( targetInRange == true )  
{
    FireAtTarget();
}
else if( bulletComingTowardsMe == true )
{
    MoveAwayFromBullet();
}
else
{
    WanderAroundAimlessly();
}

Der Hauptaspekt der KI-Korrektheit besteht darin, darüber nachzudenken, welche Verhaltensweisen der Charakter haben soll und wie dies realistisch erreicht werden kann. Für einen einfachen Raumschiff-Feind wäre es also denkbar, folgende Aktionen auszuführen:

  • Herumbewegen
  • Feuer
  • Weglaufen

Und wann könnten diese Aktionen stattfinden?

  • Bewegen Sie sich - sonst nichts zu tun
  • Feuer - Wenn ich einen Feind sehe
  • Lauf weg - Wenn mir die Gesundheit ausgeht / Wenn ich Feuer nehme / etc

Nachdem Sie dies aufgrund der geringen Anzahl von "Zuständen" getan haben, in denen sich Ihr Charakter befinden kann, können Sie eine einfache if-Anweisung wie die obige verwenden. Ich würde Ihnen dann empfehlen, sich Lenkverhalten anzuschauen, da dies sehr einfach zu implementierende Verhaltensweisen sind, die zu einer wirklich gut aussehenden Bewegung führen können.

Mehr finden Sie hier: http://www.red3d.com/cwr/steer/
Und ich würde Mat Bucklands Buch Programming Game AI By Example auf jeden Fall empfehlen , besonders wenn Sie anfangen.

Wenn Sie mit diesen wirklich vertraut sind, würde ich vorschlagen, dass Sie sich die Zustands- und Strategiemuster ansehen.

Es geht darum, klein und einfach anzufangen. Machen Sie sich keine Sorgen über all diese Begriffe, die jeder ständig über FSMs und Designmuster und so weiter austauscht. Entwerfen und erstellen Sie zunächst, bevor Sie sich Gedanken darüber machen, wie Sie diese mithilfe vorhandener Methoden oder Standards verbessern können.

Ich hoffe, das hilft!


@ Fuu Cheers für die bearbeiten Kumpel :)
Ray Dey

9

Vielleicht möchten Sie sich OpenSteer und die dazugehörige Dokumentation zu Steering Behaviours ansehen . Der Quellcode ist kein Anfänger, aber die Konzepte dahinter sollten Ihnen einige gute Ideen geben.


Verwenden die Leute OpenSteer in Spielen oder eher für Simulationen?
5.

Ich versuche zumindest, es in einem Spiel zu verwenden, das sich in der Entwicklung befindet. Es funktioniert soweit gut für mich. Ich glaube, der Autor hat viel davon entwickelt, als er für die Playstation-Gruppe bei Sony gearbeitet hat - wahrscheinlich hat es das zu einigen Spielen gemacht. MobyGames listet ihn im Abspann von John Madden Football und einem der Leisure Suit Larry-Spiele auf.
AShelly

FreeOrion verwendet OpenSteer in seiner taktischen Kampfmaschine.
Mike Strobel

1
+1 Um opensteer zu erwähnen. Wenn Sie einige großartige Beispiele dafür sehen möchten, wie man sehr einfache Verhaltensweisen zu etwas zusammensetzt, das sehr komplex und kompliziert aussieht. Steuerverhalten an der Kasse! Google, "Boids" und schauen sich einige coole Verwendungen an. Es ist nicht ruhig, was Sie wollen, aber es wird Ihnen zeigen, dass aus Einfachheit Komplexität entsteht
Tages wird es den

9

Vielleicht möchten Sie sich das Strategie-Entwurfsmuster ansehen . Schreiben Sie im Wesentlichen dieselben grundlegenden Strategien für das Verhalten der Schiffe auf:

  • Gehen Sie näher an das Ziel heran
  • Ziel angreifen
  • Vom Ziel weglaufen
  • Bewegen Sie sich in Richtung Power-Ups
  • Verwenden Sie Power-Ups

Dann verwenden Sie Logik (Zustandsautomaten), um zwischen diesen Strategien zu wählen. Zum Beispiel: Wenn die Schilde des Schiffes unter 50% gefallen sind, laufen Sie vom Ziel weg und bewegen Sie sich in Richtung Power-Ups / Heilgegenstände und so weiter.


1
Jedes Mal, wenn die Spielschleife durchlaufen wird, entscheidet es, welche dieser "Strategien" Priorität hat und führt diese dann aus.
4.

@jle So ziemlich. So wird jede Ihrer Strategien in ihre eigenen Klassen unterteilt, wodurch Ihr Code organisiert bleibt.
Bryan Denny

7

Darf ich vorschlagen, dass Sie das Buch Artificial Intelligence for Games von Ian Millington kaufen - es ist ausgezeichnet! :) http://www.ai4g.com/

Der Quellcode ist bei Github - MIT lizenziert.

Wenn Sie C / C ++ nicht verwenden, ist dies möglicherweise weniger relevant.

Aber wirklich eine großartige Einführung in die Welt der künstlichen Dummheit / Intelligenz.

Dinge, die Sie brauchen, sind Lenk- und Zustandsautomaten. Für Starter.


2

Einige praktische Ratschläge, wenn Sie sich für State Machines entscheiden: Achten Sie auf den Megastate.

Es ist verlockend, einen "Flucht" -Zustand zu haben, der das Festlegen einer Position, in die geflüchtet werden soll, das Festlegen einer hohen Zielgeschwindigkeit, das Löschen aller Ziele usw. regelt Zustandsmaschine, die die Auswahl einer Zielposition handhabt, eine, die Waffen handhabt, usw.

Dies mag dumm erscheinen, da Sie jedem einzelnen Computer einen Fluchtstatus hinzufügen müssten, aber da Sie nur auf einen oder zwei Ausgänge beschränkt sind, sind Ihre Status sehr klein, sodass dies kein Problem sein sollte.

Da jetzt jede Steuerung individuell gesteuert wird, können Sie am Ende eine Fluchtzielposition auswählen, während der Angriffsstatus weiterhin Ihre Waffen steuert. Sie können einen Feind straffen, während Sie gleichzeitig die Motorleistung aufgrund eines Kühlmittellecks erhalten. Sie können steuern, um eine Kollision zu vermeiden, während Sie gleichzeitig Gegenmaßnahmen ergreifen. All dies wäre mit einer einzigen umfassenden Zustandsmaschine unmöglich.


2

Verhaltensmathematik für Spiel-KI

Hinzufügen dieses Buches zur Liste der Ausgangspunkte für das Erlernen der AI-Programmierung. Ich bin der Meinung, dass der Fokus eher auf Beobachtung und Verhaltensimplementierung als auf Algorithmen mit begrenzter Anwendung liegt, und dass er für die Aufgabe gut geeignet ist.


1

Wie man eine KI erstellt, ist eine schwierige Frage, da sie aus vielen Teilen besteht:

  • Sie wählen eine allgemeine Architektur / ein Paradigma für Ihre KI. Basiert es auf Skripten? Wird es Planung verwenden? Ist es ein einfaches FSM oder bevorzugen Sie BTs?
  • Anschließend wenden Sie diese Paradigmen mit einer bestimmten Implementierung / einem bestimmten Satz von Tools an.
  • Jetzt haben Sie die Wahl zwischen Spieldesign und Verhalten, die Ihre Architektur verwenden wird.

Andere Plakate schlugen großartige Bücher vor und ich mag AI4Games, die von jacmoe vorgeschlagen wurden, obwohl es in Teilen recht allgemein gehalten ist (wie viele Bücher, was natürlich verständlich ist).

Natürlich hat jede Art von Spiel ihre spezifischen Bedürfnisse, und Arcade- / Shooter-Spiele benötigen keine komplexen Architekturen, um ein interessantes Gameplay zu unterstützen. Einfache Steuerbibliotheken erledigen die Aufgabe als Grundlage für dieses Verhalten. Anschließend fügen Sie Details für verschiedene Arten von Feinden hinzu (einige schießen in regelmäßigen Abständen, einige prognostizieren die Bewegung des Spielers, einige drehen sich, um sich dem Feind zu stellen, andere koordinieren ihre Angriffe etc).

  • Ich denke, der beste Weg, um etwas über das Game (AI) -Coding zu lernen, ist es, guten, laufenden Code anzuschauen. Also, erkunden Sie ohloh.net und github und suchen Sie nach bestehenden FOSS-Projekten!
  • Natürlich können Sie den schwierigen Teil auswählen und ein vorhandenes (aber einfaches) Spiel spielen. Versuchen Sie, das Verhalten umzukehren, und überlegen Sie, wie ich dies gestalten würde. Natürlich helfen Hinweise immer, und deshalb haben Sie wahrscheinlich hier bei gamedev.SE gefragt!
  • Etwas dazwischen ist auch ein Blick auf bestehende Shooter-Spiele in den GameMaker-Foren! Sie können viele einfache Skripte finden, die den Trick machen! ;)

1

Überlegen Sie, was Sie tun, wenn Sie das Spiel spielen. Stellen Sie sich einige Fragen.

  • Welche Informationen kann ich muß in der Lage sein , um eine Entscheidung zu treffen?
  • Wann reagiere ich auf Änderungen?
  • Was sind meine "langfristigen" Ziele in dieser bestimmten Spielsitzung?

Dann lasse ich die KI auf das Spielfeld schauen und mache eine Liste möglicher Aktionen oder Bewegungen, die die KI basierend auf diesen Fragen ausführen könnte. Ich ordne und sortiere diese Züge mit einem "Schlauheitsfaktor". Dann ist es so einfach wie eine Bewegung / Aktion auszuwählen und auszuführen, die auf einer Kombination aus Zufälligkeit und dem Schwierigkeitsgrad basiert, den der Spieler zu Beginn des Spiels gewählt hat.

Dann, nach 500 Millisekunden, mache ich es noch einmal.

Es hat keine Lernfähigkeiten oder ähnliches, aber mit genügend Optimierungen kann es ziemlich überzeugend sein, worauf es wirklich ankommt

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.