OSRS ELI5 why is Runelite integration so complicated for OSRS deobs?

Jan 7, 2015
196
7
0
I've played a bunch of servers using a OSRS deob client and it always caught my eye the fact that Runelite integration is always different from server to server. Some have different plugins, some have half-working plugins, etc.

I always imagined that if you're using an OSRS deob runelite integration would be seamless since its basically the real client with minor modifications to make it connect to your server. Clearly this isn't the case so, can someone explain to me the obstacles one goes through when integrating runelite to their PS client?
 
by nature, some runelite plugins will rely on information sent by the server. this can be in the form of chatbox messages, varps, animations and so on. the plugins expect these states to be the same as they would be when received from osrs. even just having the "type" of chatbox message incorrect can lead to some plugins not working as intended.
 
by nature, some runelite plugins will rely on information sent by the server. this can be in the form of chatbox messages, varps, animations and so on. the plugins expect these states to be the same as they would be when received from osrs. even just having the "type" of chatbox message incorrect can lead to some plugins not working as intended.

That makes total sense, but what about those plugins that (in theory) should be purely client-side like GPU and 117HD?

I've seem a lot of variations across server clients on the HD plugin and non-working features (fps unlock is one ive seen not working in many servers or directly removed from the settings)
 
That makes total sense, but what about those plugins that (in theory) should be purely client-side like GPU and 117HD?

I've seem a lot of variations across server clients on the HD plugin and non-working features (fps unlock is one ive seen not working in many servers or directly removed from the settings)

those plugins should work ootb with any real osrs/runelite client. the only time that may be untrue is for non-osrs servers (even though they may look like osrs) that try to port runelite functionality.

also worth noting that some servers may modify the 117HD plugin source code to add support for custom/specific areas to fit their needs. at that point the plugin may become outdated if they dont constantly update it with any 117HD changes.
 
There are really three ways people do RuneLite integration nowadays:
1) "Non-deob" servers, these may look and feel pretty close to OSRS but aren't actually OSRS bases, plenty of 317s and even some other revisions have done their best to try and port RL over.
2) True OSRS servers, the correct way through injection. Servers like Zaros do it this way.
3) True OSRS servers, the incorrect way. An example of this would be Zenyte, where the client was made by decompiling a built RuneLite. This has some pros and cons - easier to change the client code as now you don't have to deal with injection, but worse when trying to upgrade to a newer revision.

It doesn't help that RuneLite is constantly changing, there are several noticeable changes if you compare it to just half a year ago. A lot of servers go 6-12 months between revision ugrades, some even longer(Zenyte... 51 months and counting, lol).
But yeah what Tomm said above regarding RL relying on information from the server - this is often extremely fragile, even miniscule details like the order of packets received matters, and let's be real - a lot of servers aren't "emulating" RS to that extent, they hardly even follow the same game messages, which also breaks everything.

Oh and not all servers are using true RuneLite, a lot of them rely on OpenOSRS(RIP) or forks of OpenOSRS/RL, each of which may have their own look and feel to it.
 
There are really three ways people do RuneLite integration nowadays:
1) "Non-deob" servers, these may look and feel pretty close to OSRS but aren't actually OSRS bases, plenty of 317s and even some other revisions have done their best to try and port RL over.
2) True OSRS servers, the correct way through injection. Servers like Zaros do it this way.
3) True OSRS servers, the incorrect way. An example of this would be Zenyte, where the client was made by decompiling a built RuneLite. This has some pros and cons - easier to change the client code as now you don't have to deal with injection, but worse when trying to upgrade to a newer revision.

It doesn't help that RuneLite is constantly changing, there are several noticeable changes if you compare it to just half a year ago. A lot of servers go 6-12 months between revision ugrades, some even longer(Zenyte... 51 months and counting, lol).
But yeah what Tomm said above regarding RL relying on information from the server - this is often extremely fragile, even miniscule details like the order of packets received matters, and let's be real - a lot of servers aren't "emulating" RS to that extent, they hardly even follow the same game messages, which also breaks everything.

