
If you still don't know what a MUD is, then you weren't paying attention on the main page, but I'll tell you again anyway.
MUD - Multi-User-Dungeon. A text-based online game, which can be played my many people interactively and at the same time.
You can find more info on mud.de(German)
So what is PerlMUD?
It's not really a MUD at all. There's nothing to play there at all. So why does it exist? There were two points to the exercise. I wanted to do something with Perl (in order to learn it), and I wanted to listen/communicate over the intermud without logging into a MUD.
What is intermud? There are several protocols about enabling MUDs to communicate with each other (or rather, the players therein). A list of these can be found here, since most of the MUDs I play(/ed) are based on LDMud and communicate using 'intermud2' (or Zebedee, according to the list), thats what I decided to implement. (And later Intermud3, just for fun).
The protocol, which is pretty simple, and uses UDP, can be found here.
The first version of PerlMUD was also pretty simple, a monolithic single script which worked quite well.
This version requires an INETD_HOSTS file to work, which is expected in ./etc/, supplied are the names/addresses of a few muds which can then be queried for other addresses. (See 'help').
Some of the commands available:
'muds' - show a list of muds which can be reached.
'who @<Mudname>' - show who is logged onto a particular mud.
'tell <name>@<Mudname>' - send a muessage to someone.
'qhosts <Mud> - update the known muds list from this mud.
'debug on|log|off' - send debugging information (UDP packets, parsing results etc) to the screen, a log (debug_PerlMud.log), or turn them off.
Somewhen I decided to extract the 'Intermud' bits, in order to be able to use other protocols, and also to create a database for information about each mud, instead of having to ask another mud. (See the description of the 'query hosts' command in the protocol for details.) So version 2 was born, the actual script of which is still as long as the first one, but now supports external logins, internal communication, and even room creation. Version 2 requires some extra modules in order to work, notably DBI and DBD (though in theory it should also get by with just Storable, don't quote me on that!).
PerlMUD version 2
Intermud2 Module - lives in MUD/Intermud/v2.pm.
Database Module - lives in MUD/Intermud/DB.pm.
Database Schema - describes the tables for the database, should be in the database directory.
NB:The database will be created, if it doesn't already exist, from the table description in a file which has the same name as the database and ends in '.tab'.