Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Laniax

AdvancedWalking - next gen navmesh pathfinder/walker. [Source]

Recommended Posts

I've been really interested in this project as of late and I have been thinking about it a lot. I've been using parts of it too in order to satisfy some needs like for example checking if the next tile has a gate, or wall.

There are a couple questions I wanted to ask you about this project:

  1. How often do you find yourself using AdvancedWalking or parts of it?
  2. WebWalking is independent. AdvancedWalking requires nav-meshes. What is the best method to programmatically build nav-meshes? (You touch on this in the OP about XTEA keys being sent to the client, but I'm looking for you to elaborate)

Share this post


Link to post
Share on other sites

 

I've been really interested in this project as of late and I have been thinking about it a lot. I've been using parts of it too in order to satisfy some needs like for example checking if the next tile has a gate, or wall.

There are a couple questions I wanted to ask you about this project:

  1. How often do you find yourself using AdvancedWalking or parts of it?
  2. WebWalking is independent. AdvancedWalking requires nav-meshes. What is the best method to programmatically build nav-meshes? (You touch on this in the OP about XTEA keys being sent to the client, but I'm looking for you to elaborate)

 

 

Thanks for your interest! I get a lot of messages from people with questions regarding to AdvancedWalking and is a good motivation to not let the project slack :)

To answer your questions;

 

1. I've written a few parts specifically for AdvancedWalking, the Logging comes to mind, i needed a log system allowed me to have multiple outputs and also debug it more precisely even if it is later implemented inside other people's scripts. That code later transferred into my personal API and has been implemented in all of my scripts. In some personal scripts i use AdvancedWalking if the area i am navigating isn't big as well.

 

2. The mesh will make or break this system. And thus generating it takes a lot of care. As you might know, currently a mesh can be generated by running around with a script in-game, but realisticly the 'base' mesh of the entire world could be extracted from the RS cache that jagex leaves on your computer when you play runescape. Jagex caches the world map files in there so it doesn't have to keep sending them from the server. That cache is encrypted though, and requires XTEA keys to decrypt. These keys are normally send to the client (typically in the 'loading please wait' messages) and can be intercepted and used to decrypt the data ourselves. In the private server/modding community this is a common thing to do, but they generally work with older versions of the cache where all the keys are known already. @TRiLeZ extracts these keys to develop tribot, most likely to read other data from the cache (there is more then just map data in there :)). Although there will always be manual work involved, linking the two ends of stairs together or the two ends of a cave entrance etc. That's why i am currently writing a script that will allow everyone to run around in game to map everything, including stairs/shortcuts etc and have that data send back to my servers, i will also be capturing reactions times and moving behaviour so that i will be able to implement that in the walking engine.

Share this post


Link to post
Share on other sites

Thanks for your interest! I get a lot of messages from people with questions regarding to AdvancedWalking and is a good motivation to not let the project slack :)

To answer your questions;

 

1. I've written a few parts specifically for AdvancedWalking, the Logging comes to mind, i needed a log system allowed me to have multiple outputs and also debug it more precisely even if it is later implemented inside other people's scripts. That code later transferred into my personal API and has been implemented in all of my scripts. In some personal scripts i use AdvancedWalking if the area i am navigating isn't big as well.

 

2. The mesh will make or break this system. And thus generating it takes a lot of care. As you might know, currently a mesh can be generated by running around with a script in-game, but realisticly the 'base' mesh of the entire world could be extracted from the RS cache that jagex leaves on your computer when you play runescape. Jagex caches the world map files in there so it doesn't have to keep sending them from the server. That cache is encrypted though, and requires XTEA keys to decrypt. These keys are normally send to the client (typically in the 'loading please wait' messages) and can be intercepted and used to decrypt the data ourselves. In the private server/modding community this is a common thing to do, but they generally work with older versions of the cache where all the keys are known already. @TRiLeZ extracts these keys to develop tribot, most likely to read other data from the cache (there is more then just map data in there :)). Although there will always be manual work involved, linking the two ends of stairs together or the two ends of a cave entrance etc. That's why i am currently writing a script that will allow everyone to run around in game to map everything, including stairs/shortcuts etc and have that data send back to my servers, i will also be capturing reactions times and moving behaviour so that i will be able to implement that in the walking engine.

About #2 that is really cool about having a master store for all of this information from the scripts since right now we don't have a dynamic way to get the data from the XTEA keys. It would be much easier to implement AdvancedWalking if it could dynamically pull the needed mesh from your server as we're encountering new areas-- maybe, if you're not already on your way to doing so, we could bridge the mapping script to the AdvancedWalking engine to allow it to work as a service of the engine itself and communicate with the server in real time to perform checks to see if a server's mesh block needs updated. This would presumably slow things down but I haven't a clue by how much, but if it's done in small enough portions like blocks then maybe it could be manageable?

