The basic idea is old, and I believe that every follower of interactive fiction has already thought about it. There are so many great text adventures with such great stories and sceneries, it is a pity that they are doomed to stay single player adventures! Would it not be great if we could walk through our beloved adventures online, together with others?
The other part is: I used to be a MUD player and developer. Lately, I looked on some LPC source code (this is the language used for programming many MUDs). I found it awful, could not find any documentation and quickly closed it again. It would be great if MUDs could be programmed as easily as Inform 7, for example. How about joining both?
The idea is in my mind for several years now, and I always turn it back, thinking it would be impossible to make a single-player game multi-player. There are good arguments for that. My main interest would be adding multi-player support to Inform 7. That would just rock! (Do You know if any such project already exists? I am sure that I am not the only one with that idea.)
But Inform is inherently single-player. The engine is created to support only one player.
Wait a minute! There are text adventures in which You can switch Your character, so You can control a group of people. Wouldn’t that be a starting point for making a text adventure multi-player?
Imagine the MUD server is just a program that the clients connect to, and internally, it is running a Z machine, for example. The server is really not much more than a filtering proxy for the Z machine. When player X sends command A, the proxy server forwards the command to the Z machine. But it alters the command a little bit, so the Z machine can recognize from whom the command came. For example, it might send to the Z machine: “(X) A”. The Z machine’s parser would be slightly altered, so that it recognizes this as the command “switch into character X, then execute command A”.
Then, the server captures all the output from the Z machine and sends it back to the client.
For a very first, super simple version, this might work. However, more is neccessary of course: When someone enters a room, all the other players in the same room are supposed to see something like “X has entered the room”, while the player who has entered the room should see “You have entered the room”. (I think those messages could be captured with the same mechanism that a single-player game player could “see through the eyes” of an NPC, for example when the adventure involves remote controlling a robot.)
Well, can be done. Just like the proxy prefixes every player’s command when forwarding it to the Z machine, the Z machine can prefix every line of output with the player it is directed to. In that way, a simple protocol can be defined which can be used not only with the Z machine but with every IF system for which someone wrote a multi-player library patch. (Actually, the protocol would be somewhat different. For example, it would be better to use connection IDs instead of player names.)
Of course, there would be more issues to be addressed. For example, commands like undo, save and load must be deactivated. The server would need to create a save file regularly and back it up. Probably, some engine limitations would have to be broken or bended: For a MUD, it would be good to have the possibility of creating objects dynamically. (Still, it is possible without dynamic object creation. But even a moderately frequented MUD would have an enormous number of objects soon.) Some limitations could be overcome by having several Z machines running at the same time, serving different regions of the game world. (When a player goes from one region to another, the proxy transparently switches him to another Z machine, passing all the character’s data to the new Z machine.) I also believe that the proxy would need to be able to have some introspection into the game world and the character’s states.
Another issue is the passing of time. This might be a kill criterion why the majority of existing text adventures would not work in multi-player mode (apart from the structure of the story itself, which is always only around one player and would be inconsistent with several players). Maybe this could also be solved.
Updates are also a most critical issue. How do I update the game world when a bug was fixed? (Sounds like a killer first, but I have ideas on that one.)
You might say that this would be a very great waste of performance. But think again! The Z machine runs lightning fast. (And the other IF engines as well, by the way.) I think they are better suited for MUD development than any of the actual MUD systems, at least if You want role playing flavored MUDs.
Please think about my ideas. What do You think of them? I know, it sounds naive at first sight, but the longer I think about it, the more plausible it seems to me.