/Runescape-Web-Walker-Engine

A navigation engine for OSRS written for TriBot

Primary LanguageJavaApache License 2.0Apache-2.0

Runescape-Web-Walker-Engine

Path Finding for RuneScape's graph-based map with over 10 million nodes optimized to generate any path in <200ms.

Visit Explv's Project to check out pathfinding with Dax Path generation!

Debugger -> Explv's Map

Using Daxwalker with Tribot

Daxwalker is included in the Tribot installation. It is released via Tribot Central. You can reference this library via Gradle/Maven through Tribot Central, or reference the JAR itself from the .tribot/install/tribot-client/lib directory.

Documentation

View JavaDocs

API Keys

Please visit https://admin.dax.cloud/ for more information. To use your Api Keys, please configure your Dax API Key provider.

        DaxWalker.setCredentials(new DaxCredentialsProvider() {
            @Override
            public DaxCredentials getDaxCredentials() {
                return new DaxCredentials("YOUR-PUBLIC-KEY", "YOUR-SECRET-KEY");
            }
        });

Api Keys

About

  • This is the client side of dax walker, which includes a wrapper for the server-client interaction of generating paths from point A to point B and navigating through the path.
  • Back-end pathfinding is coded using a combination of dijkstra's and A* algorithm. Dijkstra's is mainly for region limiting for performance purposes whereas A* calculates the actual path. Wayports (Node jumps) cannot be calculated using a heuristic value so Dijkstra's is needed in this scenario.
  • The Walker Engine includes path walking, waypoint navigation (Ship Chartering/Portals/etc), and path randomization using BFS to prevent trackable walking patterns.

Features

  • Speed. Despite RuneScape's huge world of 10M tiles in a sparse map of 15000x15000x4, my optimized engine will generate a path from any two points in less than 200ms, guaranteed. My custom heuristic function for A* will calculate portals and teleports without loss of accuracy for your individual character.

  • Ease of use. Implement the engine into your script by simply calling:

        DaxWalker.walkTo(new RSTile(1,2,3));
        DaxWalker.walkToBank(Bank.VARROCK_EAST);
  • Shortcuts. Using all and only the shortcuts that your Player can access, whether it is skill level (Agility level needed for shortcut) or inventory item requirements (Such as gold needed for ship or fee to enter dungeon). This also includes quest requirements.

  • Obstacles. All obstacles such as doors/ladders/etc are supported as long as area is mapped.

Supported Areas (Currently roughly 90% of the game world)

  • All Cities (Except Lletya) including Zeah
  • Wilderness
  • Gnome Slayer Dungeon
  • Relleka Slayer Dungeon
  • Stronghold of Security
  • Most underground locations (Falador Mine, Varrock Sewers, etc)

Debug

  • Debugging visualization. Draw a live feed of the Path and Collision Data the engine is working with on the minimap using: WebWalkerPaint.getInstance().drawDebug(graphics);

Directed Nodes

  • Nodes that direct to another, and not vice versa (Such as one way entrances) are supported as well.
Here is an example of Draynor Manor's one way door

Path from outside to inside. (Enters front door.)

Path from inside to outside. (Exits through back door.)

What's Included

  • Client side shortest path calculation for every location in the current region in a single call.
Real time visualization:
Reachable.getMap();

Visualization of the server generating a path from point A to point B (Slowed Down)

The algorithm is designed to limit itself to only the regions that will lead towards the destination. This is how we will generate paths in the fastest time possible.

UI is coded on a canvas in JavaFX. Code is not included in this repository.