Website | Discord | Rune-Server | Getting Started
status: alpha, in-development
Contributors are welcome to help out!
All server code has been written from scratch for this project.
Jagex has never had any source code leaks.
Important
Our goal is to authentically, accurately, and precisely emulate old RuneScape to our best knowledge. There are countless hours behind adding and quadruple-checking every bit of logic that goes into this.
Caches and clients are sourced from old PCs that played the game at a given time. That gives us the original maps, models, and NPC / Item / Scenery configurations. Then we can unpack that data into a readable and workable format based on what we've been able to observe Jagex doing, as outsiders.
The server side (engine, quests, combat, skills) was not preserved and that's what we're recreating here. The engine takes a lot of effort and is not perfected, but you should consider it our best interpretation of behaviors we can measure.
We try to take very little liberties when it comes to guessing, our sources are era-videos, era-screenshots, and RS3/OSRS/RSC.
Our content language of choice is a recreation of RuneScript: this gives us the same limitations, and the opportunity to recreate bugs out of the same circumstances. We don't simply see a bug and add it as an edge case, we have the script and engine work together to reproduce the exact reasons behind the bug.
- Download this repo to your computer
- Install our list of dependencies
- Open the folder you downloaded in a command prompt
- Run
npm start
Now open http://localhost in your browser and play!
Important
If you run into issues please see our common issues or hop in Discord.
Tip
Windows users: We have a script called quickstart.bat
that will launch the server for you, combining steps 3 and 4 above.
Tip
Advanced users: You can customize your setup by copying the .env.example
file to .env
. This is not necessary for a simple localhost setup.
An alternative way to set up your environment is to utilize a Development Container. In order to start the Dev Container, you'll need to install Docker. If you're running Windows, I suggest getting Docker Desktop. Linux users can use whatever means they prefer to install Docker. Once docker is installed, install the VSCode extension Dev Containers.
Follow these steps:
- Make sure Docker is running
- Open VSCode and run
Dev Containers: Clone Repository in Container Volume
- Select
GitHub
as the remote Source - Find your fork of this repo
- Select the branch you want to work from
- Once the startup script is finished, run
npm start
Once the container starts, it automatically starts running setup.sh
. You can cancel this and do the Getting Started steps manually as well.
- NodeJS 20.6+ (22 is fine as well)
- Java 17+
Tip
If you're using VS Code (recommended), we have an extension to install on the marketplace.
Content developers (likely you!) can run npm start
to start the server. This will watch for changes to the config and script files as well as automatically rebuild them.
Engine developers can run npm run dev
to start the server. This does what npm start
does above, but also restarts the world when any TypeScript code has changed.
We use vitest
for unit tests.
- You can run the tests with
npm test
.
Test files should be colocated with the source files, i.e. src/foo.ts
should have a test file src/foo.test.ts
.
We use eslint
for linting this project.
- You can run the linter with
npm run lint
. - To run the eslint auto-fixer, you can use
npm run lint -- --fix
.
It's recommended to install a suitable plugin/extension for your IDE, to show you lint results inline.
Please aim to avoid warnings! They are rules that we eventually want to switch to errors.
Configuration for the linter can be found in .eslintrc.cjs
.
-
bad option: --import
You are using an older version of Node (maybe 18). We are targeting 20.6+ -
'"java"' is not recognized as an internal or external command
You do not have Java 17 installed. -
has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
You are likely using Java 8 or Java 11. You can either reinstall Java 17 or become an advanced user, and setJAVA_PATH=path-to-java.exe
in your .env file.
Thanks to all the current contributors, every PR you submit gets us closer and closer to feature completeness.
Thanks to these indirect or external contributors
- Kris: for all your help theorycrafting and testing, and to his sources as well for teaching him
- Walied: for your work on understanding the client assets (worked on cache formats)
- Dane: for your work on understanding the client (worked on client refactors)
If anyone is not listed here, whether that's intentional to remain anonymous or an oversight, thank you for your help.
This type of project has been a long time coming and I hope to see the trend continue.