Oh and not all servers are using true RuneLite, a lot of them rely on OpenOSRS(RIP) or forks of OpenOSRS/RL, each of which may have their own look and feel to it.

Thank you for the answer, that was super informative

I wasn't aware of option 3, that makes a lot of sense. Usually I look at the settings interface and assume its a true OSRS deob if it uses the modern modal settings
 
Thank you for the answer, that was super informative

I wasn't aware of option 3, that makes a lot of sense. Usually I look at the settings interface and assume its a true OSRS deob if it uses the modern modal settings

That's just a matter of the revision. Somewhere in the 180s(iirc, might've been 190s) they introduced the interface. Most servers after that revision now use it. Has nothing to do with RL itself.
 
That's just a matter of the revision. Somewhere in the 180s(iirc, might've been 190s) they introduced the interface. Most servers after that revision now use it. Has nothing to do with RL itself.

Thats true! But what I meant is that if that modal interface is there it clearly isn't a 317 pretending to be an OSRS client
 
Thats true! But what I meant is that if that modal interface is there it clearly isn't a 317 pretending to be an OSRS client

That's fair, although there are countless much easier ways of determining that, lol. The biggest and probably most noticeable is interfaces loading up over multiple client frames, not instantly as it is in OSRS. That screams 317(or in some extreme cases, poorly managed OSRS). Having a functional world map is also something I've not seen any non-OSRS server pull off, something that takes no effort whatsoever on OSRS bases.
 
Just to shed some additional light on this topic as I was able to successfully integrate RuneLite into a 317 base client the proper way (through injection as mentioned by Kris above) - there are three major issues that prevent your standard non-OSRS/317 client from being "drag and drop" compatible with RuneLite.

The first is the one that was already mentioned which was to do with the root interface or gameframe. In 317, immediately after login the game canvas starts to be drawn. However this "canvas" is completely rasterized manually as opposed to using sprites when the interface system was introduced. This has to be accounted for as RuneLite relies on always having a non-volatile canvas that it can pull the game image from (which does not exist in 317)

The second is the variables actually present in the client. A lot of RuneLite and the plugins rely on "hooks" which are injected into the OSRS gamepack at launch through the use of "mixins". These hooks are typically mapped to specific obfuscated values that are identified through bytecode patterns (in a similar way that automatic deobfuscators function) Because 317 clients are so old and in many cases messy, a lot of these variables do not exist or are deobfuscated incorrectly, leading to a lot of confusion when attempting to implement things or functions just not working properly.

The third is being able to account for the core differences between the rendering order of OSRS (which has multiple layers) drawn at different points of the rendering cycle. In 317, the drawing is done very haphazardly because at that time, it didn't matter to RS when an inventory item was drawn as long as it was after the inventory was drawn. The same applies for placing/rendering entities in the scene. In contrast, in OSRS, the rendering follows a very specific order (root interface -> widgets/modals -> game scene -> game scene entities -> top level/walkable interfaces)

When it comes to updating RL revisions, best practice (from my experience) would be to start at the API and work your way out, but it takes a lot of time and in some cases it just outright will break things.

