Bücher online kostenlos Kostenlos Online Lesen
Erfolgreiche Spieleentwicklung

Erfolgreiche Spieleentwicklung

Titel: Erfolgreiche Spieleentwicklung
Autoren: Alexander Rudolph
Vom Netzwerk:
Verhaltensnetzwerk
    Betrachten wir als konkretes Beispiel ein Verhaltensnetzwerk zur Simulation dreier Verhaltensweisen ( Pattern Movement , Attack und Retreat ), wie es im Programmbeispiel KI-Demo1 implementiert ist. Um häufige Verhaltensänderungen zu vermeiden, legen wir zunächst einmal möglichst kleine Übergangswahrscheinlichkeiten fest (0.001:1 bis 0.002:1):
    BehaviorNetwork_AIObject = new CBehaviorNetwork;
BehaviorNetwork_AIObject->Init_BehaviorNetwork(3, 0.001f, 0.002f);
    Kommen wir nun zur Definition des Persönlichkeitsprofils:
Nach einem Rückzug soll das KI-Objekt möglichst schnell (Übergangswahrscheinlichkeit 0.025) wieder angreifen:
    BehaviorNetwork_AIObject->Set_BehaviorProbability_
From_Node1_To_Node2(BEHAVIOR_NODE_RETREAT, BEHAVIOR_NODE_ATTACK, 0.025f);
Der direkte Angriff ist einem geskripteten Bewegungsverhalten, falls möglich, vorzuziehen (hohe Wahrscheinlickeit (0.02) für einen Wechsel von der Verhaltensweise Movement Pattern zur Verhaltensweise Angriff ):
    BehaviorNetwork_AIObject->Set_BehaviorProbability_
From_Node1_To_Node2(BEHAVIOR_NODE_PATTERN_MOVEMENT, BEHAVIOR_NODE_ATTACK, 0.02f);
Zu guter Letzt soll die Wahrscheinlichkeit (0.0001) für einen nicht erzwungenen Rückzug möglichst gering sein:
    BehaviorNetwork_AIObject->Set_BehaviorProbability(BEHAVIOR_NODE_RETREAT, 0.0001f);
    Nachdem das Persönlichkeitsprofil festgelegt wurde, lassen sich die individuellen Verhaltensweisen eines KI-Objekts wie in Listing 4.3 simulieren. Zu ergänzen ist, dass ein Persönlichkeitsprofil selbstverständlich im Spielverlauf als Ergebnis eines Lernprozesses oder aufgrund einer Vorgabe durch ein KI-Skript jederzeit modifiziert werden kann.
    // zufällige Verhaltensänderungen gemäß Persönlichkeitsprofil ermöglichen:
BehaviorNetwork_AIObject->Random_Update_BehaviorNetwork();

[...]

// Ergebnisse der Entscheidungsfindung berücksichtigen:
if(DecisionTree->Get_Decision() == ATTACK)
BehaviorNetwork_AIObject->Set_ActualBehaviorNode
(BEHAVIOR_NODE_ATTACK, true /*spätere Verhaltensänderung
erlauben*/, true);
else if(DecisionTree->Get_Decision() == RETREAT)
BehaviorNetwork_AIObject->Set_ActualBehaviorNode
(BEHAVIOR_NODE_RETREAT,true, false /*sofort ausweichen*/);
    Listing 4.3: Simulation individueller Verhaltensweisen (Verhaltensnetzwerk)

4.4 Echtzeitwegfindung
    Die Echtzeitwegfindung gehört zu den grundlegendsten Aspekten der KI-Programmierung. Sieht man einmal von im Weltraum angesiedelten Spielen ab, dann führt die kürzeste Verbindung – eine gerade Linie – nur selten zum gewünschten Ziel. Hindernisse und Wegbegrenzungen verkomplizieren die Wegfindung erheblich. In Anbetracht der immer detailreicheren und zugleich weitläufigeren Umgebungen ist es unmöglich, alle nur denkbaren Routen in die Planungen einzubeziehen. Wie in Abbildung 4.3 gezeigt, beschränkt man sich daher lediglich auf die für den Spielverlauf relevanten Wegabschnitte, deren Anfangs- und Endpunkte man als Wegpunkte bezeichnet.

    Abbildung 4.3: Wegpunktesystem
    Im Programmbeispiel KI-Demo2 werden 1000 Wegpunkte nach dem Zufallsprinzip im Raum positioniert. Ebenfalls nach dem Zufallsprinzip wird einer dieser Wegpunkte als ein mögliches Ziel ausgewählt, das die KI-Einheiten ansteuern müssen. Haben die Einheiten ihr Ziel erreicht, wird ein neuer Zielpunkt ausgewählt. Der Wegpunkt, den die Einheiten auf dem Weg zum Ziel ansteuern, wird blau dargestellt, der Zielwegpunkt gelb.
    Die Aufgabe einer Wegfindungsroutine besteht nun darin, zusammenhängende Wegabschnitte miteinander zu kombinieren, um einen möglichst geeigneten Weg zum gewählten Ziel zu ermitteln. Um gleich einem Missverständnis vorzubeugen: Der kürzeste Weg ist nicht immer zwangsläufig der bestmögliche. Betrachten wir hierzu einige Beispiele:
Das Verhalten von KI-Einheiten, die stets den kürzesten Weg zu ihren Zielen wählen, wird für einen geübten Spieler schnell durchschaubar.
Durch Beobachtung der gegnerischen Einheiten kann ein Spieler Erkenntnisse über ihre möglichen Zielorte gewinnen. Eine gute KI sollte daher auch diejenigen Wege berücksichtigen, bei denen sich Rückschlüsse auf den Bestimmungsort erst zu einem möglichst späten Zeitpunkt treffen lassen.
Um sich einen taktischen Vorteil zu verschaffen, sollte eine gute KI alternative Angriffs- oder Rückzugsrouten in Betracht ziehen, mit denen ein Spieler normalerweise nicht rechnet.
Oftmals ist es sinnvoll, wenn die KI-Einheiten ihr gemeinsames Ziel auf verschiedenen Wegen ansteuern. Der Spieler
Vom Netzwerk:

Weitere Kostenlose Bücher