Keep us updated and let me know if you need an extra hand~

Share this post


Link to post
Share on other sites
18 hours ago, some0ne said:

is this actually working?

It is not scripter ready. The pathfinding works, but is still being improved upon. Also, no 'mesh' of the world is currently available, since i am still constantly changing the data inside it. But i got a few projects running and have to plan split my attention accordingly :)

  • Like 1

Share this post


Link to post
Share on other sites

The project has been separated into 3 parts. 

 

We now have a main AdvancedWalking repository that scripts can use (when it's done). This contains absolutely no code regarding the creation of the navmesh, since that data will be downloaded and kept up-to-date instead.

https://github.com/Laniax/AdvancedWalking

 

Then we have the Generator. This project takes runescape tile/map data as input, and poops navmesh data as output. This is the data that the main repository will download. As a scripter you do not need this inside your script, hence why it has been separated.

https://github.com/Laniax/AdvancedWalking-Generator

 

Then we have the Collector. This is a script that can run inside the game to collect tile/map data (WIP). In other words, this project will collect the input data for the Generator.
As a scripter you do not need this inside your script, hence why it has been separated.

https://github.com/Laniax/AdvancedWalking-Collector

Edited by laniax

Share this post


Link to post
Share on other sites

@laniax is this project still in development? This is a revolutionary approach to walking which is the weakest point in almost any OSRS bot currently. Having a walking tool as dynamic as this could really improve the banrate on many scripts and give Tribot an even bigger lead over other clients.

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Our picks

    • This release will:

      Fix prayers and world hopper API (Thanks @JoeDezzy1 and @erickho123)


      Improve banking API (Thanks @Encoded)


      Adds methods for returning and using Java Lists, rather than arrays


      Slightly randomizes some hardcoded behaviour


      Removes sleeps from waitConditions; the efficiency saving potential is negligible in these use-cases, therefore cleaner code is preferable


      Other back-end improvements





      Note: If you are using LG, please restart both the RS client and TRiBot.
        • Sad
        • Haha
        • Thanks
        • Like
      • 61 replies
    • This release will:

      Add new internal framework for capturing exceptions


      Fix issue with not selecting the last column in world hopper (Thanks @Todd)


      Add a message about pin usage in Banking#openBank (Thanks @Todd)


      Disable the firewall by default (Thanks @Todd)


      Fix handling of the welcome screen after login (Thanks @Encoded)


      Fix wrong amount bank withdrawal (Thanks @Encoded)


      Fix Screen#isInViewport


      Fix Game#isInViewport (Thanks @Encoded)


      Call onBreakEnd for ListenerManager Breaking Listeners (Thanks @Encoded)


      Fix Prayer#getPrayerPoints NumberFormatException (Thanks @JoeDezzy1)



      Note: If you are using LG, please restart both the RS client and TRiBot.
        • Thanks
        • Like
      • 28 replies
    • This release will:

      Fix LG for both OSBuddy and RuneLite


      Fix issue where the resizable client isn't able to be made smaller (Thanks @JoeDezzy1)


      Fix detection of the logout game tab when resizable mode and side panels are enabled (Thanks @JoeDezzy1)


      Add initial support for Sentry to allow us to identify and easily debug exceptions happening with all TRiBot users


      Add methods to determine if the bank is actually loaded, and not just the overarching interface (Thanks @wastedbro)



      Upcoming updates:

      Improved CLI support


      Full Sentry support


      Much more
        • Like
      • 64 replies
    • This release will:

      Fix NPE in Camera API (Thanks @wastedbro)


      Update deposit box interface ids (Thanks @Encoded)


      Add various bank methods (Thanks @wastedbro)


      Banking#getWithdrawXQuantity


      Banking#getDefaultWithdrawQuantity


      Banking#arePlaceholdersOn




      Fix resizeable minimap bug (Thanks @wastedbro)


      Remove Java 8 requirement


      Please note: TRiBot is not yet fully compatible with Java 10+




      Fix the break handler issues by ensuring the break handler thread never gets paused


      Fix broken settings hooks



      Upcoming updates:

      Improved CLI support


      Much more



      Note: If you are using LG, please restart both the RS client and TRiBot
        • Like
      • 68 replies
    • This release will:

      Add support for using custom F key bindings to switch between game tabs (Thanks @erickho123)


      Fix tab opening for "Skills" and "Kourend Tasks" (Thanks @erickho123)



      Note: If you are using LG, please restart both the RS client and TRiBot
        • Like
      • 34 replies
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...