bot wegfindung in jump'n'shoot'n'run

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • bot wegfindung in jump'n'shoot'n'run

    So, ich hab jetzt für mein Game eine simple und eine mittlere "KI" gebastelt, klappt auch alles wunderbar. Die simple reagiert gar nicht auf den Spieler, sie bewegt sich nur auf einer Ebene hin und her. Die mittlere ist schon etwas ausgefeilter, sie folgt dir, springt über Hindernisse und wechselt die Ebene wenn sie den Gegener nicht erreichen kann (funzt so wie gedacht). NUR::
    Ich würde gerne noch eine dritte KI einbauen, eine die erkennt wo der Gegner ist und danach den richtigen Weg sucht...nur wie. Als erstes kam mir die Idee mit dem Eingbauten "Pfadfinder" den richtigen Weg zu finden, nur komm ich da nicht weiter. Ich müsste irgendwie die Wege über die das Vieh nicht drüber Springen kann, weil zu große Abstände oder Höhendifferenzen vorliegen als verboten bezeichnen. Meine Frage: Geht das??-und wenn ja-WIE??
    PULSE

    Zweispieler [||||||||||]
    Einspieler [||||||||||]

    [Die Entgrater ist auf Eis gelegt]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Trompadon ()

  • Du könntest die Abstande mit collision_line, position_empty und den lengthdir Funktionen abfragen. Falls der Abstand zu groß ist oder Gegenstand / Wand zu hoch, wird er nicht springen sondern stehen bleiben. Auf diese Weise habe ich mir auch schon eine KI gebastelt, die sogar Wandsprünge benutzt, um dem Spieler zu folgen, aber ich kann sie leider nicht mehr finden
  • Wandsprünge nutzen is ja nicht das Problem, hab ich auch schon. Nur hätte ich gerne noch eine KI Stufe die immer einen (wenn möglich) und den schnellsten (optional) Weg findet. Und da müsste ich einfach zu viele Möglichkeiten berücksichtigen, wenn ich es auf die hardcore Variante mache (auf deutsch: Alles was Möglich ist durchgehen: "Wenn da ein Block ist und der Gegner höher ist und der Abstand x ist und....") Und das mach ich nicht. Mit der Pfadfinde Variante wär sicher was drinnen, ODER??

    Edit: ich glaub ich benenne den Thread um, jemad der einfach den kürzesten Weg zu dir nehmen soll ist nicht wirklich intelligent,oder :S
    PULSE

    Zweispieler [||||||||||]
    Einspieler [||||||||||]

    [Die Entgrater ist auf Eis gelegt]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Trompadon ()

  • Wenn ich das richtig gelesen habe, dann hast du eine mittlere 'KI' die den Weg schon findet oder?

    Wie wäre es wenn du für die dritte KI, mittlere KI Dummys nimmst die den weg vorauslaufen (unsichtbar, am besten in einem step), sobald es halt 2 möglichkeiten geben könnte wo es langgehen könnte, teilt der Dummy sich auf, es werden 2. Kommt ein Dummy nicht weiter wird er gelöscht. Stellt man das schlau an und nach einem Punkte oder Zeit System (Wer hat den schnellsten Weg, wer hat bessere Deckungsmöglichkeiten etc.) dann kann am Ende auch überprüft werden wer den besseren Weg hatte.
    Dieser Dummy wird nun also deinem Gegner die Daten und den weg übertragen und dieser läuft ihn danach ab.
    Evt. extrem großer Programmieraufwand der jetzt hintendrauf kommt, aber wenn ich lese das du einem Bot das alleinige Springen von einer ebene zur nächsten ermöglichst hast traue ich dir das locker zu.
    Der Vorteil liegt aber darin, dass wenn diese Dummys nicht zu viel Performance verbrauchen eine ideale möglichkeit sind um gute Wege herauszufinden.

    Ansonsten habe ich denn Sinn deiner dritten KI nicht ganz verstanden ;)
  • Ja, so meinte ich das. Gute Idee! Wenn die Dummys dann einen ordentlichen Speed haben lässt sich das gut machen. Werde mal ein bisschen dran arbeiten...
    PULSE

    Zweispieler [||||||||||]
    Einspieler [||||||||||]

    [Die Entgrater ist auf Eis gelegt]
  • evtl würde ich die dummys allerdings nicht mit zu grosser speed laufen lassen, da sie sonst durch wände laufen könnten, bei einer grösseren speed wäre es vorteilhaft im step event mithilfe einer schleife eine nicht zu grosse anzahl steps zu berechnen, etwa in der form:

    GML-Quellcode

    1. for(i=0;i<schritte_pro_step;i+=1)//=speed, die theoretisch beliebig hoch sein kann, und der "durch-die-wand-geh"-effekt nicht auftreten sollte
    2. {
    3. weg_abfragen();
    4. x+=bla
    5. y+=blub
    6. }
    "das war meine letzte flamewar PM an dich ."
  • Ich arbeite im Moment nicht dran (Ich finde auch die Mid Ki reicht für nicht Arena Kämpfe, wo man nicht gegen einen Kämpfen muss). Aber ich mache sie dann etwas anders. Und zwar erstelle ich Waypoints (diese setzt der Gegner selbst). Er bewegt sich in eine beliebige Richtung, kollidiert er erstellt er einen Waypoint. Dann springt er, kommt er weiter wird ein neuer Waypoint erstell, der mit dem anderen Verknüpft wird. Kommt der Gener in die Nähe von dir, dann macht er keine Waypoints mehr und kämpft erst mal..oder so. Durch dieses Waypoint system kann er mit einer Schleife berechnen, welchen nächsten Waypoint er nehmen muss um den Gegner zu finden, da jeder Waypoint mehrere Verknüpfungen haben kann (links, rechts, oben-rechts, oben-links...).
    Da das aber sehr anstrengend wird und ich Arena Kämpfe eigentlich für zwei Menschen gedacht habe (erst mal), mach ich diese Ki, wenn, dann später..
    PULSE

    Zweispieler [||||||||||]
    Einspieler [||||||||||]

    [Die Entgrater ist auf Eis gelegt]
  • Benutzer online 1

    1 Besucher