[RELEASE] MTA:SA Pathfinding Module

  • Hallo,

    Wir, das eXo-Reallife Team, möchten heute ein Modul releasen, dass auch auf unserem Server Verwendung findet.
    Es handelt sich hierbei um ein Pathfinding Modul, dass von Jusonex und StiviK entwickelt wurde.
    Das Modul nutzt das A* verfahren. (https://de.wikipedia.org/wiki/A*-Algorithmus)
    Wir nutzen dieses z.B. für unser GPS:

    Externer Inhalt i.imgur.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.


    Das ist ja alles schön und gut, aber warum haben wir dafür ein Modul entwickelt und nicht einfach ein Script geschrieben?
    Dies hat einen ganz einfachen Grund. Durch das Modul werden die Routen in eigenen Threads berechnet, was erstens den Vorteil hat, dass es viel schneller als ein Script ist, und zweitens können praktisch unendliche viele Routen nebeneinander berechnet werden. Das ganze verursacht auch keine Laggs o.ä. auf dem Server!

    Welche Features hat das Modul?

    • Das Modul kann mehrere Graphen/Nodes nebeneinander laden
    • Das Modul berechnet die Routen in eigenen Threads
    • Sehr nützliche API-Funktionen (wie z.B. findNodeAt oder getNodeNeighbors)

    Was sind die wichtigsten Funktionen?

    Code
    int loadPathGraph(String pathToGraphFile)

    Diese Funktion lädt euch den Graphen von der angegeben Datei und gibt eine GraphId zurück die ihr für alle weiteren Funktionen benötigt. Falls etwas nicht funktioniert hat wird false zurückgegeben.

    Lua
    bool findShortestPathBetween(int graphId, float startX, float startY, float startZ, float endX, float endY, float endZ, function callback)

    Diese Funktion sucht euch die kürzeste Route zwischen den angegebenen Punkten. (Leider können keine Vektoren übergeben werden!)
    Die callback-Function wird aufgerufen, wenn die Berechnung fertig ist. Als Argument wird entweder eine table zurückgegeben die alle Nodes enthält oder false falls keine Route gefunden wurde.

    Lua
    bool unloadPathGraph(int graphId)

    Diese Funktion könnt ihr nutzen, wenn ihr den Graphen nicht mehr braucht und entladen möchtet, es wird true zurückgegeben, wenn alles gepasst hat, false falls ein Fehler aufgetreten ist.

    Alle anderen Funktionen die das Modul enthält findet ihr in unserer Dokumentation.


    Warum releast das eXo-Team den ganzen Spaß?
    Nunja, das hat den einfachen Grund, wir wollen unsere Arbeit auch mit anderen teilen und das nicht einfach für uns behalten! Wir hoffen wir können euch damit bereichern und vlt. sogar helfen!

    Wo kann man dann das Modul runterladen?
    Das ganze Modul ist Open-Source und kann in unsere GitHub-Organisation eingesehen werden.
    Released haben wir das ganze unter der MIT License diese kann, hier, eingesehen werden.

    GitHub-Organisation: https://github.com/eXo-MTA
    Repository: https://github.com/eXo-MTA/ml_pathfind
    Download des Modules (Windows/Linux): https://github.com/eXo-MTA/ml_pathfind/releases
    Nodes aller Straßen in SA: https://github.com/eXo-MTA/ml_pat…t/sa_nodes.json

    Falls ihr Fehler findet oder Vorschläge habt, könnt ihr einfach einen neuen Issue erstellen und wir werden uns das ganze ansehen!

    So nun das wars auch, viel Spaß mit dem Modul!


    - StiviK und das eXo-Reallife Team

  • Dieses Thema enthält 15 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!