Bücher online kostenlos Kostenlos Online Lesen
Erfolgreiche Spieleentwicklung

Erfolgreiche Spieleentwicklung

Titel: Erfolgreiche Spieleentwicklung
Autoren: Alexander Rudolph
Vom Netzwerk:
Wasser. Im Fokus der Simulation steht hierbei jedoch nicht das Verhalten einzelner Individuen, sondern das Verhalten der Gemeinschaft – des Schwarms.
    Zum ersten Mal wurde das Schwarmverhalten (Flocking) im Jahre 1986 von Craig Reynolds [3] simuliert. Die Simulation basiert auf drei einfachen Regeln, welche die einzelnen Individuen (Boids genannt) befolgen müssen. Bei der Simulation kleinerer Schwärme im Rahmen eines Computerspiels lassen sich die Regeln etwas vereinfachen, um den benötigen Rechenaufwand zu reduzieren.
Alignment (vereinfacht): Bewege dich wie deine Nachbarn in Richtung des gewählten Ziels
Alignment: Bewege dich in die Richtung, die dem Mittel der Bewegungsrichtungen deiner sichtbaren Nachbarn entspricht
Kohäsion (vereinfacht): Bewege dich zum Schwarmmittelpunkt, wenn du dich zu weit vom Schwarm entfernt hast
Kohäsion: Bewege dich in Richtung der gemittelten Position deiner sichtbaren Nachbarn, wenn du dich zu weit vom Schwarm entfernt hast
Separation: Bewege dich von einem deiner Nachbarn weg, sobald er dir zu nahe kommt
    Das im Programmbeispiel KI-Demo2 implementierte Schwarmverhalten wird in Listing 4.4 veranschaulicht.
    Boid[0].Update_MovementDirection(0.99f /*Präzision beim
Zielanflug*/);
Boid[0].Update_Movement(4.0f /*Geschwindigkeit*/,
0.3f /*angepeilte minimale quadrat.
Distanz zum Ziel*/);

// Die übrigen Boids folgen ihrem Anführer:
Follow_The_Leader(0 /*LeaderID*/, Boid, NumBoids);

// Positionen der Nachbarn mitteln. Die gemittelte Position
// wird im Rahmen der Kohäsions-Regel angesteuert:
for(i = 1; i < NumBoids; i++)
Boid[i].Calculate_Individual_Centroid(Boid, NumBoids,
10000.0f /*MaxNeighbourhoodDistanceSq*/);

// Position des nächstgelegenen Nachbarn ermitteln:
for(i = 0; i < NumBoids; i++)
Boid[i].Find_ClosestNeighbour(Boid, NumBoids);

for(i = 1; i < NumBoids; i++)
{
// Falls nötig neue Bewegungsrichtung festlegen,
// damit der Schwarm beisammen bleibt:
Boid[i].Cohesion(100.0f /*MaxSquareDistance*/);
// Falls nötig neue Bewegungsrichtung festlegen, damit
// die Schwarmmitglieder nicht mit ihren Nachbarn
// zusammenstoßen:
Boid[i].Separation(20.0f /*MinSquareDistance*/,
50.0f /*SeparationSquareDistance*/);
}

for(i = 1; i < NumBoids; i++)
{
Boid[i].Set_RotationVelocity(0.5f);

// Bewegungsrichtung aller benachbarten Schwarmmitglieder
// mitteln:
Boid[i].Calculate_MeanDesiredMovementDirection
(Boid, NumBoids, 10.0f /*maxCalculationDistanceSq*/);

Boid[i].Update_MovementDirection(0.9f);
Boid[i].Update_Movement(4.0f, 0.3f);
}
    Listing 4.4: Flocking
    Im Detail erklärt
Flocking (Schwarmverhalten), Boids: http://www.spieleprogrammierung.net/2010/03/ki-programmierung-teil-12-flocking.html
    Links & Literatur
OpenGL-Spieleentwicklung: http://www.spieleprogrammierung.net
D*-Algorithmus: http://de.wikipedia.org/wiki/D*-Algorithmus
Schwarmverhalten: http://de.wikipedia.org/wiki/Schwarmverhalten
Entscheidungsbäume: http://de.wikipedia.org/wiki/Entscheidungsbaum
Downloadbereich: http://www.entwickler-press.de/spieleentwickeln

Der Autor

    Alexander Rudolph hat zwei Bücher über das Thema Spieleprogrammierung mit DirectX für den Markt+Technik Verlag geschrieben und war an der Entwicklung sowohl der Grafik- als auch auch der Physik-Engine für das Spiel Söldner 2 beteiligt. In regelmäßigen Abständen veröffentlicht er auf seiner Webseite spieleprogrammierung.net Artikel und Tutorials über den Einsatz der modernen OpenGL-Spezifikationen 3.x und 4.x und ist als freier Mitarbeiter im Bereich 3-D-Programmierung tätig.
Vom Netzwerk:

Weitere Kostenlose Bücher