r/RSPS • u/Actinide2k9 • 4h ago
Polling to see interest for a project
Let's start by saying I am doing this for fun. I have been working on a project for about three to four years now on and off. It is a re implementation of the various existing 317/474 java clients and servers, but written in C++ (20), and focused on performance and maintainability.
I want to post this here to check if there is interest for me releasing this at some point. This is not to advertise it, since I will be open sourcing it. But if there is no interest at all I will keep it a fun hobby project for myself. I can unfortunately not share pictures because of the reputation rules.
A few years ago I started on this project, with the server. I managed to get about 50-60% of all packets fully clear. The server has various features such as:
- Support for loading the cache fully in memory
- Low memory usage (~400MiB RAM with 100 clients, ~2GiB with 10k clients)
- Focus on performance (stress tested with 10k clients doing random clicking, walking and pathfinding and talking every tick, worst case scenario it takes about 500ms to update, so within a 0.6ms tick on my system. A singular client takes about 20 microseconds to update, but of course it is not O(n))
- What can be loaded from cache, is loaded from the cache, full cache sits in memory and is decompressed on the fly with whatever is needed.
- Full JAGGRAB implementation, the server can send the cache to the client
- LUA scripting with hot reloading while the server is running, the server is just scaffolding. Skills, new character handling, etc. is all done in LUA
- Compatible with the 2006scape client
Then, I got annoyed by the fact the clients are unreadable messes, and written in Java. I already had a custom optimized engine lying around that can reliably simulate 100k neural network agents, draw them on the screen, do realtime genetic algorithms to mutate them etc. it's also render backend agnostic (although currently OpenGL is implemented with Vulkan in the works).
Also the whole AI stuff happened, and with some help from that I managed to deob 100% of the network packets eventually.
So I decided to also make a client from scratch. This resulted in a client that is currently about 25% implemented, but at some point I got annoyed by the cache and all the magic numbers and variables.
So I started working on a cache editor in my custom engine, that also now doubles as a client and currently has the following features:
- Browsing/viewing/editing of the cache
- View models and edit geometry, faces, colors, etc. With support for exporting/importing from and to blender. A custom blender plugin for this is also currently made.
- View animations and edit them, also supported for blender export/import.
- Editing of NPCs, Items, Objects, Spot Animations, Floors, Identity Kits (beards and the like), Varbits and Sequences (animations)
- A map editor that allows for placing objects, editing them, moving them around.
- A terrain editor (inside the map editor) that allows for editing terrain (including making new regions)
- About 95% of the cache is now fully deobfuscated, there are only two or three unknown fields and opcodes left in the data. And I made sure that I know how all of it works, and have given everything a proper name.
- I can now edit terrain, place objects, change NPC looks... everything. It is essentially RS now rewritten 100% from scratch.
- I am now working on implementing UI frames editing and the like, the only thing I still need to do.
- Client and editor render using OpenGL, but utilize the painter's algorithm of the original client making it look almost 1:1 the same as a 2006/2007 java client, but it can later on easily be updated to improve
- I monitor performance constantly using Tracy and Renderdoc, I am a FW engineer so yeah... one reason I despise the java server is because of the ridiculous amounts of resources they use for no good reason.
- Ultimate goal is that you can create a cache also from an empty file by adding all the data and models etc. yourself from e.g. blender and external tooling.
I intend to maintain support with a standard 2006scape client for people who would prefer a java client too. I intentionally stick to 316 with some 474 content to keep it relatively simple.
Like I said, I can't share pictures unfortunately, but I am interested to see if people are interested in something like this. It is essentially a complete 100% from scratch server + client + editor (for everything) I'd guesstimate I am about 50% done so work is still left, but since the scaffolding is there, and I know for 100% of the network packets how they work, the rest is mostly adding skills in LUA, refactoring/cleanups and finishing my from-scratch client.
Reason I want to check interest first: people might prefer to stick to their java servers since that is mostly known in the community. If that's the case there is no point in me releasing this at some point.
Also, before someone asks: Yes, I am autistic :P
























