I first encountered Cave at the age of 9 or 10, when visiting my brother’s school as part of their yearly Open Days. The computer lab was proudly running an array of BBC Micro computers, linked together on an Econet network. I was already heavily into computers (and games!) at this point, but this was the first time I saw a MUD in action.
Cave was released back in 1985 by XOB Software. Other things that happened in 1985: The UK got its first cellular phone network, DNS was launched and Richard Stallman published the GNU Manifesto.
I ended up going to the same school, and thus got to spend several years with those cutting-edge BBC Micros. As time moved on, they were replaced with Archimedes machines, and then I went on to other adventures. I never had a BBC of my own, instead taking the Commodore 64 route! (I was annoyed at the time but now concede that my parents very much made the correct choice!)
But… I always did miss Cave. It was beautiful in its simplicity. And so, in recent times, I decided to recreate it.
Getting to the Source
The first thing I needed was the original source code. I knew that Cave was mostly written in BASIC but I didn’t have my own copy (although I did once print out the entire thing on a dot-matrix printer!)
Thankfully, some perusing of the Stardot forum] turned up an original disc image which meant I could get to work. A handy little tool called Beeb Image let me access the numerous files directly on my own system.
The original tokenised BASIC files were converted to be human readable using this handy script: [BBCBasicToText.py].The resulting repository can be found here: https://github.com/tgreaves/cave-bbc-econet](https://github.com/tgreaves/cave-bbc-econet.
Modern Tech Choice
There are a whole range of modern MUD engines that can be heavily customised. Which one to use for this project? In the end, I went with Ranvier:
Ranvier is a MUD game engine whose goal is to be a simple but powerful way to build whatever MUD you want with special care given to extensibility. The core code strives to be completely unopinionated toward any specific style of game while using the bundle system to build the game you want without having to dig through the engine’s code.
By going through the original BASIC code, I could then implement equivalent functionality within the Ranvier system.
Decoding The Maze
The original Cave used one file per ‘room’. This didn’t scale well on BBC Econet networks that used floppy disk based filestores. Imagine 15+ players all moving around, and all that contention on one poor floppy disk! Things got a lot better at school when the system was upgraded to one with a hard disk.
These files needed converting to a format that worked with Ranvier. I’ll take any excuse to write a new Python script, so did so! convert_rooms_to_ranvier.py t was born.
Now YOU can explore!
Now it’s your turn to explore! The source code is on GitHub, and it includes instructions on how to play the game.
You can also use your favourite client to connect directly! `cave.extricate.org:4000` is the address.
An example of a client that you can use is [Mudlet](https://www.mudlet.org/).
It’s not a game that has aged well compared to modern multi-player experiences. But I am happy to have done my part in preserving part of the historical record. What made this game fun was playing it with those 15 or so other people all in the same room — it’s all about that experience!
I hope you find some enjoyment with it too!