| 1 | |
|---|
| 2 | ****IF YOU'VE NEVER USED A POST-PL10 PENNMUSH RELEASE, READ THIS FILE! |
|---|
| 3 | ****INSTALLATION AND CONFIGURATION PROCEDURES HAVE CHANGED SINCE PL10! |
|---|
| 4 | |
|---|
| 5 | ============================================================================ |
|---|
| 6 | User's Guide to PennMUSH (post-pl10) |
|---|
| 7 | ============================================================================ |
|---|
| 8 | |
|---|
| 9 | Most of this Guide was written by Amberyl, and is used with permission. |
|---|
| 10 | Modifications are by Paul/Javelin. |
|---|
| 11 | |
|---|
| 12 | I. Introduction |
|---|
| 13 | II. Installation Guide (new users) |
|---|
| 14 | III. Conversion Guide (previous users) *NEW STUFF* |
|---|
| 15 | IV. Additional Options |
|---|
| 16 | V. Trouble-shooting |
|---|
| 17 | VI. Comments |
|---|
| 18 | |
|---|
| 19 | You may also want to take a look at Javelin's Guide for PennMUSH Gods, |
|---|
| 20 | at http://mellers1.psych.berkeley.edu/~alansz/guide.html |
|---|
| 21 | or by ftp from mellers1.psych.berkeley.edu, /pub/PennMUSH/Guide |
|---|
| 22 | ============================================================================ |
|---|
| 23 | |
|---|
| 24 | I. Introduction |
|---|
| 25 | |
|---|
| 26 | PennMUSH is a TinyMUD derivative, and one of the branches along the |
|---|
| 27 | MUSH line. "Vanilla" TinyMUSH, which added the "v" registers and functions |
|---|
| 28 | to the basic TinyMUD building commands, was written by Larry Foard. The |
|---|
| 29 | code was later expanded by Jin, of MicroMUSH. In January of 1991, MicroMUSH |
|---|
| 30 | changed its name to MicroMUSE, and the code there continued to develop |
|---|
| 31 | under the MUSE name. At that same point in time, Moonchilde took the last |
|---|
| 32 | public release of that code and began a series of improvements and extensions. |
|---|
| 33 | |
|---|
| 34 | That code was released as PernMUSH, named for the MUSH that Moonchilde |
|---|
| 35 | was running. The last released version of that code was version 1.15, at |
|---|
| 36 | the end of November 1991. PernMUSH itself had switched over to TinyMUSH 2.0, |
|---|
| 37 | which Moonchilde had co-written with Glenn Crocker (Wizard of TinyCWRU); |
|---|
| 38 | there was no longer a reason for Moonchilde to maintain this code. |
|---|
| 39 | |
|---|
| 40 | In January of 1992, Amberyl began working on the PernMUSH 1.15 code |
|---|
| 41 | release, for TinyKrynn. She took over the code, which no one was supporting, |
|---|
| 42 | and is continuing to work on extending this code, as well as improving its |
|---|
| 43 | compatibility with TinyMUSH 2.0. She changed the name to PennMUSH |
|---|
| 44 | (named for her school, the University of Pennsylvania), to avoid the |
|---|
| 45 | confusion that resulted from PernMUSH actually running TinyMUSH 2.0. |
|---|
| 46 | |
|---|
| 47 | PennMUSH is memory-based; TinyMUSH is disk-based. PennMUSH can |
|---|
| 48 | run in very little disk space, but very large databases (25,000+ |
|---|
| 49 | objects) can take up a prohibitive amount of memory. TinyMUSH has a |
|---|
| 50 | fairly large initial memory requirement, and uses a lot of disk space, |
|---|
| 51 | but has the advantage of being more efficient, as well as a vastly |
|---|
| 52 | slower rate of growth in memory usage, once the database gets to about |
|---|
| 53 | ten thousand or so objects. It is possible to switch from PennMUSH to |
|---|
| 54 | TinyMUSH, as well as vice versa, so you are not "stuck" with any one |
|---|
| 55 | code. |
|---|
| 56 | |
|---|
| 57 | In January of 1995, Amberyl passed on her mantle to Javelin |
|---|
| 58 | (aka Paul@Dune, Alan Schwartz), who is now the maintainer of the |
|---|
| 59 | primary public distribution in development. He released two patchlevels |
|---|
| 60 | numbered "dune-1" and "dune-2" before releasing PennMUSH 1.50 pl11 and |
|---|
| 61 | later distributions. The numbering scheme changed again with PennMUSH |
|---|
| 62 | 1.6.0 (see CHANGES-9). |
|---|
| 63 | |
|---|
| 64 | TinyMUSH 2.0 is capable of reading in databases from all PennMUSH |
|---|
| 65 | versions (though some optional features may have to be configured out of |
|---|
| 66 | the database before handing it off to Tiny). A program to convert |
|---|
| 67 | PennMUSH 1.50 format into TinyMUSH 2.0.6 format is available from |
|---|
| 68 | Amberyl via email; she hasn't gotten around to writing a converter for |
|---|
| 69 | later formats yet. |
|---|
| 70 | |
|---|
| 71 | A MUSH manual should be available at caisr2.caisr.cwru.edu, |
|---|
| 72 | ftp.math.okstate.edu, primerd.prime.com, or from wherever you got this |
|---|
| 73 | code from. The manual should be numbered version 2.007 or higher. |
|---|
| 74 | |
|---|
| 75 | If you are planning on modifying the source code to PennMUSH, |
|---|
| 76 | you'll probably want Javelin's Guide for PennMUSH Gods, which should |
|---|
| 77 | be available where you got this code, or, in hypertext, as |
|---|
| 78 | http://mellers1.psych.berkeley.edu/~alansz/guide.html |
|---|
| 79 | |
|---|
| 80 | Enjoy! |
|---|
| 81 | |
|---|
| 82 | ============================================================================ |
|---|
| 83 | |
|---|
| 84 | II. Installation (new users) |
|---|
| 85 | |
|---|
| 86 | DISCLAIMER: Before attempting to run a MUD of any sort, you should |
|---|
| 87 | have some reasonable knowledge of UNIX and C. If you do not, it is |
|---|
| 88 | _strongly_ suggested that you learn UNIX and C to some reasonable level |
|---|
| 89 | of competency before attempting to set up a MUSH. |
|---|
| 90 | |
|---|
| 91 | The MUSH directories are organized fairly simply: source code is in |
|---|
| 92 | the src subdirectory, with RWHO-related stuff in the RWHO directory |
|---|
| 93 | below it, and ident-related stuff in the IDENT directory below it; |
|---|
| 94 | header files are in the hdrs subdirectory; all things related to |
|---|
| 95 | running the game itself are in the "game" subdirectory. That directory |
|---|
| 96 | contains four subdirectories -- "data" (current databases), "save" |
|---|
| 97 | (backup databases), "txt" (text files), and "log" (log files). |
|---|
| 98 | |
|---|
| 99 | First, type 'sh Configure' in the top directory. This script |
|---|
| 100 | will ask you some questions and attempt to identify the proper Makefile |
|---|
| 101 | settings for your system. The default answers are very likely to be |
|---|
| 102 | correct, except that if you have gcc 2.0 or later, you should generally |
|---|
| 103 | prefer to compile with that than with your system's cc compiler. |
|---|
| 104 | |
|---|
| 105 | Configure will create a Makefile, a config.h file, and |
|---|
| 106 | a confmagic.h file. Probably you don't want to modify these, though |
|---|
| 107 | you could tweak the Makefile if you like. If that's necessary, |
|---|
| 108 | please report it to me so that it can be corrected in |
|---|
| 109 | future versions. |
|---|
| 110 | |
|---|
| 111 | EITHER: |
|---|
| 112 | |
|---|
| 113 | Then, copy options.h.dist to options.h and dune.h.dist to dune.h. |
|---|
| 114 | Note that these files stay in the top directory, as there is a symbolic |
|---|
| 115 | link to them from the hdrs directory. |
|---|
| 116 | Then, edit options.h. The file is fairly liberally commented. |
|---|
| 117 | You should definitely read the entire thing before figuring out what |
|---|
| 118 | you want to change. |
|---|
| 119 | Do the same with dune.h |
|---|
| 120 | Also, cp game/mushcnf.dst to game/mush.cnf. |
|---|
| 121 | |
|---|
| 122 | OR: |
|---|
| 123 | |
|---|
| 124 | Type 'make update', and answer all the questions about |
|---|
| 125 | which MUSH options you want. |
|---|
| 126 | |
|---|
| 127 | If you want the chat system, set CHAT_SYSTEM to 3 or 4. If you don't |
|---|
| 128 | want it, set CHAT_SYSTEM to 0. PennMUSH is now intelligent enough |
|---|
| 129 | to convert db's back and forth automatically. |
|---|
| 130 | |
|---|
| 131 | If you use CHAT_SYSTEM 3, the initial default chat channels are |
|---|
| 132 | listed in chat.c. You can change these defaults at runtime (read |
|---|
| 133 | the help for @channel, and put the relevant commands on the @startup of |
|---|
| 134 | an object). CHAT_SYSTEM 4 doesn't hardcode the chat channels, and |
|---|
| 135 | is recommended. |
|---|
| 136 | |
|---|
| 137 | You do not need to change any of the other header files. |
|---|
| 138 | |
|---|
| 139 | You next have to make sure you're set up for the IPC you need for |
|---|
| 140 | your machine. The only IPC package which is guaranteed to work is |
|---|
| 141 | bsd.c. Nick Gammon <nick@connexus.apana.org.au> is responsible for |
|---|
| 142 | the WIN32 port, and can answer questions about compiling for Windows 95/NT. |
|---|
| 143 | |
|---|
| 144 | Now, finally, edit src/Makefile. Pick your compiler, memory |
|---|
| 145 | options, and other stuff. For now, you will not want to run with any |
|---|
| 146 | RWHO or IDENT options, so just use the default there. |
|---|
| 147 | |
|---|
| 148 | Do a "make install". This will build all the necessary files, and |
|---|
| 149 | set up some symbolic links for the restart script. You will need to |
|---|
| 150 | use "mkindx" to build the indexes for news and help (and events, if |
|---|
| 151 | you're using that). The format is 'mkindx <text file> <index file>'. |
|---|
| 152 | You must change the index file every time you change its associated |
|---|
| 153 | text file. The restart script automatically builds the indexes for you |
|---|
| 154 | every time you start the game. You do not need to worry about the |
|---|
| 155 | "extract" and "dump" utilities. |
|---|
| 156 | |
|---|
| 157 | If you plan to run multiple MUSHes, you may want to do a |
|---|
| 158 | "make customize" which will run a script to help set up a separate |
|---|
| 159 | customized game subdirectory for each MUSH (run it once per MUSH you |
|---|
| 160 | plan to run). Files in these subdirectories will already be |
|---|
| 161 | customized in many ways, so what follows may be slightly different. :) |
|---|
| 162 | |
|---|
| 163 | The next step is to create your configuration file. In the game |
|---|
| 164 | directory is a file called "mush.cnf". You may want to rename it |
|---|
| 165 | <your MUSH name>.cnf. This is a list of all runtime configuration |
|---|
| 166 | options with their default settting. Change them as you see fit. |
|---|
| 167 | IMPORTANT: do not _delete_ any parameters. They all need to be there. |
|---|
| 168 | |
|---|
| 169 | Next, you must edit the restart script. You will probably want |
|---|
| 170 | to change the INDB to indb.Z, and you almost definitely will to change |
|---|
| 171 | GAMEDIR. That should be whatever directory the restart script is in. |
|---|
| 172 | You will also probably need to change the name of the configuration file, |
|---|
| 173 | as well as possibly some of the other file names, depending on what you |
|---|
| 174 | chose in the config file. The restart script is written for sh, and |
|---|
| 175 | assumes a fairly standard Berkeley UNIX setup. If you're on a HP-UX |
|---|
| 176 | or SysV machine, for example, you may need to change the restart script |
|---|
| 177 | a bit (the ps options, for example). |
|---|
| 178 | |
|---|
| 179 | You should now be ready to start the game. This distribution comes |
|---|
| 180 | packaged with a basic database - a God character, starting room, and master |
|---|
| 181 | room. This file is called game/data/minimal.db.Z. You will probably want |
|---|
| 182 | to rename this file to indb.Z (it needs to be the same as INDB in the |
|---|
| 183 | restart script). The god character "One" has a default password of |
|---|
| 184 | "one", which you should change immediately (via @password). |
|---|
| 185 | options.h has the Master Room as #2 by default; in the provided database, |
|---|
| 186 | this room is created for you. |
|---|
| 187 | |
|---|
| 188 | Now you should be set -- all you have to do now is customize the |
|---|
| 189 | .txt files in the game directory. |
|---|
| 190 | |
|---|
| 191 | The logfiles in the "log" directory generally contain useful |
|---|
| 192 | information. You will probably want to read your main logfile (defined |
|---|
| 193 | in the restart script) every time, since errors and other important |
|---|
| 194 | messages get printed to that logfile. |
|---|
| 195 | |
|---|
| 196 | If you have any problems, feel free to contact Paul via email |
|---|
| 197 | at dunemush@mellers1.psych.berkeley.edu. PLEASE include the version |
|---|
| 198 | number you are attempting to compile, the type of machine and operating |
|---|
| 199 | system you are using, and, if possible, the address of the MUSH. |
|---|
| 200 | |
|---|
| 201 | ============================================================================ |
|---|
| 202 | |
|---|
| 203 | III. Conversion Guide (previous users) |
|---|
| 204 | |
|---|
| 205 | 1. dune.h/options.h/mush.cnf |
|---|
| 206 | |
|---|
| 207 | The 'make update' command will run the update.pl program, |
|---|
| 208 | which examines the current dune.h and options.h files, compares |
|---|
| 209 | them with dune.h.dist and options.h.dist, and reports any new |
|---|
| 210 | or removed options which you can choose to define (or not) |
|---|
| 211 | interactively. It's designed to make upgrading your dune.h/options.h |
|---|
| 212 | from patchlevel to patchlevel a much easier process. |
|---|
| 213 | |
|---|
| 214 | Assuming you've unpacked the new patchlevel in a directory |
|---|
| 215 | called new/, and the old one in a directory called old/, you should |
|---|
| 216 | copy your old dune.h and options.h files into new/, and then |
|---|
| 217 | type 'make update'. |
|---|
| 218 | |
|---|
| 219 | Make update also updates your mush.cnf file. Again, copy |
|---|
| 220 | your old mush.cnf file to new/game/mush.cnf and run make update. |
|---|
| 221 | |
|---|
| 222 | 2. Database format |
|---|
| 223 | |
|---|
| 224 | This MUSH version will read databases along the main branch of |
|---|
| 225 | MUSH evolution -- TinyMUD, vanilla TinyMUSH, MicroMUSH, and all |
|---|
| 226 | Pern/PennMUSH versions. If you need to convert a TinyMUSH 2.0 database, |
|---|
| 227 | please contact Amberyl, and she'll mail you an extension to 2.0 that will |
|---|
| 228 | dump a 1.50-readable flatfile. |
|---|
| 229 | |
|---|
| 230 | Starting from release "Dune-2", PennMUSH uses the version header |
|---|
| 231 | in the database to automatically read the db correctly, no matter what |
|---|
| 232 | options you have set, and to write a db which reflects those options. |
|---|
| 233 | If you plan to convert a PennMUSH db to TinyMUSH 2.0, you'll have to |
|---|
| 234 | unset all the options which add to the db (except the CHAT_SYSTEM), |
|---|
| 235 | start up like that, and then shutdown to dump a plain PennMUSH pl10 db. |
|---|
| 236 | You will lose all special info (warnings, etc.) in that db, so keep a |
|---|
| 237 | copy of the original! |
|---|
| 238 | |
|---|
| 239 | It might be necessary to do some conversions, depending on |
|---|
| 240 | what version you are converting from. The "ADD_<whatever>" options |
|---|
| 241 | govern the conversions; to convert, compile with whatever |
|---|
| 242 | ADD options you need defined, start up the game, do a @shutdown, |
|---|
| 243 | recompile with those options turned off, and then start the game again. |
|---|
| 244 | |
|---|
| 245 | If you are upgrading from 1.50.p7 or 1.50.p8, you will not need to |
|---|
| 246 | do any conversions. From PennMUSH 1.50 versions before patchlevel 7, you will |
|---|
| 247 | need to define ADD_POWERS. If you have a 1.x MUSH database dating before |
|---|
| 248 | 1.50, you should ftp PennMUSH 1.50 patchlevel 5, and convert your database |
|---|
| 249 | to 1.50 format, then follow the directions for ADD_POWERS above. |
|---|
| 250 | |
|---|
| 251 | If you do not do the conversion correctly, when you attempt |
|---|
| 252 | to start the game, you will get an error message like "bad attribute" |
|---|
| 253 | in the logfile, and the MUSH will refuse to start. You will definitely |
|---|
| 254 | want to back up your database before attempting to do any conversions. |
|---|
| 255 | |
|---|
| 256 | If you are upgrading from patchlevel 5 or earlier, please note |
|---|
| 257 | that in patchlevel 6, compile-time configuration options were moved |
|---|
| 258 | into options.h, and the restart script was written in sh instead of csh. |
|---|
| 259 | |
|---|
| 260 | Please read the CHANGES files. They contain a large amount of |
|---|
| 261 | important information. A list of code changes that affect players is |
|---|
| 262 | given in news.txt. You may want to clip that section for your own news file. |
|---|
| 263 | |
|---|
| 264 | 3. Improved destroy code |
|---|
| 265 | |
|---|
| 266 | NOTE: Past versions of PennMUSH were vulnerable to some types of |
|---|
| 267 | database corruption. In particular, a room could lose track of its |
|---|
| 268 | exits, which would then take up space in the database, but not be |
|---|
| 269 | accessible by any ordinary method. |
|---|
| 270 | |
|---|
| 271 | PennMUSH 1.6.0 identifies these corruptions and fixes them. When the |
|---|
| 272 | MUSH first does an @dbck (about 10 minutes after startup) you may get |
|---|
| 273 | a bunch of messages like this in your netmush.log: |
|---|
| 274 | |
|---|
| 275 | ERROR: Exit Out;o(#123E) leading from invalid room #456 destroyed. |
|---|
| 276 | |
|---|
| 277 | and |
|---|
| 278 | |
|---|
| 279 | Object Out;o(#456E) not pointed to by anything. |
|---|
| 280 | Orphaned exit destroyed. |
|---|
| 281 | |
|---|
| 282 | and |
|---|
| 283 | |
|---|
| 284 | Object Out;o(#789E) not pointed to by anything. |
|---|
| 285 | Moved to Room(#1234R). |
|---|
| 286 | |
|---|
| 287 | Do not be alarmed about a burst of these messages in the first ten |
|---|
| 288 | minutes after startup. Most databases will have some of these orphaned |
|---|
| 289 | exits. |
|---|
| 290 | |
|---|
| 291 | Do, however, inspect each of the rooms to which exits are moved, to |
|---|
| 292 | decide whether you want to welcome back the prodigal exits. It is likely |
|---|
| 293 | that many of the exits that get relinked may have been duplicated by |
|---|
| 294 | later building. (One room on my test database ended up with three North;n |
|---|
| 295 | exits and three south;s exits.) |
|---|
| 296 | |
|---|
| 297 | If errors like this happen after that initial burst, it then merits |
|---|
| 298 | some concern. The initial burst of messages, though, should be a cause |
|---|
| 299 | for attention, but not for alarm. |
|---|
| 300 | |
|---|
| 301 | [This message by RLM] |
|---|
| 302 | |
|---|
| 303 | ============================================================================ |
|---|
| 304 | |
|---|
| 305 | IV. Additional Options |
|---|
| 306 | |
|---|
| 307 | There are two additional major things which you can change: IDENT |
|---|
| 308 | and RWHO. IDENT allows your MUSH to report now only a player's site |
|---|
| 309 | of connection, but their account name, if they connect from a site |
|---|
| 310 | which runs an ident daemon (e.g. netcom.com, crl.com, and others). |
|---|
| 311 | |
|---|
| 312 | MUSH provides an interface for connecting to an RWHO server. |
|---|
| 313 | RWHO servers allow players to see who is connected to many MUDs via |
|---|
| 314 | telnet, or, if the administrator allows it, via a direct RWHO command |
|---|
| 315 | from the game. |
|---|
| 316 | |
|---|
| 317 | There are three possible options for RWHO. The first is not to |
|---|
| 318 | use it. This is the default, and you can feel free to just keep it |
|---|
| 319 | that way. |
|---|
| 320 | |
|---|
| 321 | The second option is to send login info to a remote RWHO server. |
|---|
| 322 | This option is highly recommended, since it is simple and painless. It |
|---|
| 323 | uses UDP to send the info, so there will be no slowdown of the game by |
|---|
| 324 | enabling this. There are several steps to getting this set up. |
|---|
| 325 | |
|---|
| 326 | 1) Contact the administrator of an RWHO server and ask if you can |
|---|
| 327 | send login info to that server. The names of administrators |
|---|
| 328 | are generally in the MUDlist posted to rec.games.mud.misc. |
|---|
| 329 | One of the larger servers is run by Moira (Jennifer Smith, |
|---|
| 330 | jds@moebius.math.okstate.edu). Try sending her mail, with |
|---|
| 331 | the name and address of your MUSH. |
|---|
| 332 | 2) The administrator will probably send you mail back within a |
|---|
| 333 | day or two, with additional info. You will get a password |
|---|
| 334 | and an address for the RWHO server. Change the appropriate |
|---|
| 335 | things in options.h and recompile. You should then be set. |
|---|
| 336 | |
|---|
| 337 | The third option is to send info to the RWHO server, AND enable |
|---|
| 338 | reading RWHO server info from within the MUSH (via the RWHO command). |
|---|
| 339 | This is a BAD idea unless the RWHO server and the MUSH are on the same |
|---|
| 340 | LOCAL network. The reason for this is that retrieving RWHO info uses |
|---|
| 341 | a stream port, and the MUSH could freeze if the net between it and the |
|---|
| 342 | RWHO server went down. If you MUST run this way, you might want to talk |
|---|
| 343 | to mjr@decuac.dec.com about how to set up your own RWHO server. |
|---|
| 344 | |
|---|
| 345 | MUSH also provides an interface to the identd daemon on remote |
|---|
| 346 | sites. Players who connect from these sites can be identified not only |
|---|
| 347 | by site, but by account name. Like RWHO, you can choose to use IDENT |
|---|
| 348 | or not. If you choose to use it, the ident_timeout configuration option |
|---|
| 349 | in mush.conf lets you set the maximum number of seconds the MUSH will |
|---|
| 350 | wait to get an identd response. |
|---|
| 351 | |
|---|
| 352 | Another option you may want to consider is allowing your MUSH |
|---|
| 353 | to receive remote messages from other MUSHes via rpage. This uses UDP, |
|---|
| 354 | and does not slow down or otherwise endanger the MUSH. If you wish to |
|---|
| 355 | do this, you should contact Amberyl to get the rpage code, and compile |
|---|
| 356 | with ALLOW_RPAGE defined. |
|---|
| 357 | |
|---|
| 358 | You should then contact the Gods of some other MUSHes. You will |
|---|
| 359 | need, for each MUSH, to agree on a password. You will need to do a: |
|---|
| 360 | rpage/add OtherMUSH password=address.of.other.mush |
|---|
| 361 | and the God of the other MUSH will need to do a: |
|---|
| 362 | rpage/add YourMUSH password=address.of.your.mush |
|---|
| 363 | |
|---|
| 364 | The name of the MUSH must be the same as that in "@version", |
|---|
| 365 | aliases are allowed for additional entries, but one entry MUST be the |
|---|
| 366 | name the MUSH uses in its conf file. |
|---|
| 367 | |
|---|
| 368 | The final thing you may want to think about is compiling |
|---|
| 369 | announce.c or portmsg.c. These are port announcers; if your |
|---|
| 370 | MUSH ever goes down, you can set one up, and a message will be given to |
|---|
| 371 | a person attempting to connect to that port. Read that file for |
|---|
| 372 | details. It is not an official MUSH piece of code; rather, it is a |
|---|
| 373 | freely distributable program available via anonymous FTP that is |
|---|
| 374 | included in this code because it happens to be fairly useful. |
|---|
| 375 | Paul suggests using portmsg - it appears to be more stable. |
|---|
| 376 | |
|---|
| 377 | ============================================================================ |
|---|
| 378 | |
|---|
| 379 | V. Trouble-shooting |
|---|
| 380 | |
|---|
| 381 | If you ever run into trouble, the your first reaction should |
|---|
| 382 | ALWAYS be to back up your database. indb.Z.old is the file that the |
|---|
| 383 | MUSH saves indb.Z to when the game, restarted, indb.Z is the file that |
|---|
| 384 | the MUSH loaded at startup, and outdb.Z is the file to which the MUSH |
|---|
| 385 | is currently dumping the database. |
|---|
| 386 | |
|---|
| 387 | You can tell if a dump is (theoretically) complete by doing a |
|---|
| 388 | "zcat <database file name> | tail -10". The last line should read |
|---|
| 389 | "***END OF DUMP***". If it doesn't, your database has been truncated |
|---|
| 390 | for some reason. Check the logfile. Possible causes include a full |
|---|
| 391 | process table, a full disk partition, or running out of disk quota. |
|---|
| 392 | |
|---|
| 393 | Occasionally the dump process may dump core. This is caused |
|---|
| 394 | by some sort of corruption in an attribute, normally. You can tell |
|---|
| 395 | if the dump process has died by looking in your data directory; you |
|---|
| 396 | will see something like "outdb.Z.#5#". Wait a few moments and check |
|---|
| 397 | on the file again. If it has grown, then the game is in the process |
|---|
| 398 | of a normal dump. If it hasn't, and there's a core file, then something |
|---|
| 399 | has gone wrong. You should definitely shout a warning that building |
|---|
| 400 | is not being saved. |
|---|
| 401 | |
|---|
| 402 | To attempt to fix the problem, do a @dbck to take care of any |
|---|
| 403 | possible minor weirdness in the database, then try doing a "@dump/paranoid", |
|---|
| 404 | and reading the checkpoint logfile (default is log/checkpt.log). This is |
|---|
| 405 | slow, but it will write out an uncorrupted database, and tell you what it |
|---|
| 406 | fixed. Back up that database and indb.Z, then figure out what you're going |
|---|
| 407 | to do next: you can take the game down with a kill -9, or attempt to |
|---|
| 408 | manually fix the problem by either @destroying the offending object, or |
|---|
| 409 | attempting to reset the attributes on the object that are causing a problem. |
|---|
| 410 | If "@dump/paranoid" dies, you are more or less out of luck. |
|---|
| 411 | |
|---|
| 412 | To fix weirdness in numerical fields, such as location or flags, |
|---|
| 413 | use the "examine/debug" and "@fixdb" commands. Don't do this unless you |
|---|
| 414 | know precisely what you're trying to fix, since it's possible to produce |
|---|
| 415 | database inconsistencies which will panic, crash, or hang the server. |
|---|
| 416 | |
|---|
| 417 | The game may crash from time to time. It will generate a |
|---|
| 418 | core file, usually; if you don't limit the coredumpsize or strip the |
|---|
| 419 | executable, you should be able to get some useful information out of |
|---|
| 420 | it, using a debugger. Paul is interested in stack traces. You can |
|---|
| 421 | do a stack trace in the following manner: Go into the directory where |
|---|
| 422 | you keep your source code, and type |
|---|
| 423 | <name of debugger> netmud game/core |
|---|
| 424 | If you don't call your executable "netmud", substitute in whatever |
|---|
| 425 | you do call it. |
|---|
| 426 | |
|---|
| 427 | You are looking for variables set to bizarre values - attempts |
|---|
| 428 | to access objects that aren't there, attempts to use pointers which |
|---|
| 429 | point to nothing, and the like. |
|---|
| 430 | |
|---|
| 431 | If you are using the "adb" debugger (don't do this unless |
|---|
| 432 | you really have absolutely nothing else available), you will see |
|---|
| 433 | nothing. It's loaded and ready, though. Type "$c". This will print |
|---|
| 434 | out a list of the functions it called. Type "$q" to quit. You can't |
|---|
| 435 | really get much more useful information out of adb. |
|---|
| 436 | |
|---|
| 437 | If you are using the "dbx" debugger, type "where" to see |
|---|
| 438 | the stack trace. You can move through it using "up" and "down", |
|---|
| 439 | and see exactly what the sequence of calls was. You can also use |
|---|
| 440 | "print <variable name>" to see the value of a variable at the |
|---|
| 441 | time the game crashed. The "gdb" debugger is similar to "dbx"; with |
|---|
| 442 | that, you can abbreviate "print" as "p". |
|---|
| 443 | |
|---|
| 444 | Paul appreciates news of any bugs found, and any patches |
|---|
| 445 | that have been written to deal with them. He is also interested in |
|---|
| 446 | any extensions that people make to the code, and requests that ones |
|---|
| 447 | that are of more than just local interest be sent to her for inclusion |
|---|
| 448 | in the next release of this code. |
|---|
| 449 | |
|---|
| 450 | One important thing to remember is, if the MUSH refuses to |
|---|
| 451 | start, there is probably a good reason. Check the MUSH log, and the |
|---|
| 452 | core file, if there is one. Make sure to back up your database before |
|---|
| 453 | attempting to restart -- remember that every time it restarts, it |
|---|
| 454 | overwrites indb.Z.old. If you restart three times and somehow manage |
|---|
| 455 | to trash your database each time (for example, a full process table |
|---|
| 456 | zero'ing out your files), you won't have a backup to restart from, |
|---|
| 457 | unless you've backed up your database before trying! |
|---|
| 458 | |
|---|
| 459 | You can also find helpful tips in Paul's Guide for Gods, |
|---|
| 460 | which is available on the WWW as |
|---|
| 461 | http://mellers1.psych.berkeley.edu/~alansz/guide.html |
|---|
| 462 | and by ftp from mellers1.psych.berkeley.edu as |
|---|
| 463 | /pub/DuneMUSH/Guide/guide-single.txt |
|---|
| 464 | |
|---|
| 465 | This code has been tested on a fairly wide variety of machines |
|---|
| 466 | and operating systems. JT Traub (otherwise known as Moonchilde) ran |
|---|
| 467 | it on a DECstation; Ambar later worked with JT on stabilizing the code |
|---|
| 468 | on a NeXT, where it eventually was rock-solid stable. Please do not |
|---|
| 469 | bother these people with requests for help; they no longer maintain this |
|---|
| 470 | code. Amberyl worked on a Sun SPARC-series workstation, |
|---|
| 471 | and did fairly extensive testing on an IBM RS/6000, a MicroVAX II, and |
|---|
| 472 | various SGI workstations. There's no real reason why PennMUSH shouldn't |
|---|
| 473 | compile on a machine with a BSD-derived operating system and an ANSI |
|---|
| 474 | compliant compiler (non-ANSI compilers should also work, but no guarantees |
|---|
| 475 | are given here). It should probably should run under anything System V-ish |
|---|
| 476 | with some juggling of #include files and other modifications (tell Paul |
|---|
| 477 | if you needed to make major changes to get it working). |
|---|
| 478 | |
|---|
| 479 | Paul does his development on a Sun SPARC-series workstation, |
|---|
| 480 | but has a variety of test platforms. |
|---|
| 481 | |
|---|
| 482 | This version of code was sucessfully compiled on a several different |
|---|
| 483 | Sun Sparc-series computers running SunOS 4.1.1, 4.1.2, and 4.1.3, a NeXT |
|---|
| 484 | running Mach 2.1, some DEC machines running various versions of Ultrix, an |
|---|
| 485 | IBM RS/6000 running AIX 3.2, and some SGI workstations running IRIX 4.0.5. |
|---|
| 486 | Previous versions have worked on an HP 9000/720 running HP-UX 8.0 and |
|---|
| 487 | various 486 PCs running Linux; this version should, as well. |
|---|
| 488 | |
|---|
| 489 | If you have serious problems, contact Paul and he will |
|---|
| 490 | try to help you. Email is the best way to get a fast response; |
|---|
| 491 | in an emergency, you can bother him on a MUD, but for code problems, |
|---|
| 492 | email will probably get you a better response. |
|---|
| 493 | |
|---|
| 494 | ============================================================================ |
|---|
| 495 | |
|---|
| 496 | VI. Amberyl's Comments |
|---|
| 497 | |
|---|
| 498 | These are in the first person. :) |
|---|
| 499 | |
|---|
| 500 | I've been working with this code for a year and a quarter now. |
|---|
| 501 | I can't claim that it's particularly elegant or inspired; all I can say |
|---|
| 502 | is that it works (most of the time), and that I've had fun writing it. |
|---|
| 503 | I'm also hoping that it's quite readable; the sections I've added or |
|---|
| 504 | revised tend to be quite heavily commented. |
|---|
| 505 | |
|---|
| 506 | I'm willing to support this code and listen to whatever complaints, |
|---|
| 507 | suggestions, and screams for help you might have, with a great deal of |
|---|
| 508 | patience (usually). I am interested in any changes that you might make to |
|---|
| 509 | the code, as well as anything you might need to have done in order to get |
|---|
| 510 | PennMUSH to compile and run on "unusual" systems. |
|---|
| 511 | |
|---|
| 512 | If you mail me with bug reports or other problems, you MUST |
|---|
| 513 | tell me the following, or it's likely I won't be able to give you useful |
|---|
| 514 | information: |
|---|
| 515 | |
|---|
| 516 | 1. PennMUSH version number |
|---|
| 517 | 2. The type of machine you are using (Sun SparcStation, IBM RS/6000, etc.) |
|---|
| 518 | 3. The operating system and version (SunOS 4.1.2, AIX 3.2.4, etc.), |
|---|
| 519 | 4. The compiler and compiler version (gcc 2.4.5, SGI cc 2.10, etc. -- the |
|---|
| 520 | 'file' command usually tells you the compiler version, if there's no |
|---|
| 521 | built-in option like '-v' or '-V' to give it), |
|---|
| 522 | 5. Whether or not you have made any changes to the code. |
|---|
| 523 | |
|---|
| 524 | PLEASE do not send full options.h or mush.conf files. Also, please don't |
|---|
| 525 | mail me asking me to help with debugging code you've added or asking for |
|---|
| 526 | details on how to code something. I've commented the code so anybody with |
|---|
| 527 | even a little bit of competence in C should be able to read and modify it; |
|---|
| 528 | I'm interested in _finished_ changes, not half-completed things I need to |
|---|
| 529 | debug myself. |
|---|
| 530 | |
|---|
| 531 | A number of people have been contributed a lot, directly and |
|---|
| 532 | indirectly, to PennMUSH; many of them are credited in copyright.h. |
|---|
| 533 | Read the file and embarrass them the next time you see them. ;) |
|---|
| 534 | |
|---|
| 535 | PennMUSH 1.50 patchlevel 3 contains the promised parser rewrite. |
|---|
| 536 | A great deal of the code is derived or directly taken from the TinyMUSH 2.0 |
|---|
| 537 | parser; credit goes to JT Traub (Moonchilde) and Glenn Crocker (Wizard) |
|---|
| 538 | for writing the thing in the first place. In most cases, the 1.50 parser |
|---|
| 539 | should now be functionally identical to the parser in TinyMUSH 2.0.9; |
|---|
| 540 | see the news file for a brief summary of the changes. Major differences |
|---|
| 541 | between the 1.50 and 2.0 parsers are almost certainly bugs, and should |
|---|
| 542 | be reported to me. |
|---|
| 543 | |
|---|
| 544 | I do have a life, though, and academics/job/social stuff |
|---|
| 545 | take priority. Thus, don't get too upset if it takes me a while to |
|---|
| 546 | add your pet hack. :) I'm generally happy to discuss code and |
|---|
| 547 | life in general, though, so if you see me on a MUSH, feel free to |
|---|
| 548 | say hi. |
|---|
| 549 | |
|---|
| 550 | Enjoy your MUSH, and feel free to email for help. |
|---|
| 551 | |
|---|
| 552 | |
|---|
| 553 | -- Lydia Leong (lwl@eniac.seas.upenn.edu) |
|---|
| 554 | "Amberyl" just about everywhere |
|---|
| 555 | |
|---|
| 556 | ============================================================================ |
|---|
| 557 | |
|---|
| 558 | VII. Paul/Javelin's Comments |
|---|
| 559 | |
|---|
| 560 | The stuff in Amberyl's comments still applies, just change |
|---|
| 561 | the name to "Paul" and the email address to mine. :) |
|---|
| 562 | |
|---|
| 563 | I am trying to keep extending the functionality of the server, |
|---|
| 564 | while optimizing and rewriting things wherever possible. Ideas for |
|---|
| 565 | new features, and other discussion of this server should be sent to |
|---|
| 566 | the 1.50 mailing list: pennmush@mellers1.psych.berkeley.edu |
|---|
| 567 | To subscribe, send mail to listproc@mellers1.psych.berkeley.edu, |
|---|
| 568 | and put 'subscribe pennmush YourNameHere' in the body of the message. |
|---|
| 569 | |
|---|
| 570 | |
|---|
| 571 | -- Alan Schwartz (alansz@mellers1.psych.berkeley.edu) |
|---|
| 572 | Paul@DuneMUSHes, Javelin just about everywhere else |
|---|