How 2004 RuneScape squeezed a multiplayer RPG into 56k dial-up
2004 RuneScape fit a multiplayer RPG into 56k dial-up

In 2004, RuneScape ran a 3D multiplayer world in a browser over 56k modems, with thousands of players per server. This post dissects the extreme byte-saving techniques that made it possible, from ISAAC-encrypted opcodes to bit-packed player updates. Following a single walk click, it traces the 7-byte packet from client to server, revealing how the game minimized data at every layer—sending only deltas, packing movement into bits, and exploiting the client's local mirror of the world. A fascinating look at engineering under severe bandwidth constraints.
The answer, however, is a sustained, almost obsessive exercise in not wasting bytes.
- akersten
I wish the author got more into the weeds of anitcheat and how it evolved over time. Jagex was banning bots based on mouse movement heuristics in like 2005. 20 years later and there's some JS framework on the front page here heralding that same kind of analysis as some revolutionary new approach. I can only imagine what the modern anticheat engine entails, especially in the era of LLMs that can reliably emulate a human player. (Some of them can even write quite technical blog posts that almost escape detection ;)
- saejox
Ultima online released in 1997 and required only a 28k modem.
I also would argue it was a more complex game.
- dofm
Oh man. The gamer cult around RuneScape was so hardcore and evangelical in 2004 that it is when it acquired the nickname "Run! Escape!"
I never fell in with the cult and I am glad I didn't. The Dofus cult in the next few years was small and hilarious and luckily the economics of that game made it a bit less fun beyond a certain level, like the real world, so you could get out before you lost your mind.
- stux
> Before any networking occurs, the client runs a breadth-first search using the local collision map to build a path from where you are to where you clicked, and then writes the packet for the server to read. [...] The packet contains the absolute position of the first waypoint in the path, followed by the delta of each waypoint in the path against the first one
How come the client sends waypoints rather than just the destination? Naively it seems like sending less data would be better. Is the pathfinding so expensive that you'd want to avoid doing it on the server? I suppose it works out as long as it's cheap to validate/correct the client's path?
- NDlurker
Phantasy Star Online on the Sega Dreamcast worked great on dial up