Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

21

17.02.2011, 16:57

Danke für den Link. Inwiefern sollte dieser Algorithmus meine Anforderungen denn besser erfüllen? Naja ich gucks mir mal an :)
Das mit dem Nachrichtensystem klingt echt verlockend und auch recht realistisch. Kannst du das Buch empfehlen? Scheinen ja einige gute Ansätze drin zu sein.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

22

18.02.2011, 10:56

Naja Steering Behaviors sind an sich nur Beschreibungen von Grundproblemen. Da gibts halt Sachen wie Seek(Ein Agent läuft gradlinig auf nen anderen zu), Arrive(Ein Agent läuft auf den voraussichtlichen Zukunftspunkt eines anderen zu. Dieser Punkt kann über die Geschwindigkeit des zweiten Agenten berechnet werden), Seperation(Agenten halten untereinander Abstand und kollidieren so nicht untereinander), Alignment(Agenten gleichen ihre Blickrichtung einander an, sodass sie in die gleiche Richtung sehen) und und und. Da gibts halt einiges. Wenn man diese Sachen nun richtig implementiert, zB so wie im Buch, über ein System, indem sich die einzelnen Sachen an oder Abstellen lassen, so können die einzelnen Verhalten zusammen gekoppelt werden, und so kann schon sehr gutes Verhalten erreicht werden. Dies sind halt erstmal Verhalten welche die Bewegung beschreiben. Zusätzlich kommen im Buch noch Endliche Automaten vor und wie man diese gut umsetzen kann bzw diese richtig einsetzt. Ich muss sagen endliche Automaten waren mir zwar vorher aus dem Studium bekannt, programmiert hatte ich sowas vorher aber nie wirklich. Gut bei GameStates hat man ja auch nen Endlichen Automaten, wobei das da ja relativ einfach ist. Dann geht er im Buch auf ein kleines Fußballspiel ein. Graphen und Wegfindung. Zielgetriebene KI kommt auch vor. Scriptsprachen am Beispiel von Lua und wie diese einem Helfen können und zum Ende ein kleiner Top-Down-Shooter der alles vereint. Wenn du noch nicht viel Erfahrung mit KI hast so wie es bei mir war dann ist dieses Buch nen super einstieg fand ich. Man bekommt ein paar wirklich schöne Sachen gezeigt die man auch direkt umsetzen kann. Beispielcode ist auf seiner Internetseite verfügbar. Er geht auf die wichtigsten Grundlagen ein und seine beiden Beispielspiele sind auch wirklich schön um alles in einem Fluss zu sehen. Wenn dich das Thema interessiert greif ruhig zu:) Der Vorteil ist halt das im Buch alles aufeinander Aufbaut und man so schön reingeführt wird, was zum Beispiel bei der "AI Game Programming Wisdom" Reihe nicht der Fall ist. Gut nen bischen englisch solltest du schon kennen wovon ich jetzt mal ausgehe, wobei das Buch eigentlich wirklich einfach geschrieben ist. Musste einfach mal bei Amazon die Bewertungen angucken. Da stehen zum Teil noch informative Sachen.

Aber einen wirklichen Vorteil würds meiner Meinung nach zu deinem System nicht direkt geben. Wenn man sich halt einmal son paar Steering Behaviors geschrieben hat, und nen System hat indem man diese für jeden Agenten an oder abschalten kann, bringt das halt den Vorteil, dass man sehr Flexibel ist. Aber kommt dann natürlich auch auf die Art des Spiels, die Anzahl der verschiedenen Gegner und deren Verhalten an, ob sich das alles dann so lohnt. Wobei man einzelne Verhalten natürlich auch einfach so in einer Klasse implementieren kann. Wenn du ein bisschen C# kannst dann kannst du mal bei den Microsoft Tutorials zu Xna gucken. Die haben da auch nen paar Sachen umgesetzt. Da gabs nen Beispiel zu Seek und ich meine auch zu nen paar anderen. Zwar nicht besonders schön Umgesetzt, aber man sieht das Prinzip hinter dem Verhalten.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

