186- no sound, no input tracking
194- no sound
234- OnDemand, OnDemandProvider, OnDemandRequest, FileStream classes added, LocSpawned removed (only LocTemporary now)
245- MouseTracking class added
249- Stats and VarbitType classes added
257- PixFontFull and SoundFilter classes added, InputTracking class removed
270- PixFontFull replaces PixFont completely
check TODOs, missing ondemand, mousetracking, stats, pixfontfull (replacing pixfont) classes, deleted ts entrypoints, some renaming needed
didn't always move code into or out of methods as I'd have to compare which are authentic between danes and rs-deob
317 cache is actually 319 (317 needs more files)
tested on blakescape/emulous with RSA enabled and websockify 43595 localhost:43594
emulous: quest tab iface not updating, no login appearance iface, stackables ::runes broken, NOTE the crash during death animation happens on a deob too
structures north of fally show up (wrong), watchtower on upper floor no ground, torches offset watchtower tele, varrock east upper floor doesn't show
drawparentinterface/drawinterface, rune icons on spellbook
add taggable string funcs + why are typing tags in chat offsetting it? EG @gre@
dropped items positions wrong, add player team+transmog
instanced buildscene, npc dialogue check, check special attacks combat tab, cacheloads?, T1 and T2 errors for info?, check to unload new vars
could add a loadmodel() like viewer.ts (not authentic but if not adding ondemand)
Website | Discord | Rune-Server
status: completely ported
The client code was source ported to TypeScript by us.
Jagex has never had any source code leaks.
Try out the client hosted on Github! It is 100% source ported and available to use. Create your account on the 2004scape website.
| World | High Detail | Low Detail | Members |
|---|---|---|---|
| 1 (Central USA) | Play Now! | Play Now! | No |
| 2 (Central USA) | Play Now! | Play Now! | Yes |
| 3 (Germany) | Play Now! | Play Now! | Yes |
| 4 (Germany) | Play Now! | Play Now! | No |
Playground - An Interactive Model Viewer
Items Viewer - View All the Items
Message Animation Viewer - A Chat Message Animation Editor
Sounds Viewer - Sounds Viewer & Listener
Viewer - A Cache Viewer (WIP)
Interface Editor - An Interface Editor (WIP)
::debug Shows performance metrics (FPS, frame times and more).
::chat Changes between 3 different chat font eras.
::fps Set a targeted FPS (ex. ::fps 30)
A developer can utilize the debug command for development purposes.
npm install
npm run prepare
npm run build:devIf you are on a Mac:
chmod ug+x .husky/*
chmod ug+x .git/hooks/*Local development should be done with: npm run dev
The client will automatically launch connecting to World 1. Local world is hosted on World 0. You have the ability to connect to live servers from the local client by changing the param.
http://localhost:8080/?world=0&detail=high&method=0 (TypeScript)
This is not to be confused with the Java TeaVM client which is hosted here if the local server is running:
http://localhost/client?world=0&detail=high&method=0 (Java)
A web worker server will start when loading world 999. This works as a no install, offline, singleplayer version of the server. You will need to self host in order to load saves.
How to use:
- Run
npm run buildand thennpm run bundlein the server, this copies all required files to../Client2/public. Start client withnpm run prod. - A save dialog will open on logout, you should save to
/public/data/players. - Optional: To host on github uncomment the lines starting with
!/publicin the .gitignore.
Combined with WebRTC connections you'll be able to host servers using just your browser by manually exchanging a message for each peer. Players that want to join will have to be on world 998 which won't start a web worker server.
Clicking New user on login screen or additionally ::peer ingame for hosts will open a prompt and write either an offer (host) or answer (peer) to clipboard automatically. This message can contain your public IP. Pass the offer to the peer, peer returns the answer and you'll be connected! Closing the prompt will reset the process and allows for any amount of peers.