rec.games.mud.diku FAQ
- A note on FTP sites:
- If you discover that a site is no longer valid, or you have a new
site to submit, please let the maintainer know. Thank you very much.
Recent Changes
- Added a basic list of DikuMud derivatives that are freely available.
- Added a question about lag. Specifically a definition.
- Added a section on porting to Linux.
- Addition to creditation questions.
- Updates and additions to the resource section.
Credits
- Originally authored and compiled by Frederick Myers [reni]
<mondays@bsu-cs.bsu.edu>
- Original HTML conversion by Ryan Watkins [VampLestat]
<vamp@csulb.edu>
- Recent updates, upkeep, HTML by Alex Fletcher [Furry]
<fletchra@post.queensu.ca>
The following people have lent a hand with contributions/comments for
this document...
- Sebastan Hammer - Donated notes on DikuII and on DikuMud history.
- Adam Coggins - Spelling and grammar checking.
- Dean Gaudet - Provided a list of common stock Diku bugs and init_socket
patch.
- Furey at Merc Industries - Provided some technical info for starting a
mud.
- Michael Brundage - Provided the noecho patch and some other bug fixes.
- Nick Borko - VMS TinTin CPU fix.
- Derek J. Middleton and Russel Schultz - provided basic instructions to
port DikuMud Gamma 0.0 to Linux.
- Others... Jeffery Bennett, Bombman, Dan Brumleve, Mort, Sven Nielsen,
Nino Ruffini, Derek Snider, and Naved Surve.
Please let me know if I have missed anyone...
Overview
This document will be posted approximately bi-weekly to
rec.games.mud.diku.
Approximate size of this document: 40k
This file is the FAQ for the
rec.games.mud.diku newsgroup as well as a general game FAQ for
DikuMud games. This FAQ is divided up into three different
sections:
- Introduction (general information and background)
- Implementor / Building (questions concerning starting
a mud, building areas, etc)
- Resources (well known ftp sites for various
DikuMud utilities, patches, and sources).
More information on muds can be received from the
rec.games.mud.announce
General Three Part
FAQ, online within whichever mud you decided to play, and from the
various web and ftp sites located at the end of this document.
All information is correct to the best of my knowledge. The author takes
no responsibility for any inaccuracies contained in this document. Please
let me know of any corrections to make to this document.
This document may be distributed freely. Any use of any of the contents
here-in must be credited and the author should be notified. In light of
several publishing companies 'stealing faqs', BY NO MEANS IS THIS
DOCUMENT TO BE USED FOR 'FOR_PROFIT' GAINS WITHOUT THE EXPLICIT
WRITTEN CONSENT OF THE AUTHOR. THIS INCLUDES INCLUDES USING THIS
DOCUMENT ON "FAQ CD-ROMS".
Patches Note: If you decide to use one of the patches
in this FAQ, please take the time to put the authors (Dean Gaudet and
Jeffery Stine of ArcticMud for the socket patch and Michael
Brundage for the noecho patch) in your lib/credits file. These three
individuals have donated their work for the better of others, so please
give credit where credit is due.
Questions
"What is a DikuMud?"
"Where did this DikuMud come from?"
"Where and how do I connect to a DikuMud?"
"Where can I find out where these muds are located?"
"Ok, I'm connected, what do I do now?"
"What is a client program, or TinTin?"
"Is there anything I can do about enourmous CPU usage of VMS TinTin?"
"Ok, I have a character, now what do I do?"
"What are hit points, mana, and movement?"
"What are some other things I should know?"
"What is a crash?"
"What is lag?"
"What is some of the slang or jargon I hear on these muds?"
"What about this newsgroup, rec.games.mud.diku?"
"What is DikuII, and when can I expect to see it?"
"Where can I find so-and-so?"
"Now I know where to find it... what is available?"
"I really like DikuMuds, I want to start my own!"
"What is the difference between Circle, Merc and Silly?"
"Well, I do not want to run my own mud, but I would like to create an area."
"Ok, I think I can start my own, but I hear there are bugs with the stock code, what are these?"
"Are there any RFC's of interest?"
"What runs on Linux?"
"How can I make the original DikuMud run on Linux?"
"Are there any books of interest to admins?"
"Are there any muds available with online creation?"
"When is Circle 3.0 going to be released?"
"Are there any mailing lists for administrators?"
"Do I need to follow the license agreement?"
"Should I credit my area authors too?"
Web Resources
FTP Resources
- "What is a Diku Mud?"
- A DikuMud is s specific species of one of the fastest growing forms of
computer games called Mud. For more information on muds in general, please
consult the general
mud FAQ posted on rec.games.mud.announce.
- DikuMuds are highly influenced on the AD&D format for adventuring.
Though DikuMuds are not an exact duplicate of AD&D, both share many
common qualities, enough so a person who is familar with AD&D will feel
quite at home with the DikuMud world. But by no means is AD&D
experience required for a person to prove to be successful.
- While some muds are based on pure social interaction and some based on
pure fighting, DikuMuds have evolved into an intelligent compromise between
the two.
- "Where did this DikuMud come from?"
- DikuMud was originally developed by Katja Nyboe, Tom Madsen, Hans Henrik
Staerfeldt, Michael Seifert, and Sebastian Hammer.
- A small bit of background of DikuMud, according to Sebastian Hammer:
"The game originated at the Department of Computer Science at the
University of Copenhagen (in Danish: Datalogisk Institut ved
K|benhavns Universitet; or, amongst friends: DIKU) The foundations
of the code were laid out in March of 1990. Our background (Mud-wise)
was primarily Abermud (LpMud was just emerging at the time), and
our object was to make a better AberMud. We wanted to make it
fast, compact and CPU-efficient. We wanted to allow more than
the 18 (or so) players-at-a-time that AberMuds permitted in those
days, and we wanted a bigger world, so that players could truly
get lost in there (back then, 500 room AberMuds seemed the norm).
Also, we wanted to make it more interesting for players to
cooperate, rather than just run madly around in search of beasts to
kill.
I guess we reached some of our goals, but far from all of them.
Currently, we are working on DikuMud II, which is still under
debugging. We have ceased to support the original code in any
way, since so many "improved" versions have started to circulate"
- "Where and how do I connect to a DikuMud?"
- DikuMuds are located on different computers throughout the world. These
computers can be at universities, companies, or even be personal workstations.
To connect to these games, you need two things -
- Access to telnet.
- The mud's host name or IP number and the protocal port that the particular
mud is running on.
- Telnet is, to put it very simply, like a telephone. From the computer,
you 'dial in' where you want to connect to and you are in (assuming
the game is up).
- Since many people play from a Unix based platform, I will use that
for examples on how to connect. Asgard.cs.bsu.edu 6969 will be the
mud we will use as an example to connect to. (147.226.112.94 was the IP
number of that same machine).
- From a unix based machine - (The % is the prompt)
% telnet asgard.cs.bsu.edu 6969
or
% telnet 147.226.112.94 6969
or
% telnet <enter>
telnet> open asgard.cs.bsu.edu 6969
- "Where can I find out where these muds are located"
- Word of mouth is a good way. So are the news groups. Different muds are
always being mentioned in
rec.games.mud.diku plus a listing is posted every few weeks in
rec.games.mud.announce. Also, look
for the Mud Connector.
- "Ok, I'm connected, what do I do now?"
- Many DikuMuds have a lot of differences on how a person goes about making
a character. But there are some common similarities between all of them.
- Name
- This will be your character's name for the game. It is suggested that
you do not make up a name that is complicated to spell (something like
Gustralieb would be a pain for other players to type) or something
that could possibly be the name of a monster in the game (something like
Dragon or Guard has a great possibility of being a monster
(or mob) in the game). If your name is one of the above, you can find
yourself being killed at times when a sensible name could have saved your
life.
- Password
- This is what will prevent other people from playing your character.
Pick a password word that is hard to guess and one that you currently do
not use on another mud or system. This is very important because it takes
little effort for a mud admin to find your password of your character, your
site and your username. Bad passwords include your real name, character
name, and anything less than 3 characters. It is recomended that you
choose something that includes some non-standrard Alpha characters such as
# or @ or * (you get the idea). So, a password like #Chapo1* would be a
good, hard to guess password.
- Sex
- No, not if you get any, but what gender you want to be. Most commonly
this will be Male or Female, but a few muds have the option of being Other
or Neuter.
- Class
- There are usually four basic classes that DikuMuds usually have.
- Cleric - a healer
- Warrior - a fighter
- Magic User - a spell caster
- Thief - a rogue
- Some muds also have many other split style classes such as Rangers,
Paladins, Bards, etc. Usually on the log-on screen, there will be some
sort of online help that will help you in the decision of your class.
- There are a few other things some muds include such as hometown and
races. For these items, there should be sufficient online help to guide
you through on the paticular DikuMud you are playing.
- "What is a client program, or TinTin?"
- A client program is basically a program that you use to connect to a
mud that has many enchanced features to help (in some peoples' opinion...
'cheat') in the game. The most commonly used Unix clients for DikuMuds are
TinTin and TinyFugue. TinTin was specifically designed for play on DikuMuds
and is only available for Unix platforms. There is now a Beta version of
WinTin for Windows '95 however. TinyFugue was designed for MUSHes and
other TinyMuds, but has been adapted for use with DikuMuds. Both of these
feature things like macros, aliases, and triggers. Sites where you can find
these two clients are listed later in this document.
- Further info on clients programs and their functions is contained in the
bi-weekely rec.games.mud.announce
FAQ.
- "What can I do about the enourmous CPU usage of VMS TinTin?"
- Quick and easy fix:
- Edit the file main.c
- Find the following line:
time.tv_usec=0;
- Change the 0 to 500000
- Recompile and you are all set.
- "Ok, I have a character, now what do I do?"
- The first thing you would want to do is get to know the mud and its
commands. Some things you can do is type:
- HELP
- This will give a general listing of the commands available.
- HELP <keyword>
- This will give you a more precise definition. An example of what you
could type is HELP SAY. This will give you an explanation and proper
syntax for the command say.
- INFO
- Will give you a brief introduction to the paticular mud you are playing.
- COMMANDS
- This command is not on all muds, but what it does is gives you a listing
of all the commands available to your character.
- NEWS
- Will provide the latest news of the mud.
- Ask around. Most people are generally nice by nature and will offer some
(sometimes a lot, sometime very very little) help if you ask nicely and are
not annoying about it.
- Read everything you see. Things like the MOTD (Message Of The Day, which
you see right before you enter the game) will often provide very important
information.
- "What are hit points, mana, and movement?"
- Hit Points
- A numeric representation of the amount of hits/damage that your
character can take. Every time you are hit, you lose some amount of hit
points. You are considered officially dead when you reach -11 hit points,
though at 0 you can not do anything except for hope there is someone around
who will heal you.
- Mana
- This is the amount of spells you can cast. Every time you cast a spell,
a certain amount of mana is subtracted from your working total of mana.
Mana is like the working energy that you can use to cast spells.
- Movement
- This is the amount that you can walk/run etc etc. A decent comparison
could be the amount of energy your player has. Some skills also subtract
from your movement points.
- "What are some other things that I should know?"
- Don't be annoying. Such things are constanly whinning to other players
and wizards will be the quickest way of being rejected by the players of the
mud.
- Avoid player killing unless it has been explicitly allowed
on the mud you are playing. Usually if player killing is not allowed on a mud,
and someone violates this, it is dealt with very sternly.
- Avoid unnecessary shouts. Such things as shouting "LAAAAAAGGGG", "GOODBYE
SO-AND-SO", "LEVEL!!!", etc generally do nothing but annoy other players
and can be taken care of by using tell or say.
- Don't litter. Leaving junk around does nothing more than drain the
machine's resources. See if the mud you are playing has the junk
command, sacrifice command, or a dump where you can dispose of
uneeded items.
- Remember, that it is only a game and the main purpose is for you, as a
player, to have fun, explore, and talk to people. And do not let mud
playing take priority over your school/job work, which happens all too
often.
- "What is a crash?"
- A crash occurs when
- The system that the mud is located fails, or
- The actual mud itself fails.
- When a mud crashes, you will be thrown out of the game and you will
not be able to connect back to the game until it is rebooted.
- Because of crashes, the importance of saving your character is very
important. All you need to to do is type 'save' and your character
is saved, that's it. No excuses. Fortunately, many muds have made it so
that the mud saves your character every so often.
- In event the game does crash, and you lose items/experience, then
often (not always, and it is not required) immortals/gods
will reimburse your items. But remember, the keywords for you to get
reimbursed are politeness and courtsey. Chances are, if you lost something,
other players did too. Avoid telling your local god 100 times that you lost
something. Usually, if you told them once, they know and will get to you as
soon as they can. And remember, nowhere does it say they have to reimburse
you.
- In the event of a crash, do not go straight to
rec.games.mud.diku and post a message
saying "Blah mud crashed 4 seconds ago, what happened?" That posting will
usually be met with negative reponses. POST TO THE NET ONLY AS A LAST
RESORT. If the game is going to be down for an extended amount of
time or if there are serious problems, usually there will be a message at
the port the game ran on, or there will be a posting on
rec.games.mud.diku concerning the down
time.
- "What is lag?"
- Lag is the result of an overstrained Internet. It comes in two
varieties, machine lag in which the machine the MUD runs on is
overburdened, and network lag caused by a poor network connection
between the enduser and the MUD's host machine.
- Machine lag can be created by other processes gobbling up CPU
processing time or RAM, or simply by trying to run an overly exotic MUD on
an inadequate machine. Machine lag will cause all actions to be slowed
down, but for the most part everything is slowed down equally. Machine
lag can be fixed by upgrading the hardware the MUD uses or by the MUD
implementors better optimizing the MUD.
- Network lag is typically the result of a breakdown or bottleleg
somewhere on the Internet. Massive or rerouted traffic on the Internet
as a whole will cause traffic jams that make communicating between the
MUD and the enduser difficult. Typically, the communications problem is
sporadic and the lag will come and go in "bursts". Multiple commands
will go thru simultaneously, followed by a period when seemingly no
response occurs. Network lag is sometimes caused by the MUD's machine
if the MUD has an inadequate hookup to the Internet. Utilities like
PING and TRACEROUTE are good for tracking down the location of network
lag.
- The two types of lag have different effects on the MUDder. Since
machine lag slows everything down, all actions take longer. Machine lag
is essentially like operating in slow motion. There is little real
danger (other than becoming inattentive from boredom) to machine lag
since you essentially have a longer reaction time. Network lag, on the
other hand, is MUCH worse. It may take many seconds, even minutes,
for a command to be entered, be processed and the response to that
action to come back to the user. Obviously, the situation could have
dramatically changed in the meantime. In short, the user might be
responding to an event that the MUD thinks happened many seconds in the
past. Or more to the point, you might already be dead before you even
register that you should be thinking about fleeing.
- Each MUD has its own policy on how lag related problems are resolved.
Commonly though, most MUDs will refuse reimbursement for lag induced
death simply because it is an aspect of the game that the implementors
have no control over and for the most part can not be verified.
- From Jeffrey Bennett (Batopr@SneezyMUD)
- "What is some of the slang or jargon I hear on these muds?"
brb --- Be right back.
brt --- Be right there.
rl --- Real life. Something like "I'm bored rl" is commonly
heard.
brb rl --- Put the two together and you get "Be right
back, real life". You know, like going to the bathroom.
pk, pk'ing --- Player Killer and Player Killing.
newbie --- Someone who is new to the game. Associated with the word
clueless.
mob --- A mobile, a monster in the game.
immort --- A player who has achived immortality on the mud and is
considered a god.
imp(s) --- The person(s) who run the mud. They have final say over
everything.
afk --- Away from keyboard.
afw --- Away from window.
inv --- Your inventory, what you have on you and is not
currently equiped.
equip --- The items that you are currently using. Like the armour
you are wearing.
- "What about this newsgroup, rec.games.mud.diku?"
- This newsgroup was designed to help filter a lot of traffic that flowed
through the newsgroup rec.games.mud. The newsgroup is designed for
discussions about anything pretaining to DikuMud games. Anyone or anything
is open, though messages that obviously have no purpose, like "Big Fat
Hairy Mud Rules/Sucks!!!!" are generally frowned upon and are a waste of
peoples' time and of network resources.
- "What is DikuII, and when can I expect to see it?"
- DikuII is exactly that, the second version of DikuMud. The latest
word is that this code will not be released due to the politics and pains
of releasing public code. Unless of course, you have the April Fools
DikuII release of a couple of years ago. However, all this aside,
ValhallaMud runs on the DikuII code and is run by some of the original
DikuMud authors.
- "What other derivatives are available then?"
- There are a large number of derivatives of the original DikuMud, far
too many to list in fact, but a quick summary can be made. The first real
variant on the DikuMud Gamma code was the Alfa DikuMud code. Not too many
changes were made, but a number of bugs were corrected, and several new
areas were added. In the time following this, other variants were
released, for example Copper, Sequent, Pirate, TECHv3, and so forth, most
without too many changes to the original code. As more new ideas came to
the forefront, SillyMud was released, MercMud, and CircleMUD. MercMud has
since branched off into a large number of other derivatives such as ROM,
Envy, SMAUG, The Isles (NiMud), Ember, Oblivian, and more. The
differences between these are generally in the basic features, but the
MercMud tree introduced a new file format to the game for area files.
Instead of all of the rooms being stored in one big file, they stored each
area in its own file instead, making adding and removing areas somewhat
easier.
- Each generation of DikuMud code tends to remove a number of bugs and
problems from earlier code while introducing new features, bells, and
whistles. If you are planning on using one of these derivatives, you are
advised to find the one that suits your needs the most.
- See also the question on the differences between Silly, Merc, and
Circle based muds in the next section.
- "Where can I find so-and-so?"
- If you are looking for a paticular client/patch/source, check the bottom
list and look at those ftp sites. I try to maintain a general list of what
is at these sites, but I can not always keep up-to-date of these sites'
contents, so you will have to actually log in those sites and look around,
chances are what you are looking for is at one of those sites.
- If by chance you do not find what you are looking for at one of those
sites, then use the archie server. Archie is a archive database searcher
that will aid in hunting down a paticular program or whatever it is you
seek. Don't post to the newsgroup asking how to use archie, ask someone at
your site if they can help. If you can not get help locally, then post the
question to newsgroup such as
news.newusers.questions or look in
news.answers.
- "I really like DikuMuds, I want to start my own!"
- Well, before you go off and do that, there are some things you need to know
or have.
- A good, working knowledge of C. Though with the amount of enhanced muds
that are available, this is still a good thing to know because you are never
going to find 100% bug free code.
- A machine. Some general requirements include:
- 32-bit processor
- 8+ megs available (greater than 16 is desirable)
- 2-8 megs of available memory
- Network bandwith running (to Internet) at about 50 kilobits/second
- Explicit System Administrator Approval. Muds do not go unnoticed on
any machine where there are any other users. Get this before you do anything
or you could find hours and hours of hard work down the drain.
- A large amount of time to devote to actual work on the mud and time to
spend online in the game doing administrative duties. This has caused the
eventual death of many muds.
- A creative mind. Be creative about your work, no one really cares for
a dull, boring mud.
- DikuMuds are not very CPU intensive, so very little CPU time is needed
for all practical purposes.
- "What is the difference between Circle, Merc, and Silly?"
- There is a lot of differences between the codes, some that are easily
recognizable by players, some that are not.
- CircleMUD is the closest to the original Gamma Diku with a lot of the
bugs patched plus a lot of new features built in. It can compile on
almost any platform, including Amigas and Windows 95.
- SillyMud is a very large and heavily modified release and if I
remember what the author of this code (or maybe it was someone else) said
is "it is big and it is ugly". Silly is filled with features but
is has not been patched up to run on all systems, so beware it might take
some hacking to get this to work on your machine.
- MercMUD is yet another highly developed and very different release.
It has been made to work with a variety of machines including Macintosh
and is very compact. The MercMUD base has branched off into a number of
different bases now, including ROM, EnvyMUD, and SMAUG.
- It is recommended that you give each release your attention to find out
which code is best for you, because none is specfically better than the
other in general terms, it is up to you find out what you prefer.
- Further additions to this section are welcome, including comparing
new code bases that exist.
- See also the question on which derivatives are available in the
previous section.
- "Well, I do not want to run my own mud, but I would like to create an area."
- Some tips in writting an area:
- Get documentation - Basic DikuMud documention has been upgraded and
released by the Curious
Areas Workshop, and their Builders' Handbook can teach the most
inexperienced beginner how to create an area.
- Ask a wizard at the mud you would like to build for for the documentation
specifically for that mud. This is helpful because the actual format
for area creation and many of the different bitvectors vary greatly from
mud to mud.
- Planning. Plan out your area. Make a detailed map and
think of a good general story or theme for your
area before you start construction.
- Don't just make an area for the sake of it. If you
make an area just for the sake of it, this usually
shows and people do not want a boring, non-planned
area. All you will do is waste your time and the
admin's time.
- Many other helpful tips are given in the C.A.W. Builders' Handbook,
and are available online at:
http://post.queensu.ca/~fletchra/Caw/Bhndbk/tips.html
- "Ok, I think I can start my own, but I hear there are
bugs with the stock code, what are these?"
- Unfortunatly, all code will have bugs, here are some of the more well
known bugs that should be looked at when starting your own bugs.
- (NOTE: These are all fixes that require knowledge of C... told you you
needed to know C.)
- Problem with realloc() in db.c with the world, and to a lesser extent
mob_index and obj_index.
- Problem in do_pour. This bug allows players to preform 'pour cup cup'
and have an infinite water supply.
- Problem on do_taste. A player can taste the bread, but when he tastes
the bread, it will apply the breads fill value without actually eating the
bread, thus having an infinite bread supply.
- Problem in nanny(). In nanny(), if a player answers 'no' to the 'is
that really your name?', the name pointer is never set to NULL. So, when
you drop link, the same pointer will be free [using free()] again inside
free_char().
- Problem in generic_find(). Uses str_cmp() instead of isname()
in FIND_OBJ_EQUIP.
- Problem in affect_from_char(). The variable hjp is given the value
hjp-next after hjp has been free()'d.
- Problem in shop.c. A has the scroll 'a tattered scroll' he wishes
to sell. Upon selling the item, a check is made for the keyword scroll
in the shopkeeper's inventory. Since scrolls of identify and scrolls of
recall are produced by the shop and have the keywords 'scroll', the game
assumes that the first scroll is one of these items and destroys the item
and never places it back for resale.
- Problem in the init_socket. The ports do not seem to clear freely, so
you end up with a lot of port binds. Here is a patch provided by
Dean Gaudet <dgaudet@arctic.org>
int init_socket(int port)
{
int s, sbuf, opt;
struct sockaddr_in sa;
struct linger ld;
memset(&sa, 0, sizeof(struct sockaddr_in));
sa.sin_family = AF_INET;
sa.sin_port = htons(port);
if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
exit(0);
}
opt = 1;
if (setsockopt(s,SOL_SOCKET,SO_REUSEADDR, (char *)&opt, sizeof(opt)) < 0) {
exit(1);
}
ld.l_onoff = 0; /* let's make sure this isn't on */
ld.l_linger = 1000; /* who cares what this is */
if (setsockopt(s, SOL_SOCKET, SO_LINGER, (char *)&ld, sizeof(ld)) < 0) {
exit(1);
}
......
if (bind(s, (struct sockaddr *)&sa, sizeof(sa)) < 0) {
if( close(s) ) {
syslogf("init_socket: error closing socket: %s", strerror(errno));
exit(1);
}
exit(0);
}
if( listen(s, 5) < 0 ) {
exit(1);
}
return(s);
}
- Check for unused variables by compiling with the -Wunused flag. This
will help in streamlining your code.
- Many typos, especially look in constants.c, act.obj1.c and act.other.c
- Echo on/off:
in interpreter.c, add this to the other includes:
#include <arpa/telnet.h>
create the following strings:
char echo_off[]={IAC,WILL,TELOPT_ECHO,'\0'};
char echo_on[]={IAC,WONT,TELOPT_ECHO,'\r','\n','\0'};
make the following macros:
#define ECHO_ON(d) SEND_TO_Q(echo_on,(d))
#define ECHO_OFF(d) SEND_TO_Q(echo_off,(d))
Then place in appropriate places where you want to turn
echo'ing on or off.
- "Are the any RFC's of interest?"
- The following RFC's can be of interest to Diku Implementors:
- RFC 1413: Telnet Identification Protocol
- RFC 854: Telnet Protocol
- RFC 857: Telnet Echo Option
- RFC's are located on many sites including
nic.ddn.mil and
wuarchive.wustl.edu.
- "What runs on Linux?"
- CircleMUD and ROM 2.4 were both developped on Linux, so neither
should have any problems compiling on Linux. Other muds such as MercMUD
and EnvyMUD have been reported to compile with very few problems.
- "How can I make the original DikuMud run on Linux?"
- From Derek J. Middleton with
corrections from Russell
Schultz
- To port DikuMud gamma 0.0 over to Linux, there are a couple things
that should be modified. This may not be everything, but here is what
needs to be done right off the bat:
- Add this to your #include section:
#if defined(linux) || defined(SYSV)
#include <sys/utsname.h>
#include <unistd.h>
#endif
- Change all calls to the srandom() function to srand()
- I believe there are two references like this. Change:
gettimeofday(&last_time, (struct timeval *) 0);
to:
gettimeofday(&last_time, (struct timezone *) 0);
- In addition, the init_socket() function needs to be re-worked quite
a bit. This is what I have:
int init_socket(int port) {
int s;
char opt = 1;
struct sockaddr_in sa;
struct hostent *hp;
struct linger ld;
struct utsname hostinfo;
char *hostname;
/* get the current hostname */
if (uname(&hostinfo)<0) {
perror("uname");
exit(1);
}
hostname = hostinfo.nodename;
memset(&sa, 0, sizeof(sa));
hp = gethostbyname(hostname);
if (hp == NULL)
{
perror("gethostbyname");
exit(1);
}
sa.sin_family = hp->h_addrtype;
sa.sin_port = htons(port);
s = socket(AF_INET, SOCK_STREAM, 0);
if (s < 0)
{
perror("Init-socket");
exit(1);
}
if (setsockopt (s, SOL_SOCKET, SO_REUSEADDR,
&opt, sizeof (opt)) < 0)
{
perror ("setsockopt REUSEADDR");
exit (1);
}
ld.l_onoff = 1;
ld.l_linger = 1000;
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &ld, sizeof(ld)) < 0)
{
perror("setsockopt LINGER");
exit(1);
}
if (bind(s, (struct sockaddr *) &sa, sizeof(sa)) < 0)
{
perror("bind");
close(s);
exit(1);
}
listen(s, 3);
return(s);
}
- Once this is done, you should be well on your way to having the Gamma
DikuMud running on your Linux system.
- "Are there any books of interest to admins?"
- Yes, these should be available at your local bookstore:
- _Unix Network Programming_
- Stevens, Richard W.
- Prentice Hall, 1990
- _The C Programming Language_
- Kernighan, Brian W.
- Ritchie, Dennis M.
- Prentice Hall, 1988
- [This is THE bible on C programming]
- "Are there any muds available with online creation?"
- The Isles is a Merc based DikuMud with Online Creation among a lot of
other enhancements.
- There is a copy of Envy mud with a ported version of The Isles OLC in
it.
- SMAUG, a newer code release based on Merc has a built in OLC system.
- Circle 3.xxx is also going to have online creation. (See
the next question)
- "When is Circle 3.0 going to be released?"
- See the CircleMUD
FAQ for more details on CircleMUD 3.x
- "Are there any mailing lists for administrators?"
- CircleMUD has a mailing list at <listserv@lists.queensu.ca>.
To subscribe, send it a piece of mail with the body 'subscribe circle
<first name> <last name>'.
- MercMUD and EnvyMUD have a mailing list at <merc-l-request@webnexus.com>
- To subscribe to this, send a piece of mail to that address with
the word 'subscribe' in the body.
- ROM also has a mailing list now. This can be found at <rom-request@cmc.net>.
To subscribe, send a piece of mail to this address with the word
'subscribe' in it.
- "Do I need to follow the license agreement?"
- YES YES YES YES YES!! No matter how much you have or think you have
changed in the code, you must included both the 'credits' file and
the names of the authors in the initial logon screen. There are no ifs,
ands, or buts about this.
- "Should I credit my area authors too?"
- Of course you should! The best way to do this is to either have
a help entry for 'areas' or 'zones' with
a listing of zones and their authors. Another way to do this would be to
use the Merc family method of having an 'areas' command
which lists the areas and authors. A final method would be to list them
in the credits of your mud. If all of your authors are credited
publically, it gives people more incentive to release areas to the public
and to create areas for your mud.
- To aid this, Nino Ruffini (Steppin of JediMUD) has lent his time in
order to compile a fairly extensive listing of areas and their authors.
This has been posted once to rgmd, and will soon be found on a web page
near you! Keep your eyes peeled for it.
Below is a list of commonly used sites for DikuMud related items. All
sites/contents are subject to change.
There are a good number of resource sites online and more seem to crop
up every day. The following is by no means a definitive list of available
resources, but should serve as a good starting point.
- http://www.dikumud.com/diku/
- The official DikuMud Homepages.
- http://www.efn.org/~rtaylor/
- This is the official release site of ROM.
- http://www.circlemud.org/
- The official CircleMUD homepages, complete with links to the CircleMUD
FAQ, various documentation for running a CircleMUD, etc.
- http://post.queensu.ca/~fletchra/Circle/
- This is the official CircleMUD FAQ site, as well as being the official
home of this FAQ. Also found here are a number of CircleMUD code snippets,
and links to CircleMUD area updates.
- http://post.queensu.ca/~fletchra/Caw/
- The official Curious Areas Workshop homepages. These pages include
area releases and the C.A.W. Builders' Handbook.
- http://www.mudconnect.com/
- The Mud Connector. This site has links to many online resources,
as well as links to over 800 muds.
- http://www.eden.com/~hsoi/mud/
- This site is the quintessential Macintosh Mudding Resource site, with
links to Mac Clients, code, and so forth.
- http://www.goodnet.com/~esnible/mudinfo.html
- A site with many links to building resources online, as well as links to
several area archives.
- http://www.game.org/heirarchy.html
- A page listing the approximate family tree of the DikuMud server, complete
with links to the home sites of many of the DikuMuds listed.
- http://tf.tcp.com/~hawkeye/tf/
- This is the homepage of the TinyFugue Client. This page gives
complete instructions on how to go about using the client and how to
get it.
- ftp://ftp.math.okstate.edu/pub/muds/
- This site contains a general mishmash of mud related software.
Unfortunately, it is somewhat out of date in general.
- ftp://ftp.pvv.unit.no/pub/mud/
- This has the server software for MUME as well as a few utilities for
DikuMuds. There are also some clients available here. For an example of
the MUME server software in action, see http://lbdsun3.epfl.ch/mume/
- ftp://ftp.tcp.com/pub/mud/
- This site is mostly out of date, but has a fairly large amount of mud
related items, including having the most recent releases of the TinyFugue
client.
- ftp://marble.bu.edu/pub/diku/
- This site is an older site pertaining to DikuMuds.
- ftp://grind.isca.uiowa.edu/unix/mud/dikumud/
- This site contains a fair number of servers as well as a few areas,
but does not tend to be updated very often.
- ftp://ftp.envy.com/pub/mud/
- This is the official release site of EnvyMud.
- ftp://ftp.game.org/pub/mud/diku/
- Probably one of the largest and most up to date FTP sites. It contains
almost every single DikuMud related server that has been publically released.
- ftp://ftp.circlemud.org/pub/CircleMUD/
- This is the offical site of the CircleMUD distribution. It contains
various releases of the CircleMUD server, as well as a plethora of CircleMUD
administrator contributed code and areas.
- ftp://ftp.io.com/pub/mud/
- This site contains a number of items relevant to DikuMuds, as well
as being the homesite for the Hidden Worlds Mud.
- ftp://ftp.cis.ufl.edu/pub/src/games/mud/
- The official site of the SillyMUD distribution.
- ftp://ftp.lysator.liu.se/pub/lpmud/clients/
- A site for PMF, an alternative client to TinTin.
- ftp://princeton.edu/pub/tintin++/dist/
- The official release site of the TinTin++ client.
Final Word
Playing a mud of any sort is NOT a right. The
people who run the game and the people who owns/runs the system that you
are playing from are not required to let you play. If you abuse your
privledge of playing, there are good chances that it will be taken away.
Back to the CircleMUD FAQ Site.
Alex Fletcher
Last modified: June 11, 1997