23

18.02.2011, 23:27

Ich bin mal so dreist und frag dich, ohne direkt die Beschreibung der Bücher gelesen zu haben: Welches hast du oder in dem Fall, das du beide besitzt: welches würdest du mir (zuerst) empfehlen zu kaufen?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

24

19.02.2011, 03:52

Ich hab "Programming Game AI by Example" und "AI Game Programming Wisdom" den ersten. Ich find für den Anfang ist "Programming Game AI by Example" auf jedenfall besser. Es gibt nen recht guten Einblick in den Bereich KI. Man sieht nen paar Möglichkeiten und es baut alles schön aufeinander auf, sodass es alles zusammen nutzbar ist. Beim anderen Buch geht es um viele Kleinigkeiten, die in Kommerziellen Spielen genutzt wurden. Dort geht es mehr um Hilfstools, Skriptsprachen etc. und wie diese einem in der KI helfen können. "Normale" Ansätze sind auch dabei, aber es sind halt alles Einzelfälle und es baut nichts auf einander auf. Deswegen finde ich das erste als Einstieg besser und das zweite ist eher als Ausbaustoff zu sehen. So fährst du denke ich ganz gut;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Architekt

Community-Fossil

  • »Architekt« ist der Autor dieses Themas

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

25

23.02.2011, 21:08

So ich muss euch nochmal belästigen.
Der Weg wird (in den meisten Fällen) prima gefunden. Allerdings weiß ich nicht ganz, wie ich das voranschreiten meines Sprites realisieren soll, also wie es diesen Weg nacheinander abgehen kann.
Mein Vorhaben war eig., alle Zwischenschritte nacheinander anzugehen. also dass mein Sprite vom Startpunkt zum ersten Punkt in der Wegesliste geht, hat es diesen erreicht, soll es von dort zum nächsten Punkt usw.
Doch mir mangelt es gerade irgendwie an Ideen, also wenn wer Interesse hat mir ein Wenig Input zu verleihen, wäre ich sehr dankbar :)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

26

23.02.2011, 21:54

Um wieder auf Steering Behaviors zu kommen:) Einfach nen Seek auf die einzelnen Punkte in der Liste machen. Wenn du das jetzt so nicht alles umsetzen willst, kannste einfach immer den aktuellen Punkt in der Liste nehmen und einfach darauf hin zubewegen. Dein Gegner hat ja sicherlich Werte wie Maxspeed oder so. Dann guckst du einfach, dass du den Gegner in die Richtung des Punktes drehst und bewegst ihn mit maxspeed darauf zu. Wenn er nah genug am Punkt ist(es kann ja passieren, dass er diesen Punkt überläuft, es sei denn du fragst das vorher ab), dann wird der Punkt aus der Liste gelöscht und der nächste Punkt wird genommen. Irgendwann ist die Liste leer und der Gegner am Ziel. Zu Problemen kann es kommen, wenn du ne Kollision zwischen den Spielfiguren hast. Stell dir vor, der Gegner geht einen Weg ab und muss durch eine Enge Spalte auf der Karte. Von der anderen Seite kommen zwei Figuren und wollen in die entgegengesetzte Richtung. Je nach Umsetzung, kanns dir passieren, dass die Figuren alle hängen bleiben, bzw die beiden Figuren die dritte zurück schieben. Je nachdem kann es dir dann passieren, dass die Figur später an einem Punkt steht, von dem aus der aktuelle Punkt in der Liste nicht mehr direkt erreichbar ist. Zum Beispiel, weil er um eine Ecke geschoben würde. Wenn du halt sowas eingebaut haben solltest, solltest du dies vielleicht abfangen, und im Notfall den Weg neu berechnen, oder wenigstens einen Teilweg. Aber für deine Frage reicht erstmal nur in die Richtung drehen und nach vorne bewegen bzw einfach in die Richtung bewegen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige