This is TinyMUD version 1.5.4, a user-extendible multi-user adventure game. See the file copyright.h for information on the copyright under which TinyMUD 1.5.4 is distributed. See the file CHANGES for a list of changes made in each release. Compiling TinyMUD: The code is written in ANSI C, and is known to compile and run under Mach (a variant of 4.3BSD Unix) on a Sun-3 and uVax-2 using GCC, on on an IBM RT using hc, and on a DECstation 3100 using the MipsCo C compiler. It has also been compiled on a Vax running a fairly generic 4.2BSD system, and on a NeXT machine. I do not expect that it will work well on non-BSD systems, although most of the BSD-isms are concentrated in interface.c and in a few calls here and there to bzero() and such. Please let me know if you manage to port TinyMUD to another type of system. Programs contained in the distribution: netmud This is the actual server program; it is invoked as netmud source-file dump-file [port [log-file]] If port is not specified it defaults to 4201. The initial database will be read in from source-file, which must contain at least the two objects in minimal.db to work well. The file small.db, which contains the core of the original TinyMUD universe, may be a better place to start a new universe from. The netmud process will write a checkpoint out to dump-file every 3600 seconds; the interval can be changed by setting DUMP_INTERVAL in config.h. netmud.conc & concentrate This is the same as netmud, but allows up to 3600 users at one time. The concentrate program listens on the external port and mulitplexes up to 60 connections into the server program. There can be up to 60 concentrators, although in practice you'll seldom need more than a half-dozen. It is invoked as follows (ext-port is the port number users telnet to, int-port is the port number the server uses to communicate with the concetrators): netmud.conc source-file dump-file [ext-port int-port [log-file]] sanity-check Usage: sanity-check < source-file Performs several simple consistency checks on the specified database file. Also useful for detecting surplus WIZARDs and people with excess pocket change. extract This is the program that was used to create the file small.db distributed with TinyMUD. It is used to extract a part of a database as a connected whole. Examples: extract < source-file > output-file Extracts location #0, player #1, and all objects owned by player #1; these objects are renumbered into a contiguous block starting at 0 and are written out as a new database file that preserves all of their inter-relationships. Some objects may become "orphaned" as a result of having their home or location disappear; these objects are moved to location #0. With some combinations of command line arguments it is possible to include an object without including its owner; in this case player #1 "inherits" the object. Exits are only extracted if both their source and destination rooms are extracted. extract 2 < source-file > output-file Extracts location #0, object #1 and anything it owns, and object #2 and anything it owns. extract number2 < source-file > output-file Same as above, but (assuming player #2 is named number2) extracts players by name. extract 2 -5 < source-file > output-file. As above, but does not extract object #5 even if it is owned by #1 or #2. extract 2 5991 195 -198 3391 -12 12915 < source-file > object-file Extracts #0, #1, #2, #195, #3391, #5991, #12915 and anything they own, except #12 and #198. The keyword "all" can be specified as an argument to include everything by default, e.g.: extract all -198 Extracts everything except object #198 and anything it owns. extract all -198 5 Extracts everything except object #198 and anything it owns, but includes object #5 even if #198 owns it. Other keywords: players reachable norecycle a<num> b<num>. Players: specifies that all players are kept (but not necessarily what they own). Reachable: specifies that rooms not reachable by some combination of exits from room #0 are not extracted unless specifically included. Norecycle: specifies that players, objects, and things in the recycling center (defined as the home of player 'Recycler') are not kept unless specifically included. 'Norecycle' overrides 'players', so extract players norecycle would extract only those players not in the recycling center. a<num> (above) includes all objects with id numbers greater than or equal to <num> b<num> (below) includes all objects with id numbers less than or equal to <num> Putting it all together, here is how the Daytime Islandia DB is built from the previous night's database: extract norecycle reachable players b1370 \ -274 -560 -809 1384 1403 1404 1406 1505 \ Tinker Lynx Tygling Three Janitor Mav \ $WINNER \ < islandia.db.new > day.db Whichs keeps: all players not in the recycling center, all objects below 1370 except for 274, 560, and 809, and also includes 1403, 1404, 1406, 1505, everything owned by Tinker, Lynx, Tygling, Three, Janitor, Mav, and everything owned by the lottery winner (name specified by Shell variable WINNER). dump Usage: dump [owner] < db-file With no arguments, prints out every object in db-file. With one argument (a number) prints out every object with that owner. decompress Usage: decompress < compressed-db-file > uncompressed-db-file Removes compression from a database file that has been generated by netmud using the -DCOMPRESS compile-time option. restart-cmu, restart-day, restart-night The shell scripts used at CMU to restart the TinyMUD server. Useful for making sure that back versions of the database are always available. I hope that you enjoy using TinyMUD. --Jim Aspnes, March 29th, 1990. 1.5.3 --Scott Goehring, April 3rd, 1990. 1.5.3A --Michael Mauldin & Russ Smith, June 25, 1990. 1.5.4