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?
58
Antworten:
Das Strategiemuster eignet sich hervorragend, um zu bestimmen, was zu tun ist, aber nicht, wann dies zu tun ist. Sie müssen auch Zustandsautomaten verwenden, um festzustellen, in welchem Zustand sich Ihre KI befindet und welche geeigneten Entscheidungen verfügbar sind.
Ein praktischer Leitfaden zum Erstellen einer vollständigen Spiel-KI: Band I
quelle
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:
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:
Und wann könnten diese Aktionen stattfinden?
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!
quelle
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.
quelle
Vielleicht möchten Sie sich das Strategie-Entwurfsmuster ansehen . Schreiben Sie im Wesentlichen dieselben grundlegenden Strategien für das Verhalten der Schiffe auf:
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.
quelle
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.
quelle
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.
quelle
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.
quelle
Wie man eine KI erstellt, ist eine schwierige Frage, da sie aus vielen Teilen besteht:
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).
quelle
Überlegen Sie, was Sie tun, wenn Sie das Spiel spielen. Stellen Sie sich einige Fragen.
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
quelle