Schnellste Methode - Wegfindung & nicht überlappen

  • GM 8

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

  • Schnellste Methode - Wegfindung & nicht überlappen

    Instanzen die sich auf den Spieler zubewegen sollen Hindernisse umgehen. Dass muss nicht besonders präzise sein, da viel Platz vorhanden sein wird. Haupt Augenmerk leg ich darauf, dass die Instanzen nicht durch Andere hindurchlaufen können.

    Dass geht zwar schon, aber es ist sehr rechenintensiv, wodurch ich das Maximum an vorhanden Gegnern auf ca. 40-50 beschränken muss.

    Gibt es eine sehr schnelle Methode für die Wegfindung aber vorallem dafür, dass sich die Gegner nicht überlappen, so dass sich wenigstens 100 Gegner gleichzeitig im Raum befinden können, ohne das es laggt?
    Anderer Leuten Signaturen sind... anderer Leuten Signaturen!


  • hmh, Pfadfindung ist eine der größten Herausforderungen beim Programmieren. Ich schlag mich in meinem RTS seit min. 6 Stunden damit rum und es klappt immernoch nicht so wie ichs gern hätte.

    Hab mal festgestellt das die Funktion mp_potential_step für das was sie kann extrem schnell ist, ist wahrscheinlich compiliert (und etwa 500 mal schneller als ein GML equivalent). Nachteil ist aber dass dies Einheiten nur ausweicht und versucht ins ziel zu kommen, es erreichnet keinen Pfad, somit finden die Instanzen nicht immer ins ziel.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Habs jetzt doch selber zufrieden stellend hinbekommen.

    Create Event:

    GML-Quellcode

    1. mp_potential_settings(60,2,40,true)


    Step Event:

    GML-Quellcode

    1. mp_potential_step_object(obj_Player_Parent.x,obj_Player_Parent.y,1.7,par_monster)


    Collision Event mit par_monster:

    GML-Quellcode

    1. var dir
    2. dir=point_direction(other.x,other.y,x,y)
    3. while (place_meeting(x,y,other))
    4. {
    5. x+=lengthdir_x(1,dir)
    6. y+=lengthdir_y(1,dir)
    7. other.x-=lengthdir_x(1,dir)
    8. other.y-=lengthdir_y(1,dir)
    9. }


    Also falls es jemand interessiert. Bin natürlich immer neugierig auf anderen Methoden. Meine Methode ist in meinem Fall halt ok, da es fast keine Mauern uä. in meinem Spiel gibt.

    Wegen deinem RTS: Schon ma bei Google nach "Game Maker RTS Example" gesucht? Findest paar Sachen die dir weiterhelfen könnten.
    Anderer Leuten Signaturen sind... anderer Leuten Signaturen!


  • Ich kenn genug tuts, aber mein Problem ist in erster Linie dass ich das Motion System (oder zumindest ein Teil davon) aus SC 2 nachbauen will. Dieses Ausweich Dingens, also wenn eine Einheit wo durch will weichen eigene Einheiten aus. Dies ist zwingend notwendig da man bis zu 16 Einheiten auf einmal bewegen kann, und dann stellen sie sich in einer Formation auf in der manche Stellen nicht mehr direkt erreichbar sind ohne über eine Einheit zu laufen, was ich ja vermeiden will. Zudem ist dort das riesen Geschwiindigkeits-Problem vom GM wenn später bis zu 400 Einheiten und Gebäude im Spiel sein sollten.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)