Play Now

2.10.0 - Quests, Dungeoneering & Webclient

Hope you're all having a good summer, I had a bit of a break but that hasn't stopped progress!

There's four new quests added by contributors; Ghosts Ahoy, Jungle Potion, Creature of Fenkenstrain and The Golem. That brings the quest total up to 20! Quite a milestone although plenty more to go (and actively on the way).



Pixel has been busy filling in content gaps like dwarf multi-cannon, ectofuntus, dragonfire shield special, spirit shield creation, mole part exchange and the evil chicken lair as well as bug fixes across the board, I also added a lot of Varrock museum.



We've also had some new contributors Volcanic and PrincessPotato who've been tweaking npc spawns to make them more accurate and adding new bot activities respectively.

I've also added a bunch of dungoneering to get it to a minimal playable state, for now this just means complexity 1 and frozen floors only, with a few monsters and one boss - Icy Bones. From here I'll gradually expand out the bosses, monsters, and start adding some of the skills, puzzle rooms but all in good time.




Now time for a story about a side-quest that I've been working on in the background for around the last 18 months.

As you all know runescape in 2011 was primarily a browser game up until the deprecation of java's applets in the browser due to security concerns, after a quick foray back into web with the not very long lasting HTML client in 2014. It's hard to say how much of runescapes success was due to it's ease of access and low hardware requirements but what's for certain is while RSPS used to have quite a big webclient scene it generally speaking never got a revival in a way the game used to be played. It has always been a thing I'd would've liked to see return.

So back in April 2025 I started wondering how feasible it would be to do and what the different options would be. There's been a few attempts over the years, famously Dane's blog rebuilding the whole client from scratch, a Unity project here or there which in theory could but nothing that was completed or high revision.
I started muddling around with Odin, a language I'd been curious to try and got a prototype working with raylib (a popular C game library) and did some basic ground work, cache reading, model rendering etc... but it became quite clear it would be a several year endeavour to complete and my Odin skills wasn't up to scratch, so I parked it.




Next up in December 2025 I heard CheerpJ (a browser Java virtual machine) was now supporting OSRS so I thought I'd give that a go, and it worked to a point. Meaning it was horrendously slow, at the time I described it as:

it works but it's x1000 slower than you'd want. Login took 5-10 mins, rendering is best measured in frames per minute.




But it showed it was possible at least. multi-platform?

And with a few weeks off over Christmas I began, it wasn't so bad but it was tedious. Convert java files in batches of 30 using IntelliJs Java-to-kotlin converter (any more and it crashes and it's not available standalone), tidy up all the mistakes (usually badly handled nullability), run and login to make sure nothing broke, and repeat 20 or so times to convert the ~700 client files. And so that's what I did for the next 6 days until it was completed with a few mistakes (image of broken DirectX) but nothing that couldn't be fixed up afterwards.



From there Fable 5 was recently released so I got a x20 max subscription and I threw it at the task of converting the project to Kotlin Multiplatform and low and behold.... it failed miserably. Got all mixed up trying to move a massive web of interdependent classes. I gave up.

Then jump forward to June I gave it another go, more manually this time, pulling out JVM dependencies, removing applets, vibed some code analysis tools to help untangle the mess, I did a few classes here and there for about a month until I got frustrated that it was taking so long as I had only moved 10% of the codebase.

Then last week I decided to take a different approach, rather than safely move one class at a time, why not just move all of the classes at once? Fix all the errors and anything that can't be fixed easily pull back-out into jvm land. And it worked surprisingly well, only took two days before I had a mostly multi-platform client, which still built and runs as a regular jar.

There was only one thing remaining. I fired up a new subscription of everyone's favourite subsidized AI model and got it to implement all the important JavaScript side things that the client needed:

  • Async instead of threads

  • Websockets (and proxy) instead of raw sockets

  • Storing cache in browser db not in a file

  • Audio

  • Browser input

  • Rendering on canvas

  • OpenGL instead of jaglibs


A few surprisingly annoying rendering bugs later and voila:



It's not quite ready yet; a few bugs remain, some bits not added, and it could do with some polish and performance improvements to be perfect but it's otherwise a pretty much fully functional 634 webclient. I'll likely be working with the 2011Scape guys to get this ship-shape and playable on their website in the coming weeks.

« Back to Dev Blog