Old School Runescape Developments

Preface: This page outlines a programming hobby, not the work for a commercial company

Overview

I began programming at the age of 13. I owe the video game Runescape all the credit for the programmer I am today. The game itself drove me to push so many limits with my programming skills throughout the years and even to this day. It has taught me that nothing was impossible in the realm of programming. If you want to get something done, then do it. In the past 11 years I have been a part of numerous open and closed source Runescape development projects.

Runescape private sever (2009-2015)

I operated and developed a Runescape Private Server (similar to a Minecraft server) from 2009 to 2015. At the peak of this adventure, the game had roughly 900 to 1000 players on at any given time. During this period I was in charge of every aspect of the server: development, testing, publishing, marketing & advertisement, community management, and player support. I had a good amount of help in the community management and player support area, but definitely dipped my toe in every part of the process.

Unlike Minecraft servers, Runescape is not open source and does not provide any sort of plugin system. A private server required immense knowledge of the game client, heavy understanding of reverse engineering, and understanding of the game's network protocols. This sometimes made updates to the server difficult, but it was definitely an excellent challenge for me.

Reverse Engineering and Refactoring

In 2014 I began a project to release an open-source, fully reverse engineered, and refactored Oldschool Runescape game client.

This project required the following skills:

  • The ability to read & interpret the flow of control for a program that was fully obfuscated.

  • Pattern recognition to discover and identify portions of code and understand why they belonged in the client.

  • A strong knowledge of Java (the client's native language)

  • Strong debugging and problem-solving skills to overcome a number scenarios with the client breaking as I did this process.

This project alone taught me a very valuable skill: the ability to read and understand anyone's code. This was very useful in later projects in my career that used libraries with faulty errors or misbehaviors as I was able to debug and fix the problems in the libraries themselves.

Runescape File/cache System

One of the projects I have recently worked on in my free time is a tool that takes the Runescape file system (which was made internally by Runescape) and converting the data to a SQL database. The Runescape file cache is a group of binary files organized by type(item, npc, object, map/terrain, image, model, sound, etc..). The tool pulls all of this information and inserts them into SQL tables.

Along with this I have made various tools for dumping data from the live game such as npc spawns, ground item spawns, shops, etc..

Combining the data into a SQL database allows for very useful lists to be queried and generated such as all ways to obtain an item in region X (through the shops, spawns, npc drops, etc.. located in region X).

This project required the following skills:

  • Working with JetBrain's Exposed: and ORM framework for Kotlin.

  • Strong knowledge of MySQL.

  • The ability to manipulate the live game client to dump useful data while logged into the game.

  • A good understanding of Runescape's custom file system along with the individual protocols of each file type.