Thread: [NXT] OpenNXT - Open-source RS3 NXT framework

Page 1 of 2 12 LastLast
Results 1 to 10 of 19
  1. #1 [NXT] OpenNXT - Open-source RS3 NXT framework 
    Registered Member

    Join Date
    Nov 2014
    Posts
    60
    Thanks given
    22
    Thanks received
    95
    Rep Power
    227
    Attached image
    Thanks, tousuki, for sending me a logo! I put the old logo in media below.

    Welcome to OpenNXT, the first RuneScape 3 server framework focused on everything NXT. After a few years of working on NXT I have decided to help the scene move forward by making a project hopefully unlike any other. One aim for the OpenNXT project is to be completely independent of other tools in the RSPS scene.

    OpenNXT aims to update as frequently as possible (without breaking content or hindering server progression) to stay up-to-date with RuneScape.

    If you have not checked out my tutorials and resources on NXT, I highly recommend you check them out before reading this post:


    Features / Completion
    Scroll down below for more information on some of these. I highly recommend you read the entire thread!

    Framework
    • Powerful CLI tooling system
    • Dynamic packet definition system
    • Js5 server
    • Built-in HTTP server
    • Built-in proxy server
    • Lobby
    • World login
    • Region updating (Rebuild normal)
    • Region updating (Rebuild dynamic)
    • Player info packet
    • Npc info packet
    • Anything content related.

    Once the framework is at a point where content can be worked on, I will update the list above.

    Tooling
    • Client downloader Code
    • RSA key generator Code
    • Client/Launcher patcher Code
    • Cache downloader Code
    • Cache editor
    • NPC spawns dumper


    Other
    • Tutorial: "How to update OpenNXT to latest version"
    • Tutorial: "How to identify packet data structures in the NXT client"
    • Creating Github Wiki and and mirroring my tutorials


    Features - In-depth
    This list might not contain all features OpenNXT has to offer. If something is missing please let me know so I can document it.

    Powerful CLI tooling system
    Gone are the days of 50 Main files. Gone are the days of weird config values being hardcoded in the server. Gone are the days where you need 10 different Intellij tabs open to develop one RSPS.

    OpenNXT has one Gradle project with one main, and everything is bundled in it. You only need one Intellij window open to get started with OpenNXT. From client downloading and cache downloading to dumping anything from RuneScape, everything is accessible through one main.

    To achieve this, a mixture of classpath scanning (To detect tools) and Clikt (A CLI library) are used. Simply run "./server --help" for command usage! It's that simple.

    Dynamic packet definition system
    OpenNXT has a super-simple packet definition system, allowing you to quickly and easily upgrade or downgrade versions without changing a lot of the source code. Every packet supporting this system has a simple text file in the repository with the packet structure written in plaintext. It's really as simple as that. In the future, these definitions will be hot-reloadable, to support even more awesome features.

    Here is an example of the VARP_LARGE packet definition in 918:
    Code:
    id ushortle
    value intle
    Js5 server
    The built-in Js5 server and cache library automatically handle the following for you:
    • Prefetch table generation (aka "Grab" keys). There's sadly a small issue in one of the prefetches that causes the client to display an "incomplete" cache state. Of course I will fix this. Soon TM (meaning: never).
    • Checksum table generation and encryption.
    • Serving the music index and checksum table over HTTP.


    Built-in HTTP server
    The built-in http server serves all client files (jav_config.ws and binaries) as well as the js5 protocol. No need to mess around with Apache/Nginx and running into http headers or content type issues.

    Built-in proxy server
    This is the, in my opinion, main selling point of OpenNXT.

    As most people involved in the RS3 scene know, the Java client has unfortunately been discontinued. Many people used this to dump data from RuneScape (eg. adding System.out.println to all packet decoders, then playing the game). You can't really do this with NXT. The only option would be memory reading or injecting hooks, but that's all very difficult. To avoid the RS3 scene coming to a grinding stop, I have implemented a very cool feature, which is the proxy.

    The proxy is essentially a headless RuneScape client. When you start the server with the "--enable-proxy-support" flag, the server will enable everything it needs to proxy your local connection to RuneScape. If your login meets the requirements for a proxy connection (I'm going to add an username whitelist in the future), the server will open a connection to RuneScape in the background. If the connection to RuneScape succeeds, the server will pass packets on from your client to RuneScape's live servers (and vice-versa). Packets that can be decoded can then be handled to dump data from RuneScape. This allows you to play the game now, and when you want to work on your RSPS, you can implement anything you did on real RuneScape!

    Currently the proxy only functions in the lobby.

    Long story short: You connect to server. Server connects to RuneScape. Server sniffs data between your client and RuneScape. You can use this data to make new content.

    Spoiler for Proxy lobby media / proof:

    Attached image


    Client downloader / patcher & RSA key generator
    Client downloader downloads all of the clients for the current game version.
    RSA key generator generates RSA keys you can use. You only have to do this once. If you re-run this, old launchers won't work with newly-patched files.
    Client patcher patches the clients and launcher based on the RSA keys generated by the tool above.

    Cache downloader
    Simply downloads the cache, but it's multithreaded and has a few big bugs such as randomly spitting out a billion errors. Have fun fixing it, I just restarted every time it happened, and it worked fine.

    Tbh I don't know if it's faster than RSCD, but I managed to cap my internet connection (250mbps) with 3 js5 threads and 8 http workers, I was bottlenecked on disk I/O. But it's bundled so hey, can't complain right!

    Other
    I might add/remove/edit the above section to reflect the features that stand out the most.

    Source code
    The source code is fully licensed under GPLv3 and can be found on my GitHub profile. Fork, watch, star and PR away!

    Credits
    Without the contributions
    • All contributors on the GitHub repository, for their obvious contributions to the project.
    • Everyone who motivated me to work on RSPS and NXT or who I talked with about RSPS. While I cannot remember everyone, here's a few: velocity, Log, Daron, woahscam, Ceikry, Kermit, Summer, ARMAR X K1NG, freeezr, Tommeh, Displee and more
    • Cjay0091 for Matrix. While OpenNXT is written from scratch, it does/will contain code inspired by Matrix.
    • Displee for his cache library. While OpenNXT's cache library is written by me, I took some inspiration from Displee's cache library.
    • Velocity, Cube and all other contributors of the Great NXT Beta Dump Thread



    Media
    There is not a lot of media yet because essentially it's a bunch of framework and tools now.

    Spoiler for Media - more will be added in the future:

    World login!
    Attached image

    Old logo since people liked it
    Attached image
    i need a project logo
    OpenNXT - Open-source RS3 NXT framework
    Moving RS3 RSPS forward one commit at a time

    NXT client boots to login screen using only built-in tools:
    Attached image


    Small preview of the tools CLI
    Attached image


    Proxy intercepting lobby packets and dumping them to the console
    Attached image
    Reply With Quote  
     


  2. #2  
    Registered Member woahscam's Avatar
    Join Date
    Aug 2013
    Posts
    14
    Thanks given
    5
    Thanks received
    11
    Rep Power
    13
    Amazing work! Hopefully this brings everyone together to create something awesome.
    Reply With Quote  
     

  3. #3  
    WVWVWVWVWVWVWVW

    _jordan's Avatar
    Join Date
    Nov 2012
    Posts
    3,046
    Thanks given
    111
    Thanks received
    1,848
    Rep Power
    5000
    Good luck!
    Attached image
    Attached image
    Reply With Quote  
     

  4. #4  

    → Cheap Animated Banners ←



    Zexillium's Avatar
    Join Date
    Dec 2011
    Posts
    2,780
    Thanks given
    1,174
    Thanks received
    1,155
    Rep Power
    3284
    Best of luck. Hopefully, people contribute to this rather than try to take advantage of it.
    New Discord is 'zexillium'
    ↓ PROUD SUPPORTER OF ↓

    Attached image

    --> See My Animated Banner Shop <--
    Reply With Quote  
     

  5. #5  
    Registered Member

    Join Date
    Nov 2014
    Posts
    60
    Thanks given
    22
    Thanks received
    95
    Rep Power
    227
    Quote Originally Posted by _jordan View Post
    Good luck!
    Thanks!

    Quote Originally Posted by SilverNova View Post
    Best of luck. Hopefully, people contribute to this rather than try to take advantage of it.
    Thanks!

    I think people will take advantage regardless. I just hope that people contribute one way or another if they use anything from this project though. I released this since I don't see myself hosting a RSPS, but I know a thing or two about NXT. Might as well see if this can move the RS3 scene forward a bit
    Reply With Quote  
     

  6. #6  
    Registered Member
    Join Date
    May 2011
    Age
    29
    Posts
    2,246
    Thanks given
    2,469
    Thanks received
    1,120
    Rep Power
    943
    12/10 logo
    sick ass project my man
    Reply With Quote  
     

  7. #7  
    Extreme Donator


    Join Date
    Apr 2019
    Posts
    332
    Thanks given
    140
    Thanks received
    167
    Rep Power
    1248
    bump, simply because it hasn't had the credit it deserves yet
    Reply With Quote  
     

  8. #8  
    Christ is King

    Makar's Avatar
    Join Date
    Jul 2011
    Age
    29
    Posts
    2,004
    Thanks given
    545
    Thanks received
    965
    Rep Power
    427
    Finally an innovative project worth following.
    Attached image
    The best open-source pre-eoc remake project that isn't in its early stages for once
    Darkan Client (727 Client Refactor)
    Darkan World Server
    “It would not be impossible to prove with sufficient repetition and a psychological understanding of the people concerned that a square is in fact a circle. They are mere words, and words can be molded until they clothe ideas and disguise.”
    Reply With Quote  
     

  9. #9  
    Chemist

    Advocatus's Avatar
    Join Date
    Dec 2009
    Posts
    2,622
    Thanks given
    201
    Thanks received
    813
    Rep Power
    1462
    Interesting approach to packet decoding. Unless I missed something, the system could be more fleshed out to actually generate the boilerplate code for the codecs rather than having this weird map shenanigans. Saifix had done a project similar awhile back and there was another project in here that was messing with protobuf.
    Quote Originally Posted by blakeman8192 View Post
    Quitting is the only true failure.
    Reply With Quote  
     

  10. #10  
    Registered Member

    Join Date
    Nov 2014
    Posts
    60
    Thanks given
    22
    Thanks received
    95
    Rep Power
    227
    Quote Originally Posted by Scythe View Post
    bump, simply because it hasn't had the credit it deserves yet
    Thanks

    Quote Originally Posted by Makar View Post
    Finally an innovative project worth following.
    Yeah. I've been very busy with work but still intend on going on with this project. So updates might come a bit slow

    Quote Originally Posted by Advocatus View Post
    Interesting approach to packet decoding. Unless I missed something, the system could be more fleshed out to actually generate the boilerplate code for the codecs rather than having this weird map shenanigans. Saifix had done a project similar awhile back and there was another project in here that was messing with protobuf.
    I think it's possible to generate the bytecode automatically based on the packet definitions. However, since I wanted to get a working prototype as soon as possible, I just went with what worked. The advantage of this approach is that you don't have to write both the encoder and decoder for every packet, you just have to write the packet structure and it's done.
    Reply With Quote  
     

Page 1 of 2 12 LastLast

Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. Replies: 4
    Last Post: 06-10-2020, 08:04 PM
  2. Replies: 81
    Last Post: 10-23-2011, 10:05 PM
  3. Replies: 5
    Last Post: 08-10-2011, 10:45 AM
  4. Replies: 0
    Last Post: 05-20-2011, 10:38 PM
  5. meow open-source framework
    By Lazaro in forum Projects
    Replies: 30
    Last Post: 08-29-2009, 12:46 AM
Tags for this Thread

View Tag Cloud

Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •