Text-Based VR: Explore the Pioneering World of MUSHes

A VT-100 terminal on a blue background covered with text. Digital Equipment Corporation

Can you create virtual reality (VR) with nothing but text? People who MUSH think so! The MUSH game format (now 30 years old) allows online players to collaboratively create text-based online worlds where their imaginations can be unleashed.

Let’s see how you MUSH!

The origins of mud and fungi

Before graphics dominated the Internet and bandwidth was low and modems were loud, people used to play online text games called “multi-user dungeons” or “MUD”.

A MUD is a networked multiplayer game that generally focuses on fantasy RPG style combat. The MUDs then gave birth to “massively multiplayer online role-playing games(MMORPG), like Ultima Online and World of Warcraft.

Unlike these games, however, MUDs only used textual descriptions of players, enemies, actions, and their environment.

In the late 1970s, fans of the original mainframe version of the text adventure game Zork (then called “Dungeon”) wanted to create a game that multiple people could play simultaneously on a network. the first mud was launched in 1978. It ran on a DEC PDP-10 central computer at University of Essex.

A MUD1 welcome screen in the terminal window.

As MUDs gained popularity in the 1980s, several variations emerged in terms of game styles and code bases (the server software that hosts a MUD). Soon, some MUDs moved away from the fight and became purely social platforms for discussion and experimentation.

In 1989 Jim Aspnes created one of the first social MUDs called TinyMUD. The following year, developer Larry Foard used the TinyMUD code as the basis for his own server. He added a programming language to the world and called it “TinyMUSH”, and thus MUSHes was born.

The term MUSH is a pun with no fixed meaning beyond the pun on the term “MUD”. Some people later invented the backronym “Multiuser Shared Hallucination”, but it was not universally accepted.

The basics: what does a MUSH look like?

Hands typing on the keyboard of a vintage computer, with a MUSH on the screen.A MUSH around 1995.

Like a MUD, a MUSH is entirely text-based. The defining characteristic of a MUSH, however, is that someone can extend and program it from the environment. Before that, the room structure of a MUD was hard-coded in a compiled language (such as C), or by modifying the configuration files and restarting the server.

On a MUSH, players can build rooms and link them together. One way to do this is to use world commands (like “@dig” to build a room). Another is via interactive program environments that use an internal scripting language called “MUSHcode”, which runs in the game environment in real time.

Structurally, the MUSH are divided into rooms, objects, players and exits. The rooms are basic locations with their own descriptions. Objects move through rooms and other objects. The players are the people connected to the game (essentially, living objects). The outputs are the links that connect everything.

When you first connect to a MUSH, you see a description of your environment and a list of objects or readers there. You can use built-in commands, such as “watch” or “say”, or custom commands programmed by other players, to interact.

Why MUSH today?

A CaveMUSH room in a terminal window.

The administrators who run MUSHes are called assistants. Each MUSH server (or game) is a virtual playground for your imagination. They usually have a specific theme, such as Transformers, Tolkien books or vampires. Some players play a role in a setting and live a fantastic life of their choice.

Other games are more open and experimental. On a social / MUSH coded network (like mine), you are free to create what you want. The community values ​​creativity and good conversation.

I MUSH (the term is also used as a verb) because it is the ultimate form of linguistic creative expression. It’s a programmable text environment in which I can create any place I want to visit – and my imagination is the engine of rendering, just like when I read a book.

It is also a deeply social experience. I first connected to a MUSH in the fall of 1994. I made friends that I still have today. We register almost daily on CaveMUSH, the MUSH that I started in March 2000. Nowadays, we use it in the same way as the others Soft or Discord.

You are invited to visit CaveMUSH. Let’s see how to do it.

How to use a web client for MUSH

MUSH traditionally use telnet protocol for communication. You can connect to almost any MUSH through the telnet client of your choice. If you are more advanced, you can visit my CaveMUSH here: cavemush.com port 6116.

However, for most people, finding and configuring an ideal telnet client can be a lot of work. Telnet is generally obsolete in favor of SSH, so it can be difficult to find a customer who supports a good MUSHing experience.

Instead, we will use a handy Telnet client called MudPortal to connect to CaveMUSH. It works in any web browser, including Safari, Firefox, Edge or Chrome.

First, automatically connect to CaveMUSH via MudPortal; you will see the screen below.

CaveMUSH's first login screen on MudPortal.

Before you can use a MUSH, you must create a player account. Most MUSHs are completely free to play, and you can do so anonymously without any conditions, which contrasts with the modern era.

Think about what you want your username to be. On CaveMUSH, people tend to choose short, whimsical handles, like Dream or Mad (mine is RedWolf).

Once you’ve decided on a name, click “Type a command” at the bottom of the page.

Type the following, where [username] is the name you want, and [password] is the password you chose, then press Enter:

create [username] [password]

Do not forget to write down your password so as not to forget it. The text box is how you will now interact with MUSH. You simply type commands, then press Enter.

Then a bunch of text quickly scrolls across the screen. The most recent output will be at the bottom of the screen, while the older information will scroll up and off screen.

CaveMUSH first-time login instructions.

At the beginning, you see the description of a piece called “Old Well” in gray text.

To see the MUSH in color, type @set me = ansi, then press Enter. You see the message “Set”, which confirms that the command was successful.

Now you can type look (or the shortcut l) and press enter to watch the play.

Like Dorothy opening her eyes to the land of Oz, the MUSH is now in technicolor. Congratulations, there you are!

In a basic layout of the room, you see the name of the room at the top, the description of the room, the list of the contents of the room (all the objects and the players in the room) and a list of the exits which lead to other rooms.

The next time you log into MUSH, type the following using the username and password you created above:

