Archiv verlassen und diese Seite im Standarddesign anzeigen : Event zu einer bestimmten Stelle bewegen
lightning-studios
20.04.2005, 06:24
Ist es möglich, ein Event an eine bestimmte Stelle gehen zu lassen, egal, an welchem Ausgangspunkt sich das Event befindet.
Ich hätte nämlich vor, das, wenn es nacht wird, die Leute in ihr Haus hineingehen. Da aber ja nicht alle Leute einfach stehen, sondern auch per zufallsbewegung rumlaufen, müsste ich es so machen, das die NPC´s zu einer bestimmten stellen (in diesem falle die haustür) gehen würden.
ist das irgendwie möglich?
Wenn ja wie?
Rein technisch gesehen sicherlich, aber dafür muß man einen Algorithmus entwickeln mit dem sich beliebige Hindernisse umgehen lassen. Für so was ist der Maker denkbar ungeeignet, da er die ganzen Konstrukte von höheren Programmiersprachen nicht besitzt mit denen man normalerweise so etwas macht.
also so wie du es vor hast geht das nicht, ich wollte auch versuchen so eine funktion zu finden für ein menü, aber ich wollte nicht wegen dem menü in eine extra map, naja auch egal, zu deinem thema es ist schon möglich du musst nur mehrere events dafür einstellen und schalter, ich erklär dir kurz wie das dann auszusehen hat hat also du hast map1 (auf der sind die häuser) und du hast map2 (das ist eins der häuser) also setzt du 2 events ein in map1 und eins in map2, der 2 event in map2 ist morgens bist mittags halt net im haus zusehen und sobald abdends wird läuft halt der 1 event von map1 wieder ins haus und sobald er an der tür ist lässt du ihn verschwinden und den anderen wieder auftauchen... usw. also ist eigentlich garnicht so schwer...
Nun, man KANN es mit dem Maker hinbekommen, also eine komplexe Pathfinding-Methode.
Man muss nur recht rafiniert mit den Variablen-Pointern arbeiten und zudem EINIGES an Variablen frei lassen. (so in etwa 1000 Variablen würde das ganze schon beanspruchen)
Dann muss man in Kauf nehmen, das eine Berechnung solch einer Route unter umständen einiges an Zeit in Anspruch nimmt.
Ansonsten aber geht es.
Und hier nen Skript von mir dazu:
http://rapidshare.de/files/918837/neu_Path-Finding.rar.html
Das ist nach der A*-Finding-Methode, soll angeblich die beste Pathfinding-Methode sein, die ohne Waypoints funktioniert.
Dennoch läd es ne ganze Weile bis der Weg gefunden wurde.
Bei allzu großen Maps kann man das ganze ehr vergessen.
Man könnte versuchten das ganze mit Waypoints zu verbinden, dadurch würde es sicherlich eindeutig schneller gehen.
Nein, ich hab jetzt keine Lust das Skript zu erklären, nicht heute...
SChaut euch die Englische Beschreibung zu der A*-Pathfinding-Methode an:
http://www.policyalmanac.org/games/aStarTutorial.htm
Aber mal ehrlich: Für nen Skript, dass Leute in ihr Haus gehen (was so gesehen recht nebensächlich ist) lohnt sich der Aufwand nicht. Ich würde die Idee zurückstellen, ehrlich gesagt.
C ya
Lachsen
Nun, es geht auch durchaus mit sehr geringem Aufwand allerdings der großen Einschränkung, dass Hindernisse unbeachtet bleiben und somit die Events auf "slip through" gestellt werden müssen.
Dein Script ist auf der Seite leider nicht mehr aufzufinden Lachsen, würde es allerdings gerne mal testen.
Wäre es mit simplen Variablenvergleichen und Kursänderungen abhängig von der Terrain ID aber nicht ebenfalls leicht möglich ein einwandfreies Pathfinding zu scripten?
Die eingeschränkte Möglichkeit welche ich anfangs ansprach würde vorsehen, dass in einem Event die Koordinaten des Zielpunktes und die des Events welches sich zum Zielpunkt bewegt gespeichert werden und anschließend die Koordinaten mit Forcs verglichen werden. Zum einen ob die X Koordinate größer oder kleiner ist als die andere(jeweils eine Forc), zum anderen das gleiche mit den Y Koordinaten. Immer wenn dies zutrifft sollte das Event einen Schritt in die jeweilige Richtung machen. Ob es so korrekt ist weiß ich nicht genau, denke ich aber in etwa =/.
Ein perfektes Pathfinding Skript KANN nicht simple sein.
Das was du da ansprichst ist lediglich eine Berechnung, dass ein Objekt den direkten Weg zum Ziel findet. Sind da Hindernisse im Weg würde das Skript sofort scheitern (es sei denn man verwendet Start Slip Through, natürlich, aber dann kann man auch nicht mehr von ner Pathfinding-Methode reden...)
Der nächste SChritt wäre das Event immer die Felder der umgebun abzutasten, bevor es seinen Schritt macht, damit das Event eventuell etwas von dem direkten Weg abweicht um zum Ziel zu kommen. Auf dieser Art kann man kleinere Ein-Feld-Hindernisse umgehen. Wenn man es gut skriptet sind sogar Ganze Mauern kein Problem. Es wird erst dann kompliziert, wenn das Event einen schritt ENTGEGEN der geplanten Richtung gehen muss...
Desweiteren bringen diese "Abtast-Methoden" nur in ganz wenigen Fällen den perfekten Weg.
Die Methoden die ich hier im Blickfeld habe, berechnen die Route vor, bevor das Event auch nur einen Schritt macht. Die einzelnen Schritte werden in eine Kette von Variablen abgespeichert. Ist die Route komplett berechnet fragt man die Werte der Variablen nach und nach ab, damit das Event die Schritte abgeht.
Wie man nun schließlich die richtige Route berechnet ist ein ziemlich komplizierter Vorgang und ich hab nach wie vor keine Lust ihn hier zu erklären (verweise nochmal auf den Link in meinem ersten Beitrag)
Achja und hier der funktionierende Download vom A*-Pathfinding-Skript:
http://rapidshare.de/files/1352024/neu_Path-Finding.rar.html
C ya
Lachsen
Lil_Lucy
21.04.2005, 15:25
Also, wenn es nur darum geht das die Leute abends zu ihren Häusern zurückgehen muss es nicht unbedingt so kompliziert werden.
Statt die Leute per random Movement durchs dorf zu scheuchen müsstet du sie allerdings von einem paralel Process einen festen Pfad entlanglaufen lassen (was sowieso besser aussieht). Jedes wegstück mit einem eigenen Move Event Befehl gefolgt von einem Move all, so hast du praktisch Wegpunkte dazwichen. An jedem dieser Wegpunkte fragt das Event die Variable für die Uhrzeit im Spiel ab und wenn es feststellt das es für den Chara langsam zeit wird heimzugehen machst du in einer Fork den Heimweg, Schritt für Schritt vom entsprechenden Wegpunkt (das ist immernoch weniger Arbeit als das was Lachsen da vorgeschlagen hat), dabei kannst du dann noch einige Animationen einbauen die das ganze lebendiger wirken lassen, zumbeispiel schaut der Chara noch mal in den Briefkasten oder so.
Ich denke das wäre sinnvoller für dich als jetzt so ein umständliches wie fehleranfälliges Script mit zigtausend Variablen zu nehmen wo, wenn was nicht richtig hinhaut, die grosse Suche nach dem Fehlerteufel losgeht und du praktisch von vorn beginnen musst wenn du später mal was an der Map änderst.
lightning-studios
21.04.2005, 16:02
Thx an alle.
Ich glaub ich werds so machen, wie es Lil_Lucy beschrieben hat.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.