






          RanDOOM (1)           DOOM Operating System           RanDOOM (1)




          NAME
               RanDOOM - A smart object placement randomization utility for
               DOOM. 

          SYNOPSIS
               RanDOOM [ReferenceWADfile] [-C<seed>] [-M<n>] [-W<filename>]
               [-G] [-LE<j>M<k>] [-I<infile>] [-O<outfile>]

          DESCRIPTION
               RanDOOM is a utility which will randomize the placement of
               objects in the DOOM playfield. Additionally, RanDOOM has
               some smarts about the manner in which it will randomize
               things - it's designed to never leave you with a pillar
               blocking the exit, or a keycard on the opposite side of the
               door from where you start, or to erase all the DEATHMATCH
               warp-in spots with other objects (preventing DEATHMATCH
               network play), or to replace the endgame bosses with other
               objects (thus preventing the completion of an episode). In
               short, RanDOOM will always leave you with a playable level.
               RanDOOM is also user configurable - it allows you to specify
               the proportion of total objects a given object will comprise
               via a customizable object weighting scheme. This allows you
               to tailor RanDOOM's randomizing to your personal taste
               (and/or masochism ;-).

               RanDOOM does not make any changes to your WAD files;
               instead, it creates a separate Patch WAD file containing the
               information for the modified levels. To run a RanDOOMized
               game, simply invoke DOOM with the -file command line switch,
               e.g. DOOM -file randoom.wad.

               At the end of each run, RanDOOM will append to a file called
               RANDOOM.LOG in the current directory information from that
               run. Currently the seed value used for the random number
               generator is saved for future reference.


          OPTIONS
               Reference_WAD_file_name - Use this path to the REFERENCE WAD
               file. The reference WAD file is that which accompanies your
               registered copy of DOOM, normally DOOM.WAD. If no filename
               is specified, DOOM.WAD in the current directory is used.

               -I<filename> - Specifies the name of a file where RanDOOM
               should look for its input THINGS data. If no input file is
               specified, input is taken from the reference WAD file by
               default.

                                          1














          RanDOOM (1)           DOOM Operating System           RanDOOM (1)


               -O<filename> - Specifies the name of a file where RanDOOM
               should place its output. If no output file is specified, the
               filename RANDOOM.WAD is used by default.

               -C<seed> - Use a single ASCII character as the seed value
               for the pseudorandom number generator. The character is
               case-sensitive, so 'K' and 'k' yield different seed values.
               Alternatively, -C accepts a positive integer number
               [0..65535] as the seed value. If no -C parameter is
               specified, a seed value is taken based on the current system
               time.

               -G - Produce a graphic display of the item randomization
               process on the screen (VGA required). This switch was added
               to aid in debugging the selection algorithms. You may find
               it interesting to watch. 

               -M<n> - Use randomization mode n, where n is a single digit
               [0-9]. Currently only three randomization modes (0, 1 and 2)
               are supported. If no -M parameter is specified, mode 0 is
               used by default. 

               -LE<j>M<k> - Process Episode j, Map k only, where 1 <= j <=
               3, 1 <= k <= 9. Multiple -L switches may be specified on a
               single command line. If no level is specified, all levels
               are processed by default.

               All randomization modes attempt to avoid potential problems
               which would arise if a completely random replacement of
               objects were made. Such problems include immovable objects,
               such as a pillar or tree root, blocking a switch or doorway;
               monsters becoming "stuck in the wall" (or tangled up in each
               other!) and unable to move or fight; the replacement of
               player warp-in spots with other objects, preventing one or
               both forms of network play; the movement of keycards or
               skulls to new locations which then become inaccessible; etc.
               To achieve this, RanDOOM maintains lots of data about the
               objects and the DOOM level maps, such as the locations of
               objects, their relative sizes in three dimensions, their
               types, whether the player can move them, kill them, or pick
               them up, the locations of walls, the amount of "headroom" in
               a given area, and so forth. From this information, RanDOOM
               is able, in most cases, to calculate whether or not a given
               object will "fit" into a given location in the map without
               conflicts.  

               Randomization mode 0 takes the objects currently placed on
               each level and rearranges them. No objects are added,
               subtracted, or replaced - if a given level contains 2 Barons

                                          2














          RanDOOM (1)           DOOM Operating System           RanDOOM (1)


               of Hell, 12 Imps, 32 blue health vials, and a chainsaw, then
               the modified level will also contain 2 Barons of Hell, 12
               Imps, 32 blue health vials, and one chainsaw, rearranged in
               random order.

               Randomization mode 1 replaces "nonessential" objects with
               other randomly selected objects from the entire range of
               available objects. This randomization mode may place objects
               into a level which would not normally appear there, e.g. M1
               may place Cacodemons in the Hangar level. Those items which
               are needed to complete the level, such as keycards or level
               bosses, remain in their original locations.

               Randomization mode 2 does the same things as mode 1 with the
               addition of weight factors for replaceable objects. These
               weights are user adjustable (via the weight file specified
               using the -W switch) to allow a relative increase or
               decrease in the number of a given item inserted in the game.
               Thus, items with higher weights have a higher probability of
               being selected. NOTE: If the -M2 switch is specified, the -W
               switch (see below) must also be specified. 

               Randomization mode 3 improves on mode 2 by using a "best
               fit" algortihm to approximate the item distribution
               requested by the user (via the weight file) as closely as
               possible. The items to be placed are sorted and placed in
               order from largest to smallest. This prevents a fairly large
               space which could potentially hold a larger object from
               having a smaller object placed into it instead and
               consequently allows optimal object placements. Because not
               all items will fit into all areas without sticking or other
               conflicts, the exact distribution requested may not be
               possible. For example, a distribution of 100% Spider demons
               would be utterly impossible to provide. As with mode 2, mode
               3 requires that a valid weight file be specified on the
               command line with the -W switch (described below).

               NOTE: With randomization modes 1, 2 and 3 ALL objects will
               appear at ALL FOUR skill levels as well as during network
               play; there will be no variation in the number or types of
               objects between "Hey, Not Too Rough" and "Ultra Violence." 

               -W<filename> - Use item weight factors from file <filename>
               in randomization modes 2 and 3. The weight file is a flat
               ASCII text file consisting of a series of <itemname>
               <weight> pairs, one pair per line. <itemname> must be one of
               the predefined names listed in the sample weight file
               (randoom.w), while <weight> must be a floating point value
               greater than or equal to 0.0. In general, the larger the

                                          3














          RanDOOM (1)           DOOM Operating System           RanDOOM (1)


               weight value, the more occurrences of that object RanDOOM
               will put into the game. There are some exceptions, most
               notably with the larger objects. Because RanDOOM will only
               place an item if it will "fit," some hard-to-place items
               will have a lower effective weight than that specified in
               the weight file. Take the Spider Demon, for example. This
               sucker is so large it gets stuck just about anywhere. Out of
               the hundreds of available item spots, there may be only one
               or two locations where the Spider would be able to function.
               Thus, even though it's number may come up via the weighted
               selection scheme, its placement may still be prevented. If
               an object is chosen which is too large for the available
               space, another item is chosen until one is found which can
               be safely placed into the current location. 

               Some comments about speed: Those of you who have used
               earlier versions of RanDOOM will notice that 1.52 takes
               longer to process the WAD file than did its predecessors.
               This is due to the fact that 1.52 does a lot more work than
               earlier versions, most of it 2-D geometric calculations
               (such as the distances from objects to walls for collision
               detection). After trying several different approaches to the
               "monster stuck in the wall" problem, the method currently
               employed was the best tradeoff in terms of speed and
               accuracy I've found so far. Although RanDOOM makes extensive
               use of integer and fixed-point math and '386-specific
               instructions to speed the many calculations, it still takes
               time to run (several minutes on a 20MHz 386SX test-dog
               system). Of course, any system capable of running DOOM
               adequately will have absolutely no problems with RanDOOM -
               it breezes right along on my 486/33. 

          EXAMPLES
               RanDOOM
                    Display a brief usage synopsis.

               RanDOOM -Ck -M1 -Omy.wad
                    Rearrange levels using randomization mode 1 and random
                    seed character 'k'. Input comes from DOOM.WAD in the
                    current directory. Output is saved to MY.WAD in the
                    current directory.

               RanDOOM -M0 -Inewwad.wad
                    Rearrange items in the PWAD file NEWWAD.WAD using
                    randomization mode 0 and random seed based on the
                    system time. Output goes to RANDOOM.WAD.

               RanDOOM -M2 -Wc:\doom\randoom.w -C23456 -Onew.wad
                    Rearrange levels using mode 2 with weights given in the

                                          4














          RanDOOM (1)           DOOM Operating System           RanDOOM (1)


                    file "c:\doom\randoom.w" and using the integer 23456 as
                    the random number seed value. Results will be written
                    to file NEW.WAD.

               RanDOOM c:\doom\doom.wad -CT -G -LE1M1 -LE2M1
                    Rearrange levels E1M1 and E2M1 in WAD file
                    c:\doom\doom.wad using randomization mode 0, seed
                    character 'T', and display the object placements
                    graphically. Results will be written to file
                    RANDOOM.WAD.

          NOTICES
               DOOM is a registered trademark of id software. RanDOOM is
               copyright 1994 ASRE. You are free to use and distribute this
               software provided that no modifications are made to nor
               derivative works produced from it and that no fees are
               charged for its distribution or use. Although RanDOOM has
               been thoroughly tested, it is not guaranteed to be
               completely free of bugs. 

          ACKNOWLEDGEMENTS
               The ASRE would like to acknowledge the kind assistance of
               many volunteers who offered their time, effort, and
               suggestions. Your input has allowed RanDOOM to continue to
               improve and become an even greater benefit to DOOM players
               everywhere. Special thanks to: Barry Bloom and Scott Braley
               for their hard work in optimizing the size settings for the
               monsters; Chris Gregg for his kind assistance in coming up
               with additional items to add; and many, many others, whose
               names would easily double the size of this document were I
               to include them all, for suggesting improvements, new
               algorithms, new features, and other enhancements. And, of
               course, id Software for creating the BEST GAME EVER to grace
               the screens of ISA machines.

          BUGS
               I welcome your comments, suggestions, and bug reports. id
               software, however, does NOT, so make sure you send your bug
               reports to me, not them! Input from users like you has made
               RanDOOM into the fun and useful utility you see before you
               today, so don't please don't hesitate to let your virtual
               voice be heard. Please email any bug reports and/or comments
               to tmkk@uiuc.edu. For bug reports, please include the
               following information in your message: 

                    The version of RanDOOM you're running,
                    The version of DOOM you're running,
                    The command line switches you used,
                    The random number seed value you used,

                                          5














          RanDOOM (1)           DOOM Operating System           RanDOOM (1)


                    And a description of the problem.

               The object placement algorithm may still occasionally
               misplace objects, allowing them to become stuck either in a
               wall or in each other. Occurrences of such sticking are now
               extremely rare, especially when compared with earlier
               versions of RanDOOM.











































                                          6