I constantly read through the bug reports related to the specific RL implementation I did which often sound like your original question (why can't it just be an easy port) and every single day I want to bash my head against a wall thinking the exact same thing.
 
Just to shed some additional light on this topic as I was able to successfully integrate RuneLite into a 317 base client the proper way (through injection as mentioned by Kris above) - there are three major issues that prevent your standard non-OSRS/317 client from being "drag and drop" compatible with RuneLite.

The first is the one that was already mentioned which was to do with the root interface or gameframe. In 317, immediately after login the game canvas starts to be drawn. However this "canvas" is completely rasterized manually as opposed to using sprites when the interface system was introduced. This has to be accounted for as RuneLite relies on always having a non-volatile canvas that it can pull the game image from (which does not exist in 317)

The second is the variables actually present in the client. A lot of RuneLite and the plugins rely on "hooks" which are injected into the OSRS gamepack at launch through the use of "mixins". These hooks are typically mapped to specific obfuscated values that are identified through bytecode patterns (in a similar way that automatic deobfuscators function) Because 317 clients are so old and in many cases messy, a lot of these variables do not exist or are deobfuscated incorrectly, leading to a lot of confusion when attempting to implement things or functions just not working properly.

The third is being able to account for the core differences between the rendering order of OSRS (which has multiple layers) drawn at different points of the rendering cycle. In 317, the drawing is done very haphazardly because at that time, it didn't matter to RS when an inventory item was drawn as long as it was after the inventory was drawn. The same applies for placing/rendering entities in the scene. In contrast, in OSRS, the rendering follows a very specific order (root interface -> widgets/modals -> game scene -> game scene entities -> top level/walkable interfaces)

When it comes to updating RL revisions, best practice (from my experience) would be to start at the API and work your way out, but it takes a lot of time and in some cases it just outright will break things.

I constantly read through the bug reports related to the specific RL implementation I did which often sound like your original question (why can't it just be an easy port) and every single day I want to bash my head against a wall thinking the exact same thing.

Wow again another super informative response, big thanks

Yeah, I never imagined porting RL to a 317 or anything other than OSRS would be easy, I'm surprised its actually possible and that people go push through and make it work

Is there a repo for the implementation you did? I'm really not interested in non-OSRS clients but I guess I may learn something from poking around your code. Also, how did you get to knowing the client and rendering process so well? Are there any resources I could read on that or does it just come down to personally playing with the code?
 
That's fair, although there are countless much easier ways of determining that, lol. The biggest and probably most noticeable is interfaces loading up over multiple client frames, not instantly as it is in OSRS. That screams 317(or in some extreme cases, poorly managed OSRS). Having a functional world map is also something I've not seen any non-OSRS server pull off, something that takes no effort whatsoever on OSRS bases.

Resizable interfaces (depending on screen size) like the bank interface is another great way of telling if it's an actual OSRS server.
 
Resizable interfaces (depending on screen size) like the bank interface is another great way of telling if it's an actual OSRS server.

Had no idea bank interface reacts to screen size :o

There are really three ways people do RuneLite integration nowadays:
1) "Non-deob" servers, these may look and feel pretty close to OSRS but aren't actually OSRS bases, plenty of 317s and even some other revisions have done their best to try and port RL over.
2) True OSRS servers, the correct way through injection. Servers like Zaros do it this way.
3) True OSRS servers, the incorrect way. An example of this would be Zenyte, where the client was made by decompiling a built RuneLite. This has some pros and cons - easier to change the client code as now you don't have to deal with injection, but worse when trying to upgrade to a newer revision.

It doesn't help that RuneLite is constantly changing, there are several noticeable changes if you compare it to just half a year ago. A lot of servers go 6-12 months between revision ugrades, some even longer(Zenyte... 51 months and counting, lol).
But yeah what Tomm said above regarding RL relying on information from the server - this is often extremely fragile, even miniscule details like the order of packets received matters, and let's be real - a lot of servers aren't "emulating" RS to that extent, they hardly even follow the same game messages, which also breaks everything.

Oh and not all servers are using true RuneLite, a lot of them rely on OpenOSRS(RIP) or forks of OpenOSRS/RL, each of which may have their own look and feel to it.

Hey going back to this,

Are there any relatively modern released bases/clients that tackle runelite the "proper" way (2nd option)? ideally something no older than 2 years

I've been looking around and so far all I've found make use of OPRS for client, which I understand is a fairly outdated fork of runelite
 
Had no idea bank interface reacts to screen size :o



Hey going back to this,

Are there any relatively modern released bases/clients that tackle runelite the "proper" way (2nd option)? ideally something no older than 2 years

I've been looking around and so far all I've found make use of OPRS for client, which I understand is a fairly outdated fork of runelite

RuneLite is private. People would have to maintain their own fork.
Most servers nowadays use clients such as Devious(OpenOSRS continuation) or MeteorLite, however the latter was recently discontinued.
Alter is probably your best bet for a recent pure-OSRS server.
 

Users who are viewing this thread (total: 1, members: 0, guests: 1)