As described by Jagex: Developer Blogs are articles by Jagex Moderators that describe the processes behind the development of RuneScape. We hope to replicate these articles by shedding insight into the perspective from a developer point-of-view of HDOS.
HDOS is an entirely standalone client, as opposed to other third-party clients that work via 'client injection' — modifying the binary code of the official Jagex client. Modifications to the game engine can be performed because the client is written independently of the official Old School RuneScape client. HDOS uses a newer, more modern engine than Oldschool RuneScape: RuneTek 4, instead of the older RT3 engine. With this in mind, unique features and capabilities can be performed, and bugs can be encountered that would otherwise not exist on other approved clients.
This client was among the first clients to receive Jagex's approval, alongside RuneLite.
Development of HDOS had officially begun on 8 May 2020, taking the official 530-revision client as a base. The majority of the client's core has been carefully refactored and structured, allowing for easier modifications and additions as if it was Jagex working on the engine back in 2008 and beyond.
Capabilities
Although the engine base is RuneTek 4, it has been heavily modified to allow for newer features:
Oldschool RuneScape updates
Modern skeletons from Raids 3 and Wilderness bosses
Oldschool backports and compatability
High-detail textures
Pointlights, HDR (bloom), shadows
Animation improvements
Distance fogging and sky colour
Ground/Path-blending and smoothing
Underwater visibility
Particle effects, billboards and magnets
Backported restores
Sky boxes
Custom modifications
Improving performance
Inheriting the old tek led to some challenges. The old fixed pipeline and rendering techniques used by the engine (while great for its time) were becoming more deprecated over time, meaning GPU vendors were phasing them out and they were becoming slower and slower over time. It was nearly required for us to solve this problem. We wanted as many users to enjoy the client without needing good or even decent hardware; any hardware within the last 10 years was the aim. The high performance on higher-end systems (500 FPS) translates to usable (30-50 FPS) performance on lower-end systems. With that said, some of the modifications we have done are as follows:
Migrated the fixed pipeline (~GL 2.1) to programmable shaders (GL 3.1)
Added multithreading to better utilize hardware (old and new)
Migrate from JOGL to LWJGL
Unlocked the update rate and draw rate from 50 FPS to 500 FPS
This provides a smoother experience to help bring out the details
Use floating points to better utilize the higher fps and smooth things out
movements, animations, camera, projectiles, etc.
The requirements to run HDOS are roughly:
Any GPU that supports OpenGL 3.1+
1 GB of VRAM (depending on screen resolution)
1 GB of RAM
Other customizations
Some other modifications we've worked on:
Plugins (The RLS — RuneLite Subsystem)
Remasters and area overhauls
Dynamic lighting and custom shaders (unreleased)
Extended view distance
Increased click distance and improved pathfinding performance
Restored, or remastered?
To start, we will be taking a look at the main feature of HDOS: Restoring and remastering. These are recurring terms that we use to describe the process in which we upgrade specific content within the project. If you are reading this blog and have not yet seen our videos that beautifully demonstrate the two, then you should!
Restoration
Restoring content means bringing back what once was and making it compatible if necessary. This content often cannot be copy-and-pasted over freely; careful work goes into rebuilding areas to ensure the gameplay still reflects oldschool. The complexity of these restorations can vary greatly — something we will be diving into in future blogs.
Map restore: A restore of the map configuration and its assets of a specific area.
Atmospheres
Lights
Rebuilding areas around old-school gameplay
Asset restore: A direct restore of an item, object, npc or graphic, such as armour.
Backporting: A restore that does not inherently exist within our clients cache. A newer revision of the cache (2009-2011) is inserted into the HD cache. Sometimes engine modifications have to be performed to make this compatible.
Lumbridge was one of the first areas to be restored. Although the area wasn't restored in the early stages of the client, it still showed a visual representation of HD. This is thanks to our methods of automatically upgrading assets: auto-upgrading. However, this will only work if the assets existed in both 2007's release and the 2009 client HDOS is based on. This is what we call epoch.
Remastering
Remastering content, however, is the means of upgrading new oldschool-specific content that did not exist in the 2008-2011 era. Because we have no means of using existing assets, we have to make our own. This can be done in the forms of the following:
Atmospheric remastering (West Ardougne)
Shorelines and underworld (underwater)
Lights
Atmosphere
Terrain
Custom assets
Remodeling (Lost bag)
Retexturing (Trident of the Swamp)
Recoloring (Chaotic crossbow)
Particle attachments (Bruma torch)
In the next HDOS developer blog, we will be detailing the inner workings of the plugin system, as well as client optimization and performance.
—The HDOS team.