home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / vrac / rmb20a.zip / MANUAL.TXT < prev    next >
Text File  |  1994-10-17  |  77KB  |  1,575 lines

  1.               RMB: REJECT MAP BUILDER  Version 2.0
  2.               ++++++++++++++++++++++++++++++++++++
  3.  
  4.              Software by  Jens Hykkelbjerg
  5.  
  6.  
  7.  
  8.                 =+=+=+=+=+=+=+=+=+=+=+=
  9.                 U S E R     M A N U A L
  10.                 =+=+=+=+=+=+=+=+=+=+=+=
  11.  
  12.                   written by
  13.                Jens Hykkelbjerg and Steve Benner
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20. 0. CONTENTS
  21. ===========
  22.  
  23. 1. REJECT MAP BUILDER: SOME FAQs
  24.      1.1 What is RMB?
  25.      1.2 What is the REJECT resource?
  26.      1.3 What is REJECT efficiency?
  27.      1.4 Why use RMB?  Can't any WAD editor do this?
  28.      1.5 I'm not a WAD designer but can I use RMB on other people's WADs?
  29.      1.6 Will RMB alter the way the game plays (apart from speed)?
  30.      1.7 Tell me more about these special effects
  31.      1.8 Hmmm... Interesting.  What use is it, though?
  32.      1.9 So I can use RMB with impunity, then?
  33.      1.10 How do I optimise someone else's WAD safely, then?
  34.      1.11 How thorough is RMB?
  35.      1.12 Does RMB work with any WAD?
  36.      1.13 OK, so how do I use RMB?
  37.  
  38. 2.  INSTALLATION AND USE
  39.      2.1 Installation
  40.      2.2 RMB Utilities
  41.       2.2.1 DxBETTER
  42.       2.2.2 INSPECT
  43.       2.2.3 RMB
  44.       2.2.4 EFFECT
  45.      2.3 USING OPTIONS FILES
  46.       2.3.1 Combining REJECT optimisation and special effects
  47.       2.3.2 The structure of an Options file
  48.       2.3.3 RMB options: a full list
  49.       2.3.4 Processing time implications of RMB options
  50.      2.4 Miscellaneous
  51.  
  52. 3.  OPTIONS REFERENCE
  53.      3.1 Explanation of argument types
  54.      3.2 Individual Option Details
  55.      3.3 Combining Options
  56.  
  57. 4. COPYRIGHT NOTICES, DISCLAIMER AND CONDITIONS OF USE
  58.  
  59. 5. AUTHOR'S NOTE
  60.  
  61. 6. ACKNOWLEDGEMENTS
  62.  
  63.  
  64.  
  65. 1. REJECT MAP BUILDER: SOME FAQs
  66. ================================
  67.  
  68. 1.1 What is RMB?
  69. ----------------
  70. Reject Map Builder (RMB) is a DOS-based program designed to allow DOOM users 
  71. and level-designers to both optimise and customise the REJECT resource 
  72. associated with either their id-supplied DOOM.WAD or other third-party PWAD 
  73. files.  This can provide greatly improved playing-speed, particularly in 
  74. complex WADs with many monsters.  The REJECT resource also provides scope for 
  75. the WAD designer to implement a number of special effects, to which RMB 
  76. provides full and easy access.  The RMB package contains utilities to inspect 
  77. and report on REJECTs in any single- or multi-level WAD.  There is also a 
  78. sample WAD to demonstrate the potential of the special effects which become 
  79. available through the REJECT map.
  80.  
  81. 1.2 What is the REJECT resource?
  82. --------------------------------
  83. The purpose of the REJECT map within a WAD file is to tell the Doom gaming 
  84. engine whether or not it is feasible for a monster located in a particular 
  85. sector to see anything to shoot at, or attack, thereby saving the engine from 
  86. having to work this out for itself while a game is in progress.  Within the 
  87. resource, the information is stored as a series of bits, which, on a sector by 
  88. sector basis, we may think of as a table, thus:
  89.  
  90.             Sector the player is in
  91.              0    1    2    3    4 ....       NB: Doom *never*
  92.           +----------------------------           uses this table to
  93.   Sector the   0  |  b    b    b    b    b ....           determine what the
  94.    monster     1  |  b    b    b    b    b ....           PLAYER might be able
  95.     is in      2  |  b    b    b    b    b ....           to see.
  96.            3  |  b    b    b    b    b ....
  97.            :  |  :    :    :    :    :
  98.            :  |  :    :    :    :    :
  99.  
  100. The value of each bit, b, has the meaning:
  101.   (0)  player's sector can be seen (at least in part) from monster's sector;
  102.   (1)  player's sector cannot be seen at all from monster's sector.
  103.  
  104. The following WAD map, for example:
  105.  
  106.     o-------------o----------------o-----------o
  107.     |             :                :           |      The numbers indicate
  108.     |      1      :       2        :     3     |      SECTORS
  109.     |             :                :           |
  110.     |             o----------------o-----------o      Dashed/solid lines are
  111.     |             |                                   1-sided LINEDEFs
  112.     |             |
  113.     |             |                                   Dotted lines are
  114.     o.............o                                   2-sided LINEDEFs
  115.     |             |
  116.     |      0      |                                   o's are VERTEXES
  117.     |             |
  118.     o-------------o
  119.  
  120. would give rise to the following REJECT table:-
  121.  
  122.               (Player sector)
  123.              0    1    2    3  
  124.           +-------------------
  125.            0  |  0    0    0    1 
  126.    (Monster    1  |  0    0    0    0 
  127.     Sector)    2  |  0    0    0    0 
  128.            3  |  1    0    0    0 
  129.  
  130. which indicates that all sectors can see every other sector, with the 
  131. exception of sectors 0 and 3, which are not in direct line of sight of each 
  132. other.
  133.  
  134. Note that this does not mean that any monsters in sector 0, say, will 
  135. definitely see the player who enters sector 2: it merely means that it is 
  136. feasible for them to do so.  Any number of factors may prevent a monster from 
  137. actually spotting the player during play - not all of the player's sector may 
  138. be visible from the monster's actual location; the monster may be looking in 
  139. the wrong direction and so on.  In the example above, the game engine will 
  140. have to resolve the actual line of sight between a monster in sector 0 and a 
  141. player in sector 2 at game time.  On the other hand, the presence of a 1 in 
  142. the REJECT map indicates immediately to the game engine that it is *not* 
  143. feasible for monsters to see from one of these sectors to the other.  In such 
  144. cases, the engine will not bother to perform any line-of-sight (los-) 
  145. calculation and will move on to considering other monster-occupied sectors.  
  146. As los-calculations are often not trivial, any such calculations that can be 
  147. avoided while the game is in play will improve game speed and make frame 
  148. updates smoother.  Obviously in the simple example above, the amount of work 
  149. being saved is small: the benefits during play provided by this particular 
  150. REJECT map are probably undetectable.  For large WADs with many monsters and 
  151. complex geography, however, the time savings that can be had from a fully 
  152. optimised REJECT table may be considerable and can make all the difference to 
  153. the playability of the level.
  154.  
  155. 1.3 What is REJECT efficiency?
  156. ------------------------------
  157. It should be obvious from the discussion above that, in general, the more 1's 
  158. there are in the REJECT map, the greater the potential savings in los-
  159. calculation time.  RMB uses this simple fact to provide a rough indication of 
  160. the effectiveness of a WAD's REJECT map.  Whenever RMB is used to create or 
  161. inspect a REJECT map, it will count the number of 1's in the resource and then 
  162. report this as a percentage of the total number of entries.  This so-called 
  163. efficiency figure will only give a rough indication of the amount of speed-up 
  164. of the level attributable to the REJECT map (this will obviously depend 
  165. ultimately on the number and distribution of monsters in the level) but for 
  166. most practical WADs a high efficiency rating usually means that the speed-up 
  167. will be good in most areas.
  168.  
  169. 1.4 Why use RMB?  Can't any WAD editor do this?
  170. -----------------------------------------------
  171. Although it is a simple structure to understand, the calculations which are 
  172. needed to generate the REJECT map successfully are quite involved and can be 
  173. fairly time consuming, even with a fast processor.  Consequently, the majority 
  174. of WAD editors currently available prefer not to bother about this resource, 
  175. concentrating instead on other areas of WAD construction.  Most editors simply 
  176. generate an empty REJECT, (i.e. a table entirely of 0's) which benefits 
  177. playability not one iota.  It was to address this lack that RMB was written: 
  178. with RMB, the Doom level developer can easily integrate automatic REJECT 
  179. generation into his edit/play development cycle.  Or he may choose to leave 
  180. REJECT optimisation to the end, using RMB just on the final WAD.  
  181.  
  182. 1.5 I'm not a WAD designer but can I use RMB on other people's WADs?
  183. --------------------------------------------------------------------
  184. You may be tempted to use RMB to try to speed up your favourite third-party 
  185. WAD.  This is OK provided you proceed with caution, as explained below.
  186.  
  187. 1.6 Will RMB alter the way the game plays (apart from speed)?
  188. ------------------------------------------------------------
  189. The answer to this question is no.. and yes!  To understand this answer, let 
  190. us look briefly at how the Doom engine resolves monster behaviour during play.  
  191. In grossly over-simplified form, the Doom monster control loop works something 
  192. like this:-
  193.  
  194. for each monster
  195.   if the REJECT map says it's feasible then         <-- ie REJECT entry of 0
  196.     if player is in sight then                      <-- note los calculation
  197.       if monster is awake then                     \
  198.     if monster within range of player then      |
  199.       attack player                             |
  200.     else                                        |
  201.       move to get in range                      | 
  202.     endif                                       |    This part
  203.       else                                           >   skipped if player
  204.     wake monster                                |    cannot be seen
  205.       endif                                         |
  206.     else                                            |
  207.       if monster is awake then                      |
  208.     try to home in on player                    |
  209.       endif                                        /
  210.     endif
  211.   else
  212.     if monster is awake then                       <--  Note the duplication
  213.       try to home in on player                     <--   of this
  214.     endif 
  215.   endif
  216. next monster
  217.  
  218. This shows how a REJECT entry of 0 makes no difference to Doom's monster 
  219. decision-making: hopefully you can also see that in the cases where the REJECT 
  220. map contains 1's (where a los-calculation would definitely fail because the 
  221. two sectors are not in sight of each other) there is no difference in the 
  222. logic either: a los-calculation is merely avoided.  Rest assured, therefore, 
  223. that supplying Doom with a REJECT map that has all unsighted sector pairs 
  224. marked will make no difference to monster behaviour during game play.  The 
  225. only change you should see is an increase in playing-speed.
  226.  
  227. What about the other half of the answer to our question above?  How may it 
  228. come about that RMB can change the playing characteristics of a WAD?  Well, 
  229. RMB is a fully featured REJECT map builder: in addition to its default 
  230. 'automatic' mode, RMB provides the WAD designer with full access to the REJECT 
  231. map, allowing individual bits to be set or cleared at will.  This can 
  232. introduce some useful (or at least novel!) special effects which the WAD 
  233. designer may wish to exploit.
  234.  
  235. 1.7 Tell me more about these special effects
  236. --------------------------------------------
  237. By way of an example, consider our earlier 4-sector map.  Here is the REJECT 
  238. map that RMB would generate by default:
  239.  
  240.              0    1    2    3   (Player Sector)
  241.           +-------------------
  242.    (Monster    0  |  0    0    0    1 
  243.     sector)    1  |  0    0    0    0 
  244.            2  |  0    0    0    0 
  245.            3  |  1    0    0    0 
  246.  
  247. If this table were to be altered thus:
  248.  
  249.              0    1    2    3   (Player Sector)
  250.           +-------------------
  251.    (Monster    0  |  0    0    0    1 
  252.     sector)    1  |  0    1    0    0         <- one bit changed at 1,1
  253.            2  |  0    0    0    0 
  254.            3  |  1    0    0    0 
  255.  
  256. the effect would be to make monsters in sector 1 unable to see any player in 
  257. that sector!  Under these circumstances, the effect during play would be that 
  258. while in sector one, the player would be immune from attack by monsters in the 
  259. sector with him.  Note, though, that he may still be attacked by monsters from 
  260. other sectors.  Furthermore, if he moved out of sector 1, any monsters left 
  261. there would then be able to see him and attack him.  It is important to 
  262. remember that this 'blindness' of monsters is a function of the sectors they 
  263. occupy, not of the monsters themselves. In this example, assuming monsters are 
  264. not constrained from moving between sectors by other factors, if the player 
  265. entered sector 1 (from sector 0, say) and was spotted by a monster in sector 
  266. 3, that monster would wake up and would start to pursue (and possibly fire at) 
  267. the player.  The monster would move from sector 3 into 2, where it could still 
  268. see the player and so may continue to fire.  Once it entered sector 1, 
  269. however, the player would 'disappear' from view, as far as the gaming engine 
  270. is concerned, and the monster would now cease its attacks.  Note from the 
  271. logic presented earlier, though, that the monster would continue to track the 
  272. player and, of course, would resume its attack as soon as either it or the 
  273. player left sector 1.  A single bit change in the REJECT map has produced an 
  274. unusual but interesting behavioural change in the game.  
  275.  
  276. 1.8 Hmmm... Interesting.  What use is it, though?
  277. -------------------------------------------------
  278. We could make a couple of other changes to the map:
  279.  
  280.              0    1    2    3           Note the whole of the 
  281.           +-------------------          player sector 1 column
  282.    (Monster    0  |  0    1    0    1           set to 1's.
  283.     sector)    1  |  0    1    0    0 
  284.            2  |  0    1    0    0 
  285.            3  |  1    1    0    0 
  286.  
  287. Here we have produced a map where the player is completely 'safe' in sector 1:  
  288. no monster anywhere can see him there.  There is potential here for producing 
  289. 'safe havens' in areas of complete mayhem, areas where a player can catch his 
  290. breath before returning to the fray (provided he can recognise the 'haven' and 
  291. get to it, or course :-) -  better than having the player keep reaching for 
  292. the pause key!
  293.  
  294. Alternatively, here:
  295.  
  296.              0    1    2    3   (Player sector)
  297.           +-------------------
  298.     (Monster   0  |  0    0    0    1 
  299.      sector)   1  |  1    1    1    1          <-- whole row set to 1's.
  300.            2  |  0    0    0    0 
  301.            3  |  1    0    0    0 
  302.  
  303. we've produced a sector (1, again) which is completely 'blind'.  Monsters in 
  304. it will not see anything in any sector.  Note that although these monsters 
  305. will not awaken or attack if the player moves in front of them (they can never 
  306. see him while they remain in sector 1), they can still be awakened by noises 
  307. (assuming they're not flagged as deaf, of course - and just what use deaf 
  308. *and* blind monsters would be, I'm not sure: although even those monsters will 
  309. wake up if hit with shot) whereupon they will start tracking the player - and 
  310. will fall upon him once they are no longer in sector 1!  There is scope here 
  311. for rooms full of sleeping monsters through which a player must creep in order 
  312. to find the means of disposing of them.
  313.  
  314. These are just two examples of special effects which can be introduced to a 
  315. WAD by means of the REJECT map.  Naturally, RMB provides simple access to 
  316. these and to a range of others for WAD designers - full details of each effect 
  317. option are given in the "Options Reference" section of this manual.  You can 
  318. introduce as many (or as few) such effects as you wish - none of them add 
  319. anything to the size of a WAD and they may even speed it up into the bargain 
  320. (they will certainly never slow it down any): of how many things can that be 
  321. said in Doom?  By default, of course, RMB applies no special effects at all, 
  322. so that you need not worry about any such things being introduced unexpectedly 
  323. to your WADs.
  324.  
  325. 1.9 So I can use RMB with impunity, then?
  326. -----------------------------------------
  327. Up to a point, yes.  If you are the designer of a WAD, you will of course know 
  328. whether your WAD needs any of the special effect settings that RMB provides 
  329. and you will be using RMB accordingly.  If you don't want any special effects, 
  330. then just use RMB to optimise the REJECT table for speed and away you go.  If, 
  331. however, you are using RMB to try to improve the performance of someone else's 
  332. WAD, you should proceed with caution.  The reason for this is that the 
  333. original WAD author may have edited the REJECT map to produce some special 
  334. effect or other at some place in the WAD.  Running RMB on such a WAD will 
  335. destroy the tailored REJECT and replace it with a 'plain' (albeit optimised) 
  336. one and the special effects will be lost.  This could completely destroy the 
  337. functionality of the WAD.  Naturally, applying RMB to a WAD which already has 
  338. a fully optimised REJECT map will achieve nothing (but then it shouldn't do 
  339. any damage, either).
  340.  
  341. 1.10 How do I optimise someone else's WAD safely, then?
  342. --------------------------------------------------------
  343. The recommended method for using RMB with another designer's WAD (where you 
  344. know nothing about the REJECT map beforehand) is as follows:
  345.  
  346. Start by making a back-up copy of the WAD: that way it doesn't matter what 
  347. damage you do!  Then use the RMB's INSPECT utility (described later) to report 
  348. the efficiency of the WAD.  A reported efficiency of 0 indicates that the 
  349. REJECT map is empty: in all such cases, RMB can be used quite safely, as there 
  350. is no information in the REJECT map to damage.  A very low but non-zero 
  351. efficiency on the other hand, (say only a dozen 1's out of a few thousand) 
  352. means that you probably have a WAD where the author has deliberately set bits 
  353. to achieve special effects but has not bothered to optimise the rest of the 
  354. table.  It is probably best not to apply RMB to such a WAD, unless you can be 
  355. sure of keeping the existing 1's intact.  Such WADs are likely to be very rare 
  356. in reality - any author so REJECT-aware would almost certainly have optimised 
  357. the table (unless, of course, they didn't have a program as good as RMB!)  In 
  358. cases where INSPECT reports a high efficiency there is almost certainly 
  359. nothing to be gained by applying RMB to the WAD.  RMB may produce a higher 
  360. efficiency but the resulting speed difference may not be detectable and, of 
  361. course, you will have destroyed any special effects in the process!
  362.  
  363. 1.11 How thorough is RMB?
  364. -------------------------
  365. To perform a complete check on all inter-sector lines-of-sight, in any fair-
  366. sized WAD, would require a vast number of calculations.  In order to achieve a 
  367. good working compromise between the number of absolute 'blind pairs' which are 
  368. located and the time taken to find them, RMB uses a number of processing 
  369. short-cuts of which the WAD designer needs to be aware.  There are options to 
  370. extend RMB's processing to locate more true 'blind pairs' but these are not 
  371. likely to be needed very often: usually only when trying to build special 
  372. effects, (when it is probably easier to take full manual control of the 
  373. problem areas anyway,) or for WADs where you need the absolute maximum amount 
  374. of speed-up possible.
  375.  
  376. Another point to bear in mind about RMB's methodology is that it always 
  377. defaults safe - by this we mean that it will, unless instructed otherwise, 
  378. introduce no extraneous special effects (after all, nothing spoils a WAD more 
  379. than monsters who don't want to play!)  Once again, special processing 
  380. 'limitations' are imposed to ensure this behaviour.
  381.  
  382. The first such limitation is that RMB considers only lines-of-sight in the 2-
  383. dimensional plane of the WAD map: no height differences are taken into 
  384. consideration.  This limitation is imposed for reasons of both speed and 
  385. safety.  As you will be aware, height differences between sectors may be only 
  386. a temporary thing in DOOM: consider the following area of a map, seen here as 
  387. a side view:-
  388.  
  389.                 4      5 
  390.              |------|------|        The numbers identify
  391.              |         o   |        sectors;
  392.              |         -\  |
  393.    Sector 4 is a lift in |          /\ |        
  394.    the 'up' position. -> |------|------|        
  395.              |      :   ^ 
  396.              |   S  :   |
  397.        1       2      3  |   H  :   example player
  398.     |------|------|------|   A  :   position
  399.     |                        F  :
  400.     |                        T  :
  401.     |                           :
  402.     |------|------|------|......:
  403.  
  404. Here, sectors 4 & 5 are not in view from sectors 1, 2 & 3 (and vice versa).  
  405. RMB will be unaware of this, however, as it will only consider the map view:-
  406.  
  407.     o------o------o------o------o------o
  408.     |      :      :      :      :      |   where every sector appears to
  409.     |  1   :   2  :   3  :   4  :  5   |   be able to see all others.
  410.     |      :      :      :      :      |
  411.     o------o------o------o------o------o
  412.  
  413. This is a desirable state of affairs, because we would not wish to block the 
  414. line of sight between sectors 3 & 4 which will exist as soon as the lift 
  415. descends.  Similar arguments also apply either side of doors.  
  416.  
  417. There being no mechanism for changing resources during play, the REJECT table 
  418. must allow for all *eventual* lines-of-sight.  The only limitation which 
  419. results from RMB's methodology in the above example, is that the true 
  420. obstruction to the lines-of-sight between sectors pairs 1-5 and 2-5 will go 
  421. unrepresented in the REJECT map and in these particular instances, Doom will 
  422. have some unnecessary los-checking to do at game-time.  This is a small price 
  423. to pay for correct monster behaviour in this area.  Any time you spent 
  424. searching out and correcting the few sector pairs that are affected by this 
  425. short-coming would most likely be time wasted.
  426.  
  427. The other short-cut that RMB uses in order to speed up its calculations, is to 
  428. treat all sectors that are wholly enclosed within another sector (and 
  429. consequently have no 1-sided LINEDEFs) as part of the enclosing sector.  In 
  430. most WADs, this greatly cuts down the number of sectors that RMB needs to 
  431. consider (inter-sector connections rising as the square of the number of 
  432. sectors).  Think of this as processing by the 'room', rather than by the 
  433. sector and you'll see that it makes sense.  A variety of options exist to make 
  434. RMB vary this short-cut to suit your individual WAD (these are explained in 
  435. detail in section 3 of this manual): most of the time you should find that the 
  436. default mode works just fine.
  437.  
  438. 1.12 Does RMB work with any WAD?
  439. --------------------------------
  440. RMB v2.0 will work with any WAD, single- or multi-level, IWAD or PWAD, 
  441. produced with any WAD editor, provided that a REJECT resource of the correct 
  442. size is present in the WAD.  (Its contents are of course immaterial.)  RMB 
  443. will work with WADs for Doom (v1.1 - 1.666) or Doom2.  If you encounter a 
  444. problem WAD, please contact the author (contact details are at the end of this 
  445. manual) with a description of the problem.
  446.  
  447. 1.13 OK, so how do I use RMB?
  448. -----------------------------
  449. Read on: the next section of this manual tells you how to install the program 
  450. and describes the various utilities supplied with it.  After that, Section 3 
  451. gives full details of the various options which can be used with RMB.
  452.  
  453.  
  454. 2.  INSTALLATION AND USE
  455. ========================
  456.  
  457. 2.1 Installation
  458. ----------------
  459. Installation of RMB is very simple: just unpack it into its own directory 
  460. (you've probably done this already).  You will find that apart from the main 
  461. RMB.EXE itself, there are a number of other .EXE utilities (these are 
  462. described below) as well as some .BGI files which are required for correct 
  463. graphical display of the map as RMB processes the WAD.  There is also a couple 
  464. of batch files which you can use to run through all of your (registered copy) 
  465. Doom levels, to optimise them one by one: details below.
  466.  
  467. 2.2 RMB Utilities
  468. -----------------
  469. NOTE:  When the syntax of a command is given, the follow conventions apply:
  470.        items in square brackets are optional parameters; 
  471.        items in curly brackets indicate possible choices; <an item> like 
  472.        this refers to a particular type of item (usually obvious);
  473.        nothing in RMB is case-sensitive.
  474.  
  475.        For example, for a command specified thus: 
  476.  
  477.    EFFECT <WADfile> [<level id>] {BLIND, SAFE} {0, 1} {<sector number>, ALL} 
  478.  
  479.        any of the following are valid:-
  480.  
  481.    effect myfile.wad blind 0 22
  482.    effect my2file.wad E1M2 safe 1 43      (for use with Doom 1 WAD)
  483.    effect myfile.wad MAP02 blind 0 all    (for use with Doom 2 WAD)
  484.  
  485. (An explanation of this command is given in section 2.2.4, below.)
  486.  
  487. Note also that all examples assume that the commands are typed while in the 
  488. RMB directory.  WAD designers who are likely to make heavy use of RMB may wish 
  489. to prepare DOS batch files to perform the necessary directory switching for 
  490. them: I (Steve) use a set like this:-
  491.  
  492. FIX.BAT                        invokes my editor with a chosen WAD
  493.    cd waded                    (no, I don't use DEU - just call me perverse)
  494.    waded %1.wad
  495.    cd ..
  496. ---------
  497. MAKEFX.BAT                     lets me edit my RMB option file (see below)
  498.    edit waded\%1.rej
  499. ---------
  500. REJECT.BAT                     invokes RMB
  501.    cd rmb
  502.    rmb ..\waded\%1.wad ..\wads\%1.wad %2
  503.    cd ..
  504. ---------
  505. TRY.BAT                        lets me play-test the WAD
  506.    doom -file wads\%1.wad -devparm -warp %2 %3
  507. ---------
  508. TRYRAW.BAT                     lets me play-test the version without REJECT
  509.    doom -file waded\%1.wad -devparm -warp %2 %3
  510. ---------
  511.  
  512. No doubt, each developer will prefer their own.
  513.  
  514. 2.2.1 DxBETTER
  515. --------------
  516. The D1BETTER.BAT utility supplied with RMB will run through all of your 
  517. (registered copy) Doom1 levels, optimising them one by one.  To use it, copy 
  518. your DOOM.WAD to your RMB directory, type D1BETTER then go and make some 
  519. coffee.  When you have finished your cup(s) of coffee, rename your original 
  520. DOOM.WAD to something like DOOM.BAK, copy the new one back to the DOOM 
  521. directory and try it out.  (Remember that when you have changed the original 
  522. Doom files, Id offers no support...)  [If you're short on disk space (and who 
  523. isn't?) copy RMB.EXE to your Doom directory, make a file called DOOM.REJ with 
  524. a single line saying NOMAP in it and then type \RMB\D1BETTER (or whatever is 
  525. necessary to locate the batch file).  Of course, if this goes wrong, you'll 
  526. have to re-install DOOM.WAD.  But then you've got the original disks, haven't 
  527. you?]  Another batch file called D2BETTER.BAT is supplied to work the same 
  528. wonders with the Doom2 WAD.  It is used in precisely the same way as D1BETTER, 
  529. except that you will have time to make and drink a large flask of coffee, go 
  530. for a jog, wash and polish the Porsche (don't worry if you don't have a 
  531. Porsche right now: you may have one by the time D2BETTER finishes...;-) 
  532.  
  533. 2.2.2 INSPECT
  534. -------------
  535. The INSPECT utility will report on a WAD's current REJECT map without changing 
  536. it.  This is useful for finding out whether a third party WAD has anything in 
  537. its REJECT or not, prior to using RMB on it.  It also can be used to provide 
  538. reassurance that any specific processing you requested has taken effect.  The 
  539. statement syntax is: 
  540.  
  541.    INSPECT <WADfile> [<level id>] [<sector number>] 
  542.  
  543. <WADfile> specifies the path and filename of the file to be inspected.  Be 
  544. sure to include the .WAD file extension.
  545.  
  546. Use the optional <level id> parameter to specify the level you want to inspect 
  547. in a multi-level WAD.  Levels are specified in the standard ExMy format for 
  548. Doom1 WADs, or in MAPnn form for Doom2 WADs.  Omitting this parameter results 
  549. in just the first map in the WAD being inspected.
  550.  
  551. When a <sector number> is specified, INSPECT will report the list of all 
  552. sectors that are currently flagged as potentially visible from the sector of 
  553. interest. 
  554.  
  555.      >inspect c:\wadfiles\think12.wad 2 
  556.  
  557.      Sectors visible from sector 2:    0,1,2,... 
  558.  
  559. If no <sector number> is given, INSPECT will just calculate and report the 
  560. efficiency of the WAD's current REJECT map. 
  561.  
  562. e.g.     >inspect c:\wadfiles\think12.wad 
  563.  
  564.      Efficiency: 40% 
  565.  
  566.  
  567. 2.2.3 RMB
  568. ---------
  569. Note: The syntax has changed since v1.0 
  570.  
  571. The syntax for the main REJECT Map Builder (RMB) is:-
  572.  
  573.    RMB <InputWADfile> <OutputWADfile> [<Level id>]
  574.  
  575. The input WAD filename may be the same as the output WAD filename if you wish 
  576. (gain, don't forget the .WAD file extensions here): the original will be 
  577. overwritten.  Most WAD developers will no doubt cringe at this idea and it is 
  578. certainly not recommended unless you have a back-up of the file.  (Some people 
  579. like to live dangerously, though, and who are we to stop them?  See the 
  580. REJECT.BAT batch file above for one suggested better way of doing things 
  581. though.)
  582.  
  583. The optional <Level id> is either a Doom1 episode and mission number like 
  584. E2M3, or a Doom2 map number like MAP03.  RMB will process the specified map 
  585. or, if none is specified, the first level in the WAD.
  586.  
  587.   Doom1 example:   >rmb c:\wadfiles\starwar2.wad mystar2.wad e1m2 
  588.    (Processes e1m2 from starwar2.wad; saves the result in mystar2.wad). 
  589.  
  590.   Doom2 example:   >rmb doom2.wad doom2.wad MAP13 
  591.    (Processes map 13 of doom2.wad). 
  592.  
  593. During the processing of a WAD, a map of the level being processed is shown on 
  594. the screen, with the number of the sector currently being processed given in 
  595. the top left corner of the screen, together with the total number of sectors 
  596. to process in the level.  The map may look a little different from the view of 
  597. the WAD that you are used to seeing: all 2-sided LINEDEFs appear initially in 
  598. blue with a selection of 1-sided LINEDEFs in white.  As the program looks at 
  599. each sector in turn and works round all the sector's 2-sided LINEDEFs, lines 
  600. on the map will turn red (to show that they're being processed) and then cyan 
  601. (when finished).  From the current (red) LINEDEF, it will be possible to see 
  602. other 2-sided LINEDEFs.  The first of these out from the sector being 
  603. processed will show yellow on the display for a while, finally turning magenta 
  604. as processing on it completes.  As the program progresses, there should always 
  605. be a red and a yellow line, showing where the program is currently processing 
  606. los-calculations.  The sector count will rise steadily: processing finishes 
  607. when all sectors have been examined.
  608.  
  609. When processing is complete, the program will create the specified WAD file, 
  610. writing the new REJECT map to it, along with the rest of the WAD's resources. 
  611. The final efficiency of the REJECT will be reported, and RMB will beep to let 
  612. you know that it has finished (and drag you away from your coffee drinking).
  613.  
  614. 2.2.4 EFFECT
  615. ------------
  616. The EFFECT command allows simple special effects to be applied to WAD files 
  617. through the REJECT map.
  618.  
  619. The syntax of the EFFECT command is: 
  620.  
  621.    EFFECT <WADfile> [<Level id>] {SAFE, BLIND} {0,1} {<sector number>, ALL}
  622.  
  623. Once again, don't forget the .WAD file extension to the <WADfile> parameter.
  624.  
  625. The optional <Level id> is either a Doom1 episode and mission number like 
  626. E2M3, or a Doom2 map number like MAP03.  EFFECT will process the specified map 
  627. or, if none is specified, the first level in the WAD.
  628.  
  629. The SAFE option makes sectors safe, as described in section 1.8 above.  As 
  630. long as a player is in a safe sector, he can't be seen: monsters won't wake up 
  631. or attack.  The other available effect is BLIND: this blinds a sector so that 
  632. monsters in it will be prevented from seeing the player, wherever he might be.
  633.  
  634. The parameter immediately following the SAFE or BLIND keyword specifies the 
  635. degree of safety or blindness that the EFFECT command will produce.  Currently 
  636. only 0 or 1 are supported here.  Their meanings are:
  637.  
  638. SAFE:  (0) : Sector is completely safe: no sector has sight of it;
  639.        (1) : Sector is safe only from other sectors: monsters within it can
  640.          see the player;
  641.  
  642. BLIND  (0) : Sector is completely blind: no sectors can be seen from it;
  643.          player cannot be seen in it;
  644.        (1) : Sector is blind only to other sectors: monsters within it can see
  645.          the player in it.
  646.  
  647. In all four cases above, you can use ALL instead of the sector number for the 
  648. last parameter.  With a degree setting of 0, this will make all sectors 
  649. totally safe (or blind - there is no distinction between the two, the table 
  650. being filled with 1's either way): all monsters will be total pacifists.  A 
  651. degree setting of 1 creates a level full of near-sighted monsters, who will 
  652. only notice players in the same sector as themselves.
  653.  
  654. Making all monsters blind will make for a very dull game but it may be useful 
  655. for play-testing a WAD, to check, for instance that all monsters are placed 
  656. correctly (but do remember that noises will wake them up and cause them to 
  657. move around) or to see what the absolute maximum REJECT speed-up of the WAD 
  658. would be like.
  659.  
  660. Although this command is quite powerful, it is really only intended as a quick 
  661. way of applying the occasional special effect.  For more comprehensive 
  662. application of special effects, as well as specialist processing, it is 
  663. recommended that the RMB command be used, in conjunction with an options file: 
  664. see the next section.
  665.  
  666. Remember also that if you use the RMB command on a WAD after it has been 
  667. EFFECTed, you will remove all of the added effects!  (Most editors will 
  668. happily do this for you too!)
  669.  
  670. 2.3 USING OPTIONS FILES
  671. -----------------------
  672.  
  673. 2.3.1 Combining REJECT optimisation and special effects
  674. -------------------------------------------------------
  675. So far, we have demonstrated the use of RMB to optimise a WAD's REJECT table 
  676. and have presented the utility EFFECT, which introduces special effects to a 
  677. WAD via its REJECT resource.  For some users, the simple application of these 
  678. utilities as described above will be sufficient.  For the serious WAD 
  679. developer, however, the more convenient and powerful approach will be to 
  680. utilise RMB options files during WAD development.  These allow full control of 
  681. RMB's optimisation methodology, as well as complete 'manual' access to the 
  682. REJECT resource.  RMB does not need to be invoked in any special way to make 
  683. use of an options file: all you need to do is create a text file containing 
  684. the options you wish to apply, making sure that it is located in the same 
  685. directory and has the same name as the WAD file you wish to process but with 
  686. the extension .REJ.  So, to apply a set of RMB options to MYLEVEL.WAD located 
  687. in your \NEWWADS directory, saving the new, processed WAD in your \REJWADS 
  688. directory, you would create an options file MYLEVEL.REJ in \NEWWADS and issue 
  689. the command:-
  690.  
  691.   >rmb \newwads\mylevel.wad \rejwads\mylevel.wad
  692.  
  693. RMB will automatically notice your \NEWWADS\MYLEVEL.REJ file and apply it.
  694.  
  695. 2.3.2 The structure of an Options file
  696. --------------------------------------
  697. RMB options files do not need to have a particular structure beyond being 
  698. straightforward ASCII text files, with a single RMB option statement on each 
  699. line (empty lines are permitted).  Options can be entered in upper or lower-
  700. case.  Options can appear in the file in any order: the only exception being 
  701. that options intended for particular levels in multi-level WADs must be 
  702. grouped together under a heading for that level.  There should be only one 
  703. grouping of options intended for any particular level: in cases where a level 
  704. has been given multiple groupings, only the first one will be read.  It is 
  705. possible to specify a set of default options, which RMB will use if no heading 
  706. is found to match the level you specified for processing, or if you did not 
  707. specify any level.  (Note: RMB will only look for a level grouping if you 
  708. include the level identification parameter.)  
  709.  
  710. A sample .REJ options file should make this clearer (full details of the RMB 
  711. options used in this example are given in the next section of this manual):
  712.  
  713. MYWAD.REJ
  714.    # This is an example of a multilevel options file, for use with MYWAD.WAD.
  715.  
  716.    # The first lines are the defaults.
  717.    # These options will be used if RMB is called without
  718.    # the EnMx parameter, or if there is no matching EnMx heading
  719.    # in the options file.
  720.  
  721.    length 17 
  722.    Distance 600 
  723.  
  724.    # Now comes the options used to process E1M1:
  725.    #  These are only read if you enter the full command
  726.    #  RMB MYWAD.WAD MYWAD.WAD E1M1
  727.  
  728.    E1M1
  729.    # ^ This marks the end of the defaults, and the beginning 
  730.    #   of the options that apply to e1m1. 
  731.    #   Use MAPxx for options to levels in Doom2 WADs 
  732.  
  733.    Length 17 
  734.    Distance 800 
  735.    Left 311 
  736.    Right 217 
  737.  
  738.    E1M2 
  739.    # ^ Here end the options for episode 1 mission 1:
  740.    #   options for episode 1 mission 2 begin.
  741.  
  742.    Length 14 
  743.    Report 14 
  744.    Block 23 56 
  745.  
  746.    E1M1
  747.    # ^ This ends the options for E1M2.  But the following options
  748.    #   are not processed, because RMB will not get this far with E1M1:
  749.    #   it was stopped at E1M2 above!
  750.  
  751.    INC 4 6
  752.    EXC 2 3
  753.  
  754.    # If RMB is called with a mission that is not in the options 
  755.    # file (e.g. "e1m3" here), the default options at the beginning of 
  756.    # the file are used. 
  757.  
  758.    # ==END OF OPTIONS==
  759.  
  760.  
  761. To summarise:  if you want RMB to look through the options file for settings 
  762. for a specific level, you must include the EnMx or MAPxx as a parameter to 
  763. RMB, as here: 
  764.  
  765.    >rmb c:\wadfiles\starwar2.wad c:\wadfiles\starwar2.wad e1m1 
  766.  
  767. or in the case of a doom2 WAD with map 2: 
  768.  
  769.    >rmb doom2.wad doom2.wad map02 
  770.  
  771.  
  772. For WADs containing only one level, you can just use the default options 
  773. without worry. 
  774.  
  775. 2.3.3 RMB options: a full list
  776. ------------------------------
  777. As explained earlier, in its default operation, RMB tries to maintain a 
  778. balance between complete optimisation of the REJECT map and the time taken to 
  779. locate blind pairs, while at the same time preserving the behavioural 
  780. integrity of the WAD.  The use of an RMB options file permits the designer to 
  781. vary RMB's processing, in order to achieve greater or lesser degrees of 
  782. optimisation, or produce particular special effects.  A full list of the 
  783. available options, with a short explanation of the function of each, is given 
  784. below.  Detailed descriptions of the operation of each option (ordered 
  785. alphabetically) is left to the next section.  
  786.  
  787. NOTE: options marked with & gained new syntax in v1.2;
  788.       options marked with + are new to v2.0;
  789.       options marked with ! no longer require the PERFECT option to be in 
  790.     force to be applied correctly to enclosed sectors.
  791.  
  792.    #         Marks a comment line in the option file
  793. &! BLIND     Makes sector(s) blind (or partially so)
  794.  ! BLOCK     Stops monsters seeing through a pair of specified lines
  795.    DISTANCE  Specifies how far (on the ground) monsters can see generally
  796. +  DOOR      Specifies the max. # of doors monsters can see through generally
  797.    EnMy      Marks start of options for a particular Doom1 level
  798.    EXC       Forces exclusion of view from one sector to another
  799.    INC       Forces inclusion of view from one sector to another
  800. &! INV BLIND Makes sector(s) long-sighted
  801. &! INV SAFE  Makes sector(s) invisible to close monsters (but not far ones)
  802.  ! LEFT      Makes a 2s line one-way see-through (from left to right)
  803.    LENGTH    Specifies how far (by sector) monsters can see generally
  804.    LINE      Makes a 2s line impossible to look through for monsters
  805. +  MAPxx     Marks start of options for a particular Doom2 map
  806. +  NODOOR    Marks sector(s) as not being a door [used only with DOOR option]
  807.    NOMAP     Removes the graphical display; reports progress as dots instead
  808.  ! ONE       Same as BLOCK, but only operates in one direction
  809.    PERFECT   Generates a perfect REJECT map: forces processing of all sectors
  810. +  PROCESS   Forces processing of specified sector(s)
  811.    REPORT    Reports all detected distances >=DISTANCE setting to file
  812.  ! RIGHT     Makes a 2s line one-way see-through (from right to left)
  813. &! SAFE      Makes sector(s) invisible to far monsters
  814.  
  815. 2.3.4 Processing time implications of RMB options
  816. -------------------------------------------------
  817. Because many of these options alter RMB's processing methodology, their use 
  818. will have implications for the time taken by RMB to build the REJECT map.  
  819. Below is a list of all the options, graded by their effect on the program's 
  820. processing speed.
  821.  
  822. These options speed RMB up (greatest first):
  823.     LENGTH    <Distance>
  824.     DISTANCE  <Map distance>
  825.     DOOR      <Number>
  826.     BLIND     <Distance> <Sector list>
  827.     LINE      <Line no>
  828.     LEFT      <Line no>
  829.     RIGHT     <Line no>
  830.     BLOCK     <Line no> <Line no>
  831.     ONE       <Line no> <Line no>
  832.  
  833. These options have no effect on speed:
  834.     #         <Comment>
  835.     EnMy
  836.     MAPxx
  837.     NOMAP
  838.     INC       <Sector> <Sector>
  839.     EXC       <Sector> <Sector>
  840.     SAFE      <Distance> <Sector list>
  841.     INV SAFE  <Distance> <Sector list>
  842.     INV BLIND <Distance> <Sector list>
  843.  
  844. These options cause RMB to slow down (greatest last):
  845.     REPORT    <Distance>
  846.     NODOOR    <Sector list>
  847.     PROCESS   <Sector list>
  848.     PERFECT 
  849.  
  850. Bear in mind that the longer RMB works, the greater the final efficiency of 
  851. the REJECT table (and the better the final speed-up) is likely to be.  
  852. Nevertheless, there will come a point where the additional return will not be 
  853. worth the extra effort.
  854.  
  855. 2.4 Miscellaneous
  856. -----------------
  857. An example options file is included with RMB, called SNEAK.REJ. This file 
  858. illustrates how to organise the options. Not all possible options are used in 
  859. SNEAK.REJ, just an interesting selection. Take a look at this file (and have a 
  860. play of the accompanying WAD file) to get a quick flavour of what RMB can do.
  861.  
  862.  
  863. 3.  OPTIONS REFERENCE
  864. =====================
  865.  
  866. 3.1 Explanation of argument types
  867. ---------------------------------
  868. The following terms are used to describe the arguments which RMB options take:
  869.  
  870. <Comment>  Any text, terminated by end-of-line.
  871.  
  872. <Distance> A distance, measured in sectors, including the specified sector,
  873.        so that 0 means "no distance"; 1 means "this sector only"; 
  874.        2 means "this and all immediately adjacent sectors" and so on.
  875.  
  876. <Line no>  The identification number of a 2-sided LINEDEF, as determined
  877.        within your WAD editor. (If yours won't tell you, you're using
  878.        the wrong one!) 
  879.  
  880. <Map distance> Distance as measured in Doom map co-ordinates.  Opinions
  881.        vary as to how this equates to distance in the real world: a 
  882.        good rule of thumb seems to be 1 map unit is equivalent to 2cm.
  883.  
  884. <Number>   A positive integer.
  885.  
  886. <Sector>   The identification number of a SECTOR, determined from a WAD 
  887.        editor. 
  888.  
  889. <Sector list> A list of <sectors>, separated from each other by spaces
  890.        and terminated by end of line.  e.g. 1 2 5 7 9
  891.  
  892.  
  893. 3.2 Individual Option Details
  894. -----------------------------
  895. This section contains full details of the operation of each RMB option, 
  896. arranged in alphabetical order:
  897.  
  898.  
  899. ============================================================
  900. # [Comment]             Syntax: # <Comment>
  901. ============================================================
  902.  
  903. Lines in the options file which start with a # character are regarded by RMB 
  904. as comment lines: the entire line will be ignored.  Comments are terminated by 
  905. an end of line and may contain any characters whatsoever.  Use comments in 
  906. your options file to remind yourself of what you are trying to achieve in the 
  907. file, or to temporarily disable options in the file without deleting them.
  908.  
  909.  
  910. ============================================================
  911. BLIND                   Syntax: BLIND <Distance> <Sector list> 
  912. ============================================================
  913.  
  914. This is a similar option to the BLIND parameter in the EFFECT utility but with 
  915. rather more flexible usage.  It turns all of the sectors in the <sector list> 
  916. blind for the specified <distance>.  A value of 0 for <distance> will produce 
  917. a sector in which monsters can see nothing at all.  A <distance> of 1 prevents 
  918. monsters from seeing out of the sector.  With <distance> 2, monsters can see 
  919. their own sector and all immediately neighbouring sectors, and so on. 
  920.  
  921. Applied to this map:
  922.  
  923.     o----o----o----o----o----o----o----o----o
  924.     |    :    :    :    :    :    :    :    |
  925.     | 1  : 2  : 3  : 4  : 5  : 6  : 7  : 8  | (a ':' marks a 2s line)
  926.     |    :    :    :    :    :    :    :    | (The numbers are sector numbers)
  927.     o----o----o----o----o----o----o----o----o 
  928.  
  929.  the option 
  930.  
  931.    BLIND 3 5 7 
  932.  
  933. will allow monsters in sector 5 to see up to 3 sectors each way (counting 
  934. their own sector) i.e. sectors 3, 4, 5, 6 and 7 but not sectors 1, 2 or 8.  In 
  935. addition, monsters in sector 7 get to see into sectors 5, 6, 7 and 8, but not 
  936. sectors 1, 2, 3 or 4. 
  937.  
  938. This option is useful if you want to restrict monsters' viewing range in 
  939. certain areas, to allow for low light intensities, perhaps; or just to prevent 
  940. them from waking too soon.
  941.  
  942. The BLIND option can be prefixed by the option INV as below:
  943.  
  944.      INV BLIND 1 2 3 4
  945.  
  946. While BLIND (without INV) makes monsters near-sighted or totally blind, 
  947. inverting this with INV BLIND makes monsters LONG-sighted.  This means that a 
  948. monster in any of the sectors specified in <sector list> will only be able to 
  949. see sectors *beyond* the specified <distance>.  This means that where BLIND 1 
  950. <sector list> makes the monsters in one of the specified sectors unable to see 
  951. anything but their own sector, INV BLIND 1 <sector list> will make them unable 
  952. to see their own sector, but quite capable of seeing all sectors beyond it. 
  953.  
  954. There may be occasions when you want to prevent a sector from seeing other 
  955. sectors within a range of distances, say between 2 and 4 sectors distant.  RMB 
  956. allows you to achieve this effect by combining the BLIND and INV BLIND options 
  957. in the following way:  if you specify both INV BLIND and BLIND options for any 
  958. particular sector(s) and the value you specify as the distance for the INV 
  959. BLIND option is greater than that for the BLIND option, then RMB will blind 
  960. the specified sector(s) from only those sectors located where the two 
  961. distances overlap.  For example, if you use
  962.  
  963. INV BLIND 4 1
  964. BLIND 2 1
  965.  
  966. RMB interprets this to mean "make sector 1 blind to only those sectors which 
  967. are closer than 4 but further away than 2".  Note that this is a specific 
  968. exception to the general rules about the combination of options which are set 
  969. out in the next section.
  970.  
  971. In cases where BLIND and INV BLIND options affect the same sector and the INV 
  972. BLIND distance is the smaller of the two, standard combination rules apply:
  973.  
  974. INV BLIND 2 1
  975. BLIND 4 1
  976.  
  977. will be interpreted as "make sector 1 blind to sectors closer than 2 and to 
  978. sectors further away than 4".  Here, each option is applied just as would be 
  979. expected.
  980.  
  981.  
  982. ============================================================
  983. BLOCK                   Syntax: Block <Line no> <Line no> 
  984. ============================================================
  985.  
  986. This option sets a block to any los-calculation that attempts to pass through 
  987. *both* of the specified <Line no>'s.  The ability to set such blocks is 
  988. provided to compensate for RMB's over-cautious treatment of vertical 
  989. differences between sectors (remember that it ignores height changes in its 
  990. own los-calculations).  Recall our earlier lift shaft?  With the lift in the 
  991. 'down' position, it looks like this (in side view):
  992.  
  993.                 4      5 
  994.              |------|------|        Plain numbers identify
  995.              |         o   |        sectors;
  996.              |         -\  | 
  997.              |          /\ |        Sector 4 is a lift in
  998.              |      |------|        the 'down' position.
  999.              |      |   ^ 
  1000.              |      |   |
  1001.        1       2      3  |      |   example player
  1002.     |------|------|------|      |   position
  1003.     |                           |
  1004.     |                           |
  1005.     |                           |
  1006.     |------|------|------|------|
  1007.       #0     #1     #2     #3      <- These numbers identify 2-s LINEDEFs
  1008.  
  1009. Because of the relative floor and ceiling heights, sectors 1 and 2 cannot see 
  1010. sector 5 or vice versa.  RMB cannot work this out from the level map, however, 
  1011. which looks like this:
  1012.  
  1013.     o------o------o------o------o------o
  1014.     |      :      :      :      :      |
  1015.     |  1   :   2  :   3  :   4  :  5   |   where every sector appears to
  1016.     |     #0     #1     #2     #3      |   be able to see all others.
  1017.     |      :      :      :      :      |
  1018.     o------o------o------o------o------o
  1019.  
  1020. If you want RMB to know about this particular blocked line-of-sight, you'll 
  1021. need to tell it.  In this case, the block is between line #1 and line #3 (i.e. 
  1022. nothing to the left of #1 can see anything to the right of #3 and vice versa) 
  1023. and you would use the option
  1024.  
  1025.    BLOCK 1 3 
  1026.  
  1027. As already mentioned, hunting through your WADs for blocks such as this just 
  1028. to gain some playing speed is unlikely to pay off.  The BLOCK option is useful 
  1029. for chopping short particularly long lines of sight, such as those identified 
  1030. for you by the REPORT option (see below); or for handling those areas where 
  1031. you want to make absolutely sure (as in the example above) that monsters don't 
  1032. see more than is good for them (or good for you, at any rate!)  
  1033.  
  1034. [You may be interested to know that the Doom game engine does not seem to know 
  1035. too much about vertical blocks such as these either: if you'd like to see an 
  1036. example, check out the accompanying RMBTESTS.ZIP].
  1037.  
  1038. Obtain the <Line no> identification of the lines you wish to BLOCK from your 
  1039. WAD editor.
  1040.  
  1041. Note that for a BLOCK to be successfully specified with this option, both of 
  1042. the specified lines must be on inter-sector boundaries.  Internal lines, 
  1043. acting as triggers or monster-blockers, cannot be specified, as they occupy 
  1044. only one sector and the REJECT map only contains information about inter-
  1045. sector sight-lines.  If you need to set a block at a particular line within a 
  1046. sector, you will need to divide the sector into additional sectors using your 
  1047. WAD editor, before applying RMB.
  1048.  
  1049.  
  1050. ============================================================
  1051. DISTANCE                Syntax: DISTANCE <Map distance> 
  1052. ============================================================
  1053.  
  1054. The DISTANCE option allows you to set a limit on how far monsters can see 
  1055. generally, in the WAD you are processing: sectors further apart than the 
  1056. specified distance will not be able to see each other (subject to some 
  1057. conditions, set out below).  DISTANCE is similar in operation to the LENGTH 
  1058. option, but it takes a distance parameter specified in Doom map units, rather 
  1059. than sectors: this is usually the better way to limit the lines of sight.
  1060.  
  1061. The distance being specified is the maximum distance by which you want sectors 
  1062. in sight of each other to be separated.  It is important to realise, however, 
  1063. that RMB will not start to check on whether or not to apply any DISTANCE 
  1064. limitation until the sectors being examined are three or more sectors removed 
  1065. from each other, thus:
  1066.  
  1067.     o------o------o------o------o------o----------o--
  1068.     |      :      :      :      :      :          :
  1069.     |  1   :   2  :   3  :   4  :  5   :     6    :  7
  1070.     |      :      :      :      :      :          :
  1071.     o------o------o------o------o------o----------o--
  1072.        <------d4----->                d4 = distance between sector 1 & 4
  1073.        <----------d5-------->         d5 = distance between sector 1 & 5
  1074.        <--------------d6----------->     etc.
  1075.  
  1076. Here, sector 1 will be marked as seeing sectors 2 and 3 regardless of any 
  1077. DISTANCE option setting.  Along any sight-line from sector 1 (and there is 
  1078. only one here), subsequent sectors will be considered until the inter-sector 
  1079. distance (here d4, d5, d6 etc.) exceeds the value specified in the DISTANCE 
  1080. option.  Sectors within the distance are within sight, those further away are 
  1081. marked as being out of sight.  In the above example, if we take each dash (-) 
  1082. on the map to equate to 10 Doom map units, then the distances between sector 1 
  1083. and all of the other sectors shown are:
  1084.  
  1085.     d4:  140
  1086.     d5:  210
  1087.     d6:  280
  1088.     d7:  390    etc.
  1089.  
  1090. If the option 
  1091.  
  1092.   DISTANCE 300
  1093.  
  1094. was specified for this level, then sector 1 would be able to see all other 
  1095. sectors as far as sector 6.  Sector 7, however, would be too far away and 
  1096. consequently would be marked as out-of-sight.  A DISTANCE setting of 130 would 
  1097. prevent sector 1 from seeing as far as sector 4.  There is no setting of this 
  1098. option that you could use to prevent sector 1 from seeing sectors 2 or 3.
  1099.  
  1100. To gain some feel for how far any distance setting actually is, bear in mind 
  1101. that a normal door is 128 units wide.  Another good rule of thumb, which many 
  1102. designers use, is that one Doom (horizontal) unit equates to about 2cm in the 
  1103. real world.  A setting of
  1104.  
  1105.     DISTANCE 1000 
  1106.  
  1107. would therefore prevent monsters from seeing between any sectors that were 
  1108. more than (approx.) 20 (virtual) metres apart at their closest point (provided 
  1109. there were at least two sectors in between). 
  1110.  
  1111. Use this command to increase the efficiency of the REJECT map, by preventing 
  1112. monsters from seeing great distances.  Don't use it, of course, if you have 
  1113. areas of your WAD that rely for effect on monsters being able to see long 
  1114. distances: like in E2M3 of DOOM.WAD, for example.
  1115.  
  1116. Take care also not to confuse this option with LENGTH.
  1117.  
  1118.  
  1119. ============================================================
  1120. DOOR                     Syntax: DOOR <Number> 
  1121. ============================================================
  1122.  
  1123. This option makes RMB attempt to recognise sectors which are doors and then 
  1124. adjust the REJECT table to prevent monsters from seeing through more than the 
  1125. specified <number> of doors at any one time.
  1126.  
  1127. The option is provided to allow an increase in the REJECT map efficiency by 
  1128. utilising the fact that it is usually hard for monsters to see through a long 
  1129. string of doors (more than 4 or 5, say) because they are unlikely ever to all 
  1130. be open at the same time.  Choose the value with care: 5 is usually safe; 3 
  1131. can be: you may have to experiment to find the best setting for your WAD.  
  1132. Remember that monsters can open some doors.  Remember too that during Death 
  1133. Match or Co-operative play there may be up to four players all capable of 
  1134. opening doors simultaneously.  (I didn't say it was likely, I merely said it 
  1135. could happen!)
  1136.  
  1137. Sectors are identified as doors by RMB if they have their floor and ceiling 
  1138. heights set to the same value.  If you have sectors set this way that you 
  1139. don't want RMB to treat as a door for the purposes of sight-line blocking 
  1140. (because it stays open, for example), you can use the NODOOR option (see 
  1141. below) to tell RMB which sectors to ignore.
  1142.  
  1143.  
  1144. ============================================================
  1145. EXC                     Syntax: EXC <Sector1> <Sector2> 
  1146. ============================================================
  1147.  
  1148. This option allows you to specifically EXClude a particular inter-sector line 
  1149. of sight.  Its action is to make it impossible for monsters in <Sector1> to 
  1150. see into <Sector2>.  Note that EXC operates only in one direction (affecting 
  1151. just a single bit in the REJECT map) and that it overrides ALL other option 
  1152. settings for the specified sight-line. 
  1153.  
  1154. EXC can be used to make small adjustments after the wider application of other 
  1155. options, or to make minor modifications to a REJECT table.  It is particularly 
  1156. useful for setting small 'safe' areas within larger rooms. 
  1157.  
  1158.  
  1159. ============================================================
  1160. INC                     Syntax: INC <Sector1> <Sector2> 
  1161. ============================================================
  1162.  
  1163. This option allows you to force a particular sight-line to be examined by the 
  1164. game engine at game-time.  It marks as feasible monsters in <Sector1> to see 
  1165. the player in <Sector2>, no matter what all the other options say.  INC 
  1166. overrides all other options except EXC. 
  1167.  
  1168. It can be used to make special effects like this:  
  1169.  
  1170. Blind a sector completely with BLIND 0. Put a lot of monsters in it, then make 
  1171. a platform in sight of the blinded sector.  Use the INC option to make the 
  1172. monsters able to see the platform and nothing else.  If it is difficult for 
  1173. the player to see from the platform to the blinded sector, the player will be 
  1174. surprised when he is suddenly attacked... 
  1175.  
  1176. "I stepped onto the platform and took the key. There was no sound of doors 
  1177. opening, so I was home free... suddenly, the room was flying with fireballs. 
  1178. Where the <censored> did those imps come from?" 
  1179.  
  1180.  
  1181. ============================================================
  1182. INV BLIND/SAFE           Syntax: INV BLIND <Distance> <Sector list> 
  1183. ==============                   INV SAFE <Distance> <Sector list> 
  1184.  
  1185. See BLIND and SAFE for details of the INV option.
  1186.  
  1187.  
  1188. ============================================================
  1189. LEFT                     Syntax: LEFT <Line no> 
  1190. ============================================================
  1191.  
  1192. This option makes a two-sided LINEDEF, specified through its <Line no>, into a 
  1193. line through which monsters can only see from its left side.  This option is 
  1194. useful if you have a wall (or curtain) that has a solid texture on one side 
  1195. but not on the other and you want monsters to respond logically to it.  
  1196. (Normally, monsters can see through all 2-sided LINEDEFs, irrespective of 
  1197. their textures.)
  1198.  
  1199. Note that for this option to be applied successfully, the specified line must 
  1200. be on an inter-sector boundary.  Internal lines cannot be specified: if you 
  1201. need to apply this type of block to a particular line within a sector, you 
  1202. will need to divide the sector into additional sectors along this line using 
  1203. your WAD editor, before applying RMB.
  1204.  
  1205.  
  1206. ============================================================
  1207. LENGTH                  Syntax: LENGTH <Distance> 
  1208. ============================================================
  1209.  
  1210. The LENGTH option allows you to set a limit on how far (in terms of sectors) 
  1211. monsters can see generally: sectors further apart than the specified distance 
  1212. will not be able to see each other.  The <Distance> limit is the number of 2-
  1213. sided LINEDEFs through which monsters can see.
  1214.  
  1215. Use this command to increase the efficiency of the REJECT map by preventing 
  1216. monsters from seeing too many sectors ahead.  Use it with care, however.  A 
  1217. setting of 20 is often safe: any lower may make monsters behave strangely - if 
  1218. you want your monsters to be able to see from the top to the bottom of a 
  1219. flight of stairs, for instance, you must allow sufficient sectors in the 
  1220. LENGTH option to cover the entire staircase.  For most WADs, the DISTANCE 
  1221. option gives better (more realistic) results.
  1222.  
  1223.  
  1224. ============================================================
  1225. LINE                    Syntax: LINE <Line no> 
  1226. ============================================================
  1227.  
  1228. This option makes it impossible for monsters to see through a 2-sided line at 
  1229. all.  This is useful if you have such a line with texture on both sides, so 
  1230. that the player can't see through it.  Normally monsters can see through *any* 
  1231. 2-sided line: with this option you can prevent them from doing so. 
  1232.  
  1233. Note that for this option to be applied successfully, the specified line must 
  1234. be on an inter-sector boundary.  Internal lines cannot be specified: if you 
  1235. need to apply this type of block to a particular line within a sector, you 
  1236. will need to use your WAD editor to divide the sector into additional sectors 
  1237. along this line, before applying RMB.
  1238.  
  1239.  
  1240. ============================================================
  1241. NODOOR                 Syntax: NODOOR <Sector list>
  1242. ============================================================
  1243.  
  1244. This option allows you to specify which sectors should not be considered to be 
  1245. doors, when processing the DOOR option.  (See DOOR for details.)  Obviously, 
  1246. there is only any point specifying sectors that could be mistaken for doors 
  1247. (by virtue of them having their floor and ceiling at the same height).
  1248.  
  1249. RMB does not consider doors unless the DOOR option is used, so the NODOOR 
  1250. option does nothing unless a DOOR option is in effect. 
  1251.  
  1252.  
  1253. ============================================================
  1254. NOMAP                   Syntax: NOMAP
  1255. ============================================================
  1256.  
  1257. This option instructs RMB not to display the graphical view of the level being 
  1258. processed.  Instead, the number of the sector being processed is shown, 
  1259. followed by a dot as each sector adjacent to the current sector is processed.  
  1260. In effect, a new dot is printed each time a line would have changed to yellow 
  1261. on the map display. 
  1262.  
  1263. It takes *exactly* the same time to process a wad in the graphics mode as it 
  1264. takes in the text mode. 
  1265.  
  1266. When NOMAP is used you can start the program without being in the same 
  1267. directory as RMB. 
  1268.  
  1269.  
  1270. ============================================================
  1271. ONE                     Syntax: ONE <Line #1> <Line #2> 
  1272. ============================================================
  1273.  
  1274. Whereas BLOCK blocks a line-of-sight both ways across two specified lines, the 
  1275. ONE option sets a block in one direction only: from <Line #1> to <Line #2>.  
  1276. This is useful in areas where you would ordinarily use a BLOCK option, but you 
  1277. know that there is already some other one-way block in operation (a RIGHT or 
  1278. LEFT, say) somewhere between the two BLOCK lines, making RMB's further 
  1279. blocking of both directions superfluous.  Reducing such extraneous operations 
  1280. will increase the speed of RMB's processing.
  1281.  
  1282. Note that for a block to be successfully specified with this option, both of 
  1283. the lines must be on inter-sector boundaries.  Internal lines, which act just 
  1284. as triggers and monster-blockers, cannot be specified: if you need to set a 
  1285. block at a particular line within a sector, you will need to use your WAD 
  1286. editor to divide the sector into additional sectors along that line, before 
  1287. applying RMB.
  1288.  
  1289.  
  1290. ============================================================
  1291. PERFECT                 Syntax: PERFECT 
  1292. ============================================================
  1293.  
  1294. Ordinarily, RMB will treat all sectors that are totally enclosed within 
  1295. another sector as part of the enclosing sector (provided they have no 1-sided 
  1296. LINEDEFs).  In most WADs, this greatly cuts down the number of sectors that 
  1297. RMB needs to consider.  It also leads to a less than perfect REJECT map: use 
  1298. the PERFECT option to prevent RMB from taking this processing short-cut and 
  1299. make it consider all sector-to-sector sight-lines.  Be prepared for long 
  1300. processing times, however, if you have a large WAD.
  1301.  
  1302. Note that from v2.0 of RMB, all sectors referenced in a SAFE, BLIND, BLOCK, 
  1303. ONE, LEFT, RIGHT or PROCESS option will be processed, regardless of whether 
  1304. PERFECT has been specified or not.  However, sectors that are internal to the 
  1305. sectors referenced in the SAFE or BLIND options will not be treated separately 
  1306. from their enclosing sector, unless PERFECT has been specified.  If you don't 
  1307. use PERFECT, any sector specified as SAFE, say, will have all its internal 
  1308. sectors marked safe as well.  Don't be tempted to use PERFECT just to prevent 
  1309. the SAFE and BLIND options from working in this way over a small area, 
  1310. especially if you are processing a larger WAD.  You will add a large 
  1311. processing over-head to prevent only a small number of unwanted effects: it is 
  1312. better to identify the areas which will be treated incorrectly (to your way of 
  1313. thinking) and force their inclusion in RMB's processing with a PROCESS option 
  1314. (see below).  Using PERFECT on large WADs can add considerably to RMB's 
  1315. processing time for very little gain in REJECT efficiency.
  1316.  
  1317. You may find it beneficial to think in terms of rooms, rather than sectors 
  1318. when planning and applying your special effects: in the default mode of 
  1319. operation (i.e. without PERFECT) if you apply the SAFE option to a sector that 
  1320. encloses other sectors (a room), you will make all the 'decorational' sectors 
  1321. in that room safe too: this is usually what is wanted.  Consider this room, 
  1322. for example:
  1323.  
  1324.    ---o------------------------------------o--    Sector 12 is main room;
  1325.       :                                    :      v. low light levels
  1326.       :   o.......o       o.....o   o...o  :
  1327.       :   :       :       :     :   :   :  :      sectors 13, 14, 15 are
  1328.       :   :       :       :  14 :   : 7 :  :      platforms in the room
  1329.       :   :   13  :       o.....o   o...o  :      also at v. low light
  1330.       :   :       :   12                   :      levels;
  1331.   10  :   :       :       o.....o   o...o  : 11   
  1332.       :   o.......o       :     :   :   :  :      sectors 7, 8 are
  1333.       :                   :  15 :   : 8 :  :      areas brightly lit.
  1334.       :                   :     :   o...o  :
  1335.       o.....o             o.....o          :
  1336.       :  9  :                              :      sector 9 = high ledge
  1337.    ---o-----o------------------------------o---
  1338.  
  1339. You may decide that because the room is very dark, the player should not be 
  1340. seen there easily and you would like it to be safe from attack from monsters 
  1341. who aren't in it: in sectors 10 & 11, for instance, or off to the east and 
  1342. west, somewhere.  You would therefore use the option SAFE 1 12. Without 
  1343. PERFECT, the resulting REJECT table looks like this:
  1344.  
  1345.             PLAYER
  1346.        7   8   9  10  11  12  13  14  15      Note that all other bits in
  1347.     +-------------------------------------    the player sector columns
  1348.     7   |  0   0   0   0   0   0   0   0   0        7, 8, 12, 13, 14 & 15
  1349.  M  8   |  0   0   0   0   0   0   0   0   0             will be 1's.
  1350.  O  9   |  1   1   0   0   0   1   1   1   1  
  1351.  N 10   |  1   1   0   0   0   1   1   1   1  
  1352.  S 11   |  1   1   0   0   0   1   1   1   1  
  1353.  T 12   |  0   0   0   0   0   0   0   0   0  
  1354.  E 13   |  0   0   0   0   0   0   0   0   0  
  1355.  R 14   |  0   0   0   0   0   0   0   0   0  
  1356.    15   |  0   0   0   0   0   0   0   0   0  
  1357.  
  1358. You should be able to see that this makes all sectors inside sector 12 (as 
  1359. well as sector 12 itself) safe from attack from monsters outside the room.  
  1360. [Note that the platform, sector 9, has not been included in the room here: it 
  1361. has a 1-sided LINEDEF, as well as a connection with another sector and 
  1362. therefore is not an enclosed sector.]  Within the 'room' (i.e. the main sector 
  1363. and all its enclosed sectors), though, monsters can see everything.  
  1364.  
  1365. If the PERFECT option had been specified, on the other hand, the reject map 
  1366. would have looked like this:-
  1367.  
  1368.             PLAYER
  1369.        7   8   9  10  11  12  13  14  15
  1370.     +-------------------------------------
  1371.     7   |  0   0   0   0   0   1   0   0   0    Note: all other bits in
  1372.  M  8   |  0   0   0   0   0   1   0   0   0     player sector 12 will
  1373.  O  9   |  0   0   0   0   0   1   0   0   0           be 1's.
  1374.  N 10   |  0   0   0   0   0   1   0   0   0  
  1375.  S 11   |  0   0   0   0   0   1   0   0   0  
  1376.  T 12   |  0   0   0   0   0   0   0   0   0  
  1377.  E 13   |  0   0   0   0   0   1   0   0   0  
  1378.  R 14   |  0   0   0   0   0   1   0   0   0  
  1379.    15   |  0   0   0   0   0   1   0   0   0  
  1380.  
  1381. Notice that here none of the enclosed sectors act as part of the larger 'room' 
  1382. any more: no longer are they safe (from anything, anywhere) and monsters in 
  1383. them will behave oddly, in that they can no longer fire into the main sector.
  1384.  
  1385. By and large, you will usually find that the default operation of RMB (i.e. 
  1386. without PERFECT) will give more 'desirable' handling of the SAFE and BLIND 
  1387. special effects.
  1388.  
  1389. If you then want certain enclosed areas not to inherit the general level of 
  1390. safety of the overall room, use a PROCESS option to prevent it. (See below)
  1391.  
  1392.  
  1393. ============================================================
  1394. PROCESS                 Syntax: PROCESS <Sector list>
  1395. ============================================================
  1396.  
  1397. This option forces RMB to process fully the sectors specified in the <Sector 
  1398. list>, regardless of whether they happen to be contained wholly within another 
  1399. sector or not.  The option is designed to force processing in areas where you 
  1400. are applying special effects, where you wish to prevent the grouping of 
  1401. enclosed sectors with their surrounding sector, or where you need rigorous 
  1402. optimisation of the REJECT map.  Naturally, its use is entirely superfluous if 
  1403. you also use the PERFECT option.
  1404.  
  1405. In the example room used to demonstrate the PERFECT option above, it would 
  1406. make sense for the player to come under fire from monsters outside the room if 
  1407. he stepped into the brightly lit areas (sectors 7 and 8), because he would now 
  1408. become more visible.  To achieve this, simply use PROCESS 7 8 in the options 
  1409. file: this will result in RMB processing these two sectors separately from the 
  1410. rest of the room.  In effect, the bit settings for sectors 7 & 8 shown in the 
  1411. second of the two REJECT maps (the PERFECT version) will be substituted for 
  1412. those shown in the earlier map, and the player will now be open to attack from 
  1413. all monsters while in the two brightly-lit areas of our room.  Of course, this 
  1414. will also mean that monsters in sectors 7 & 8 will now no longer be able to 
  1415. see into the main 'room' (because these sectors have no been processed as if 
  1416. they were separate from it).  If you don't think that monsters in these 
  1417. sectors will be dazzled by the extra light and would like them to be able to 
  1418. fire into the room, you'll need to use a couple of INC options to override 
  1419. this aspect of the PROCESS effect.
  1420.  
  1421.  
  1422. ============================================================
  1423. REPORT                  Syntax: REPORT <Distance> 
  1424. ============================================================
  1425.  
  1426. If this option is used, a file with the same name as the WAD file but with the 
  1427. extension .RPT is generated.  After the execution of RMB, this file will 
  1428. contain a list of all sector pairs that are separated from each other by a 
  1429. distance in excess of that specified (measured in sectors) and are also in 
  1430. line of sight of each other.  This is useful for the identification of areas 
  1431. where sight-lines would seem to be excessively long.  In practice, such lines 
  1432. of sight are more than likely blocked by differences of floor and ceiling 
  1433. height, or by several doors.  The REPORT file will then help you identify 
  1434. suitable places to apply a BLOCK. 
  1435.  
  1436. Using a REPORT <distance> factor greater than any distance specified in a 
  1437. LENGTH option would be a waste of time, as RMB will already have applied a 
  1438. BLOCK itself.  It is often a good idea, though, to use REPORT and LENGTH 
  1439. together, with the same <distance> value.  A value around 20 is generally a 
  1440. good one to use (although see comments on LENGTH values, above.)
  1441.  
  1442.  
  1443. ============================================================
  1444. RIGHT                   Syntax: RIGHT <Line no>
  1445. ============================================================
  1446.  
  1447. This option works exactly as LEFT, except that it allows monsters to see 
  1448. through the line from its right side only.  See LEFT for details.
  1449.  
  1450.  
  1451. ============================================================
  1452. SAFE                    Syntax: SAFE <Distance> <Sector list>
  1453. ============================================================
  1454.  
  1455. This option operates much as the SAFE parameter in the EFFECT command, but 
  1456. with rather more flexible usage.  The <Distance> parameter allows you to 
  1457. specify how close (in sectors, of course) monsters must be in order to see 
  1458. into the specified sector(s).  Distance is reckoned exactly the same way as 
  1459. for the BLIND option: SAFE 0 indicates that a sector is only safe from within 
  1460. itself; SAFE 1 sets a sector that is unsighted from all of its neighbours but 
  1461. can be seen by monsters actually in the sector, and so on.
  1462.  
  1463. The SAFE option can be prefixed by the option INV as here:
  1464.  
  1465.      INV SAFE 1 2 3 4
  1466.  
  1467. This option allows you to specify sectors which are safe from the attention of 
  1468. monsters *within* the specified <distance> but which will still suffer attacks 
  1469. from monsters further away.  Because it is in the nature of monsters to always 
  1470. try to move closer to the player, this will have the effect that the monsters 
  1471. will disable themselves as they move closer to INV SAFE sector(s)! 
  1472.  
  1473. INV SAFE and SAFE can be combined to cover ranges of distances, in the same 
  1474. way as INV BLIND and BLIND:  see the BLIND option for more details.
  1475.  
  1476.  
  1477. 3.3 Combining Options
  1478. ---------------------
  1479. Most RMB options can be applied quite independently of other options.  It is 
  1480. possible, however, for conflicting options to be specified for individual 
  1481. sectors and it is important to understand how RMB resolves these conflicts.
  1482.  
  1483. In cases where an attempt is made to apply the same option to any particular 
  1484. sector in different ways, as here, for example:
  1485.  
  1486. SAFE 2 3
  1487. SAFE 0 3
  1488.  
  1489. it is only the last version that is applied.  In this example, the SAFE 2 3 
  1490. option is never used.  This is the only case where the order of options in an 
  1491. options file is significant.
  1492.  
  1493. Generally, if different options are applied to the same sector in such a way 
  1494. as to produce a conflict, both options will be applied fully with any los-
  1495. blocks created by one of the options preserved, whatever the other options 
  1496. say.  
  1497.  
  1498. In this example:
  1499.  
  1500. SAFE 1 3
  1501. BLIND 0 3
  1502.  
  1503. the BLIND option will blind sector 3 from itself despite the SAFE option 
  1504. implying that it shouldn't.  Reversing these two options in the options file 
  1505. would make no difference to the resulting REJECT map.
  1506.  
  1507. There are a number of specific exceptions to this general rule:
  1508.  
  1509. i.  the BLIND and INV BLIND options can be combined in a special way to 
  1510. produce 'bands' of blindness: this occurs when the distance parameter supplied 
  1511. to INV BLIND exceeds that supplied to BLIND.  See the description of the BLIND 
  1512. option for details.
  1513.  
  1514. ii.  the SAFE and INV SAFE options can be combined in the same way as BLIND 
  1515. and INV BLIND: see the description of the SAFE option for details.
  1516.  
  1517. iii  the INC option overrides all other options, except EXC.
  1518.  
  1519.  
  1520. 4. COPYRIGHT NOTICES, DISCLAIMER AND CONDITIONS OF USE
  1521. ======================================================
  1522. This program is copyright of its author, Jens Hykkelbjerg.  This documentation 
  1523. is copyright of its authors Jens Hykkelbjerg and Steve Benner.
  1524.  
  1525. Doom and Doom 2 are Id software products, and are not free of charge. 
  1526.  
  1527. The credit for any WADs mentioned in this text goes to the respective authors. 
  1528.  
  1529. This program and its documentation is supplied completely free of charge.  The 
  1530. program and its documentation may be freely distributed, providing that it is 
  1531. intact and has not been modified in any way.  The program, documentation or 
  1532. parts thereof may NOT be used for commercial purposes or financial gain or be 
  1533. included in commercial packages (including shareware releases).  You may not 
  1534. charge for handling or distributing this program, its documentation of any 
  1535. part thereof.
  1536.  
  1537. The author accepts no responsibility for ANYTHING that may happen as a result 
  1538. of using this software.  If your computer mutates into something large, pink 
  1539. and savage, that's your problem.
  1540.  
  1541.  
  1542. 5. AUTHORS' NOTES
  1543. =================
  1544. This software was written by Jens Hykkelbjerg:  email: hykkelbj@daimi.aau.dk
  1545.  
  1546. I am a 24 year-old student at the University in Aarhus, Denmark.   It was 
  1547. inspired by a discussion on the Doom-editing list (long may it run) and 
  1548. written entirely from scratch using Borland's Turbo Pascal 6.0.
  1549.  
  1550. I use DEU5.21 and IDBSP for my own WADs.  I recommend the use of a rule 
  1551. checker like the one in DEU5.21 before using this program!  
  1552.  
  1553. The manual was written by Jens Hykkelbjerg and Steve Benner: email 
  1554. S.Benner@lancaster.ac.uk
  1555.  
  1556. Steve is a computer support officer for the Environmental Science Dept at 
  1557. Lancaster University, UK.  He has been playing computer simulations for more 
  1558. years than he likes to admit.  He uses WADED for his WADs but wouldn't want to 
  1559. start an argument over it!
  1560.  
  1561.  
  1562. 6. ACKNOWLEDGEMENTS
  1563. ===================
  1564. "The Unofficial Doom Specs" was a great help in the production of this 
  1565. program: without it, this program could never have been written. 
  1566.  
  1567. Thanks also to Steve Benner for mangling, mutilating and generally hacking 
  1568. this manual into its current form: if it's too long now, blame him.  Send any 
  1569. moans, grumbles or suggestions for improvement that you may have about the 
  1570. documentation to him: email: S.Benner@lancaster.ac.uk
  1571.  
  1572. ================================
  1573. Jens Hykkelbjerg / Steve Benner
  1574. 17 Oct 94
  1575.