Ich entwerfe ein vernetztes, rundenbasiertes 3D-6DOF-Strategiespiel für die Raumflotte, das sich stark auf die Anpassung von Schiffen stützt. Lassen Sie mich das Spiel ein wenig erklären, da Sie ein wenig darüber wissen müssen, um die Frage zu stellen.
Was ich anstrebe, ist die Fähigkeit , Ihre eigene Flotte von Schiffen mit benutzerdefinierten Formen und angebrachten Modulen (Propeller, Traktorstrahlen ...) zu erstellen , die jedem Schiff Vor- und Nachteile bieten, sodass Sie viele verschiedene Flottenverteilungen haben. Zum Beispiel würde ein langes Schiff mit zwei Propellern an der Seite das Schiff leicht um dieses Flugzeug drehen lassen, größere Schiffe würden sich langsam bewegen, wenn Sie nicht viele Propeller hinten platzieren bewege dich nur schnell in diese Richtung.) Ich plane, das ganze Spiel um dieses Feature herum auszugleichen.
Das Spiel würde sich um zwei Phasen drehen: Befehle und Kampfphase. Während der Bestellphase kommandieren Sie die verschiedenen Schiffe. Wenn alle Spieler die Befehlsphase beendet haben, beginnt die Kampfphase und die Schiffsbefehle werden für einige Zeit in Echtzeit ausgeführt. Dann wird die Aktion unterbrochen und es gibt eine neue Befehlsphase.
Das Problem entsteht, wenn ich an die Eingabe eines Players denke. Um ein Schiff zu bewegen, müssen Sie verschiedene Propeller ein- oder ausschalten, wenn Sie steuern, vorwärts fahren, bremsen, drehen möchten ... Diese Propeller müssen nicht mit ihrer ganzen Kraft arbeiten, damit Sie mehr Bewegung erzielen können kombinationen mit weniger propellern.
Ich finde diesen Ansatz etwas langweilig. Der Spieler will nicht mit Motoren oder irgendetwas herumspielen, sondern nur BEWEGEN und TÖTEN. Ich beabsichtige, dass der Spieler diesen Schiffen Befehle erteilt, indem er ein Ziel und eine Drehung festlegt. Dann berechnet die KI die richtige Propellerkraft, um diese Bewegung und Drehung zu erreichen. Der Vortrieb muss nicht während der gesamten Abbiegeberechnung gleich sein (nachdem die Befehle erteilt wurden), daher wäre es cool, wenn die Schiffe während der Bewegung reagieren und die Leistung der Propeller dynamisch an ihre Bedürfnisse anpassen würden. Dies kann jedoch der Fall sein zu schwer zu implementieren und es wird nicht wirklich benötigt, damit das Spiel funktioniert.
Wie würde diese KI in beiden Fällen entscheiden, welche Propeller aktiviert werden sollen, damit die beste (oder zumindest nicht die schlechteste) Flugbahn erreicht wird?
Ich dachte über einige Ansätze nach:
- KI lernen: Die Schiffstypen lernten durch Versuch und Irrtum etwas über ihre Bewegungen, passten ihr Verhalten mit mehr Verwendungszwecken an und wurden schließlich "schlau". Ich möchte mich nicht so sehr auf AI-Codierung einlassen, und ich denke, es kann für den Spieler frustrierend sein (auch wenn Sie es lernen lassen können, ohne zu spielen).
- Vorberechnete Zeitschrittbewegung: Bei der Schiffserstellung werden ALLE möglichen Bewegungen für jede Propellerkonfiguration und Leistung für eine bestimmte Deltazeit berechnet. Speicherintensiv, hässlich, schlecht.
- Vorausberechnete Flugbahnen: Wie oben, jedoch nicht für jede Deltazeit, sondern für die gesamte Flugbahn, die dann so weit wie möglich angepasst wird. Erfordert eine feste Propellerkonfiguration für die gesamte Kampfphase und ist trotzdem speicherintensiv, hässlich und schlecht.
- Kontinuierliches Brute Forcing: Die KI überprüft kontinuierlich ALLE möglichen Propellerkonfigurationen während der gesamten Kampfphase, berechnet ein paar Zeitschritte vor und entscheidet darauf basierend, welche die beste ist. Con: Was jetzt gut ist, ist später vielleicht nicht mehr so gut, und es ist zu CPU-intensiv, hässlich und auch schlecht.
- Single Brute Forcing: Wie oben, jedoch nur Brute Forcing zu Beginn der Simulation. Daher ist während der gesamten Kampfphase eine konstante Propellerkonfiguration erforderlich.
- Kontinuierliche Winkelprüfung: Dies ist keine vollständige Bewegungsmethode, sondern eine Möglichkeit, "dumme" Propellerkonfigurationen zu verwerfen. Anhand des Normalenvektors und des Endvektors des aktuellen Propellers können Sie die für den Propeller erforderliche Leistung anhand des Winkels schätzen. Sie müssen dies kontinuierlich während der gesamten Kampfphase tun. Ich habe das kürzlich herausgefunden, also habe ich nicht zu viel darüber nachgedacht. Von vornherein hat es den Nachteil, dass das, was jetzt gut ist, später möglicherweise nicht so gut ist, und es kümmert sich nicht um die anderen Propeller, die zusammenwirken, um eine bessere Antriebskonfiguration zu erzielen.
Ich stecke hier wirklich fest. Irgendwelche Ideen?