| 1 |
Run-time Installation and Configuration of PennMUSH |
|---|
| 2 |
|
|---|
| 3 |
This document assumes that you've successfully compiled and installed |
|---|
| 4 |
PennMUSH as described in the main PennMUSH README file. |
|---|
| 5 |
|
|---|
| 6 |
The next step is to create your configuration file. In the game |
|---|
| 7 |
directory is a file called "mush.cnf". If you don't have mush.cnf, but |
|---|
| 8 |
you have mushcnf.dst, you can copy mushcnf.dst to mush.cnf. This file |
|---|
| 9 |
is a list of all runtime configuration options with their default |
|---|
| 10 |
settting. Change them as you see fit. IMPORTANT: do not _delete_ any |
|---|
| 11 |
parameters. They all need to be there. |
|---|
| 12 |
|
|---|
| 13 |
WIN32 WITH MSVC++: |
|---|
| 14 |
Under win32 using the Microsoft compiler, ignore the restart script. |
|---|
| 15 |
In the configuration file, turn off disk database compression; it is |
|---|
| 16 |
not supported. Then go to the game directory and run PennMUSH.exe. |
|---|
| 17 |
Poof, you're done. |
|---|
| 18 |
|
|---|
| 19 |
UNIX or WIN32 VIA CYGWIN/MINGW: |
|---|
| 20 |
Edit the restart script. Change GAMEDIR to the path to the directory |
|---|
| 21 |
containing mush.cnf. Read about the optional settings in that file. |
|---|
| 22 |
The restart script is written for sh, and assumes a fairly standard |
|---|
| 23 |
Berkeley UNIX setup. If you're on a HP-UX or SysV machine, for |
|---|
| 24 |
example, you may need to change the restart script a bit. Then run |
|---|
| 25 |
it, with 'sh restart' or './restart'. |
|---|
| 26 |
|
|---|
| 27 |
You should now be able to log into the game. This distribution can |
|---|
| 28 |
general a minimal database - a God character, starting room, and |
|---|
| 29 |
master room. The server will generate this database if it doesn't |
|---|
| 30 |
find another database to load. |
|---|
| 31 |
|
|---|
| 32 |
If you're starting with the minimal database, the god character "One" |
|---|
| 33 |
has no password, so you can log in without one. Of course, you should |
|---|
| 34 |
immediately set one (via @newpasswd). options.h has the Master Room |
|---|
| 35 |
as #2 by default; in the minimal database, this room is created for |
|---|
| 36 |
you. |
|---|
| 37 |
|
|---|
| 38 |
Now you should be set -- all you have to do now is customize the .txt |
|---|
| 39 |
files in the game directory. |
|---|
| 40 |
|
|---|
| 41 |
The logfiles in the "log" directory generally contain useful |
|---|
| 42 |
information. You will probably want to read your error logfile |
|---|
| 43 |
(defined in mush.cnf) every time, since errors and other important |
|---|
| 44 |
messages get printed to that logfile. |
|---|
| 45 |
|
|---|
| 46 |
After your first startup, it's a good idea to make some small change |
|---|
| 47 |
to the database (e.g., @create an object) and then do an |
|---|
| 48 |
@shutdown. Restart the game again and ensure that your object is still |
|---|
| 49 |
present - this verifies that the server is successfully dumping. |
|---|
| 50 |
|
|---|
| 51 |
============================================================================ |
|---|
| 52 |
|
|---|
| 53 |
Game Trouble-shooting |
|---|
| 54 |
|
|---|
| 55 |
If you ever run into trouble, the your first reaction should ALWAYS be |
|---|
| 56 |
to back up your database. indb.Z.old is the file that the MUSH saves |
|---|
| 57 |
indb.Z to when the game, restarted, indb.Z is the file that the MUSH |
|---|
| 58 |
loaded at startup, and outdb.Z is the file to which the MUSH is |
|---|
| 59 |
currently dumping the database. |
|---|
| 60 |
|
|---|
| 61 |
You can tell if a dump is (theoretically) complete by doing a |
|---|
| 62 |
"zcat <database file name> | tail -10". The last line should read |
|---|
| 63 |
"***END OF DUMP***". If it doesn't, your database has been truncated |
|---|
| 64 |
for some reason. Check the logfile. Possible causes include a full |
|---|
| 65 |
process table, a full disk partition, or running out of disk quota. |
|---|
| 66 |
|
|---|
| 67 |
Occasionally the dump process may dump core. This is caused by some |
|---|
| 68 |
sort of corruption in an attribute, normally. You can tell if the dump |
|---|
| 69 |
process has died by looking in your data directory; you will see |
|---|
| 70 |
something like "outdb.Z.#5#". Wait a few moments and check on the file |
|---|
| 71 |
again. If it has grown, then the game is in the process of a normal |
|---|
| 72 |
dump. If it hasn't, and there's a core file, then something has gone |
|---|
| 73 |
wrong. You should definitely shout a warning that building is not being |
|---|
| 74 |
saved. |
|---|
| 75 |
|
|---|
| 76 |
To attempt to fix the problem, do a @dbck to take care of any possible |
|---|
| 77 |
minor weirdness in the database, then try doing a "@dump/paranoid", |
|---|
| 78 |
and reading the checkpoint logfile (default is log/checkpt.log). This |
|---|
| 79 |
is slow, but it will write out an uncorrupted database, and tell you |
|---|
| 80 |
what it fixed. Back up that database and indb.Z, then figure out what |
|---|
| 81 |
you're going to do next: you can take the game down with a kill -9, or |
|---|
| 82 |
attempt to manually fix the problem by either @destroying the |
|---|
| 83 |
offending object, or attempting to reset the attributes on the object |
|---|
| 84 |
that are causing a problem. If "@dump/paranoid" dies, you are more or |
|---|
| 85 |
less out of luck. |
|---|
| 86 |
|
|---|
| 87 |
The game may crash from time to time. It will generate a core file, |
|---|
| 88 |
usually; if you don't limit the coredumpsize or strip the executable, |
|---|
| 89 |
you should be able to get some useful information out of it, using a |
|---|
| 90 |
debugger. Javelin is interested in stack traces. You can do a stack |
|---|
| 91 |
trace in the following manner: Go into the directory where you keep |
|---|
| 92 |
your source code, and type |
|---|
| 93 |
<name of debugger> netmud ../game/core |
|---|
| 94 |
If you don't call your executable "netmud", substitute in whatever you |
|---|
| 95 |
do call it. |
|---|
| 96 |
|
|---|
| 97 |
You are looking for variables set to bizarre values - attempts to |
|---|
| 98 |
access objects that aren't there, attempts to use pointers which point |
|---|
| 99 |
to nothing, and the like. |
|---|
| 100 |
|
|---|
| 101 |
If you are using the "adb" debugger (don't do this unless you really |
|---|
| 102 |
have absolutely nothing else available), you will see nothing. It's |
|---|
| 103 |
loaded and ready, though. Type "$c". This will print out a list of the |
|---|
| 104 |
functions it called. Type "$q" to quit. You can't really get much more |
|---|
| 105 |
useful information out of adb. |
|---|
| 106 |
|
|---|
| 107 |
If you are using the "dbx" debugger, type "where" to see the stack |
|---|
| 108 |
trace. You can move through it using "up" and "down", and see exactly |
|---|
| 109 |
what the sequence of calls was. You can also use "print <variable |
|---|
| 110 |
name>" to see the value of a variable at the time the game crashed. |
|---|
| 111 |
The "gdb" debugger is similar to "dbx"; with that, you can abbreviate |
|---|
| 112 |
"print" as "p". It is the reccomended debugger to use; when gdb is |
|---|
| 113 |
present on your system and you're using gcc as the compiler, gcc is |
|---|
| 114 |
told to use a gdb-specific debugging format. |
|---|
| 115 |
|
|---|
| 116 |
If you want to start PennMUSH running under a debugger, instead of |
|---|
| 117 |
attaching to an already-running process, it'll need two arguments: |
|---|
| 118 |
--no-session, and the name of your config file if it is different than |
|---|
| 119 |
mush.cnf. Without --no-session, the server will immediately fork off a |
|---|
| 120 |
detatched child process, and the debugger will tell you that the |
|---|
| 121 |
process exited normally.. |
|---|
| 122 |
|
|---|
| 123 |
The PennMUSH developers appreciate news of any bugs found, and any |
|---|
| 124 |
patches that have been written to deal with them. We are also |
|---|
| 125 |
interested in any extensions that people make to the code, and |
|---|
| 126 |
requests that ones that are of more than just local interest be sent |
|---|
| 127 |
to us for inclusion in the next release of this code. See |
|---|
| 128 |
http://dev.pennmush.org. |
|---|
| 129 |
|
|---|
| 130 |
One important thing to remember is, if the MUSH refuses to start, |
|---|
| 131 |
there is probably a good reason. Check the MUSH log, and the core |
|---|
| 132 |
file, if there is one. Make sure to back up your database before |
|---|
| 133 |
attempting to restart -- remember that every time it restarts, it |
|---|
| 134 |
overwrites indb.Z.old. If you restart three times and somehow manage |
|---|
| 135 |
to trash your database each time (for example, a full process table |
|---|
| 136 |
zero'ing out your files), you won't have a backup to restart from, |
|---|
| 137 |
unless you've backed up your database before trying! |
|---|
| 138 |
|
|---|
| 139 |
You can also find helpful tips in Javelin's Guide for Gods, |
|---|
| 140 |
which is available on the WWW as |
|---|
| 141 |
http://javelin.pennmush.org/~alansz/guide.html |
|---|
| 142 |
and by ftp from ftp.pennmush.org as |
|---|
| 143 |
/PennMUSH/Guide/guide-single.txt |
|---|
| 144 |
|
|---|