connect [username] [password]

This way everything you do or build on MUSH will be saved to your account.

First steps in a MUSHy world

Now that you’ve seen your first room, let’s try to say hello. Type say hello in the text box and press Enter.

You see the result on the screen. If there are active players in the room, they could respond. Generally, only players in the same room will see the results of your say command.

However, you can also speak on the MUSH-wide chat called the public channel. To do this, type the following, where [message] do you mean:

pub [message]

Players in each room will see this message.

You can also use the look command to see a description of the objects in the room. To do this, type the following:

look [object name]

To move around the MUSH, you use exits. On CaveMUSH, almost every exit has a shortcut behind its name in square brackets (). When you type the shortcut and hit enter, you move through the exit to another location.

To go through the “hole ”Exit and enter another room, type“ h ”and press Enter.

You enter the Cave Nexus (# 3), which is the basic center of the MUSH ensemble.

From here, you are free to explore MUSH, talk to other people (type WHO to see the list of connected players) and use the outputs to explore what others have built. Don’t forget to use the pub command to say “Hello” to RedWolf on the public channel.

CaveMUSH has players from all over the world. Although they are not all active at the same time, they tend to stay connected 24 hours a day, if possible. That way they can catch up on messages they might have missed.

Here are some other basic commands you can use:

Type i to see your inventory.
Type get [object] to retrieve an item from your location if it is not locked.
Type of fall [object] to drop an item at your location if it is not locked.

MUSH General Control Checklist

We can’t cover all MUSH commands here, but we have compiled a list of some of the most important ones. Again, to send any of the commands below, just enter them and press Enter:

See colors: @set me = ansi. You should only do this once after you have created your character.
Access the Help menu: help or help [subject]. You can ask for help on just about any command or topic.
Look at your environment: look
Look at a particular object or player: look [object]
Pick up an unlocked item: to have [object]
Drop an unlocked item: drop [object]
See what you are carrying: i or inventory
See a list of players online: WHO
Talk to people in the same room: say or a double quote (“), followed by what you want to say.
Send a private message to another player: page [player]=[message]
Teleport home if you get stuck: Home. (On CaveMUSH, you can also type @home to teleport to the main hub room, the Nexus.)
Teleport to a specific room or object: @Phone [number]. The destination must belong to you or be set to JUMP_OK.
Define the description of your player: @desc me =[description]. This is what others see when they look at you.
Browse the outputs: You can enter the full output name or its shortcut (located after its name) between the angle brackets ().
Disconnect: Type QUIT to exit MUSH free of charge.

Some MUSH building tips

Each object, coin, player or output on a MUSH has a unique database reference number called “dbref”. This allows you to reference any of these items from anywhere on the MUSH, even if you are not in the same room. After the name of the objects you have, you will see its number.

You use this information at the time of creation. Each coin or item you build costs 10 gems in the game, and exits cost one. The costs were supposed to curb excessive construction. In the 1990s computer memory was limited and MUSH actually taxed their host machines. Now, if you need more money to build, just ask on the public channel.

Again, a complete guide to building on a MUSH is beyond the scope of this basic article. Remember, you can also type help [subject] for a more detailed explanation of how each of these commands works.

Type one of the following basic commands, then press Enter:

Create an object: @create [object name]. Each item costs 10 gems to build.
Create a room: @dig [room name]. Write down the room number (dbref) that the MUSH gives you so you can go there. Initially, it will be disassociated and floating in the middle of nowhere. Each room costs 10 gems.
Visit a piece you just created: @Phone [room number], using the number you wrote down after building it.
Describe a room: @desc here =[description]. On CaveMUSH, we use @ldesc here =[description] , which corresponds to the personalized shaping of the part.
Open a one-way exit to a room from your current location: @open Exit Name ; in =[room number]. You must either own the room to which you are checking out, or the room must be set to LINK_OK. The outputs are slightly complex, so type help @open for more details on how they work.
Define the description of an object: @desc [object]=[description]. This is what players see when they look at your object.
Learn more about flags: help flags. These control how players interact with objects, rooms, exits and the like.
Define flags: @together. Type help @set for more information on this.
Learn how to lock objects and exits: help locks. This prevents people from taking items or using exits if you don’t want to.

A word about MUSH programming

An example of MUSHcode.

Programming on a MUSH is optional. Many people avoid it, and for good reason. Modern MUSHcode programming looks a bit LISP in the syntax. People familiar with programming languages ​​like C or JavaScript generally find MUSHcode difficult to use. It can be intimidating to learn and maddening to read, but it works well for the real-time environment once you get used to it.

MUSHcode uses nested functions to evaluate lists. Players typically store code in custom attributes on objects and use custom commands to trigger it. The code can also be incorporated into descriptions to generate dynamic results when players are looking at objects.

So you can see what it looks like, the following short line of code uses functions to generate a list of each object in the current room and displays their names. The @emit command evaluates it and shows the results to everyone in the room.

It looks like this:

@ send [iter([lcon(here)],[name(##)]% r)]

If you want to know more about programming, enter help functions, help user commands and help &.

To see a larger example of how MUSHcode looks in a working program, just type examine # 9802 while logged into CaveMUSH. You will see the code of an object that allows a game of Checkers for two players.

More mushrooms are out there

Mud connector currently lists nearly 100 MUSHes online and ready to explore. Each ad has a link, so you can log in and play through your web browser, as you did above. Most of the commands you learned here will work in other MUSHes.

However, when you visit other servers, keep in mind that each system is an independent playing field with its own culture and customs. You are there at the whim of the wizards (administrators) who run it. So, until you settle down, consider yourself a tourist in a foreign country – take a light step and always be nice to the locals.

Good luck!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.