Welcome to v1.5 of The UnOfficial Duke Nukem 3D Editing FAQ!
What happened to the other versions? Well, it looks like I got a
bit mixed up with the version numbers (seems like two v1.2s came
out, for example), and thus I've decided to up the version number
to v1.5.
Also, I think some sectors contain new information without being
marked with hashes (#) - so feel free to read through the whole
FAQ again :-)
Improvements to be found in here:
    *  Some very embarassing errors removed.
    *  Lots more tips and tricks and some how-tos.
    *  Trouble-shooting section enlarged.
    *  More on CON file programming.
    *  Museum removed (anyone who needed it?).
    *  Used hashes (#) instead of asterisks (*) to denote changes
       - so you can search through the FAQ more easily.
    *  Many other small changes.
All chapters which changed since the last release of the FAQ are
marked with '#' in the table of contents. I have stopped marking
the other chapters with things like '[' or '(' as it simply
became too much work.
Planned improvements:
    *  Explain _all_ tiles in the reference section. I *still*
       haven't gotten around to doing them all.
    *  Add more info on the utilities for Duke3D (like
       RTSMAKER.EXE).
    *  List of sector effectors.
    *  As always, more how-tos!
I've received quite a lot of feedback - please keep it up! I'm
also very interested in any ftp or www sites as well as any maps.
Also, I was very embarassed indeed when lots of people quoted my
(wrong) assumption of one-way teleporters of being linked with
the floor texture. Seems that I haven't looked at teleporters in
a long time and just overlooked that bit of nonsense...
So: to make a one-way teleporter, make the (square) receiving
sector smaller than 64 pixels on each side. Thanks, ns_Gotare!
Which reminds me: if you find fault with this FAQ, for whatever
reason, please email me about it. I'm just as interested as you
in having an error-free reference :)
Say, I'm thinking of posting the FAQ in compressed form, readable
by either UUDECODing it or pushing it through the DOS DEBUG
command. What do you think? Too many Windoze users around who
couldn't read it then?
I've kicked out the museum, by the way. Unless I hear otherwise,
I don't think the additional space worth it.
Here are some questions for you:
    *  Anybody who can send me info, tips and tricks to be
       included here? All ideas, tricks, etc which make it into
       the FAQ will, of course, be fully attributed.
    *  I'd especially appreciate it if anybody could point out
       errors in this FAQ. I'm even interested in typos :)
    *  Anybody who can think of questions which should be
       included in this FAQ?
    *  Lots of open questions in the FAQ - the most pressing ones
       IMO are marked '##'.
The FAQ is usually be posted to alt.games.duke3d, as well as the
mailing list.
Ciao,
Klaus
--- cut here ---
             __________     ___     ___   ___   ______ __________
            |          `\  |   |   |   | |   | /    /~|          |
            `|     ..    `\|.::|   |:::| |::.|/.. /~  |   -------'
             |     HHb..:::dHHHH   HHHHH |HHHHHb:Y..  |   `"""""|
             |    .HHH:::dHHHHHH   HHHHH |HHHHHHHb::::|.  ______|
            ,|  .:|HHHxHHHHHHHHHbodHHHHP |HHHHHHHHbn::|:::`------.
            |______HHHHHHHP "YHHHHHHHHP  |HHH| `HHHHHbHHb:::::...|
             ____  ~~~~~~     `~~"~~~     ~~~   ~~~~~~ ~~~~~~~~~~
            |.:::`:::HHHH:HHH:::HHH:HHb::dHHP:HHHHHHHH:HHb::::,~~|
            |:::dHb::HHHH:HHH:::HHH:HHHbdHHP::HHHHHHHH:HHHb:::/::|
             |dHHHHb:HHHH:HHH:::HHH:HHHHHHP:::HHH....::HHHHb:/'::|
             dHHHHHHMHHHH:HHH:::HHH:HHHHHHX:::HHHHHHH::HHHHHXHb::|
             HHH"YHHHHHHH:HHH:::HHH:HHHHHHHb::HHH""""::HHHXHHHXHb|
            HHHH:::YHMMM!:YHHHMHHHP:HHH:"YHHb:HHHHHHHH:HHH:YHP:HHH
            HHHH:::::HHHH::"YHHHY"::HHH:::YHHbHHHHHHHH:HHH::Y::HHH
            mmmmmmmmmmmmmmmmmmmmmmm   mmmmmmmmmmmmmmmmmmmmmm..
            HHHHHHHHHHHHHHHHHHHHHHHHb HHHHHHHHHHHHHHHHHHHHHHHHHn
            """"          XHHHHHHHHHR ^HHHHHHHHHHH"""YHHHHHHHHHHb.
                 HHHHHHHHHHHHHHHHHHHP  HHHHHHHHHHH    HHHHHHHHHHHH
                 HHHHHHHHHHHHHHHHHHHb  HHHHHHHHHHH    HHHHHHHHHHHH
            mmmm          XHHHHHHHHHH mHHHHHHHHHHHmmmdHHHHHHHHHHP'
            HHHHHHHHHHHHHHHHHHHHHHHHP HHHHHHHHHHHHHHHHHHHHHHHHP'
            """""""""""""""""""""""   """""""""""""""""""""""
       HHHHHH    HH db HH   db                HHHHHHHH  dHH  .dHHb.
       HH        HH YP HH   YP                HH       dHHH dHP""YHb
       HHHH   .dHHH    HHHH    HHHb.  .db.    HHHHH   dHPHH HH    HH
       HH    dH' HH HH HH   HH HH"Hb dP"Hb    HH     dHP HH HH Yb HH
       HH    Yb. HH HH YHb. HH HH HH Yb HH    HH    dHHHHHH YHb.YbHP
       HHHHHH "YHHH HH  "YH HH HH HH  "YHH    HH   dHP   HH  "YHHHH"
                                        HH                        Yb
                                     Yb dP
                                      "B"
                          Release v1.5
                 Last Updated: 1st December 1996
                           Written by
          Klaus Breuer (sz0759@ )

                          Contents
     Chapter 1  Happy lawyer dept.
        1.1  Disclaimer
        1.2  Trademark information
        1.3  Copyright notice
     Chapter 2  Introduction
        2.1  #A word from Klaus Breuer#
           2.1.1  Printing the FAQ
           2.1.2  Flames
        2.2  Intended Audience
        2.3  #About the "UnOfficial" DUKE NUKEM 3D EDITING
             FAQ#
        2.4  Getting the "UnOfficial" DN3DE FAQ
        2.5  #Adding to the FAQ#
        2.6  The DN3D EDITING mailing list
        2.7  The DN3D EDITING ftp site
        2.8  #WWW sites#
        2.9  IRC
        2.10  #Acknowledgments#
        2.11  Accurate information
        2.12  #Help with new levels#
     Chapter 3  Preliminary information
        3.1  Intended audience for this chapter
        3.2  The basics
           3.2.1  Differences between the Build and DOOM
                  engines
           3.2.2  Useful cheats for testing levels
           3.2.3  What a map consists of
              3.2.3.1  Sectors
              3.2.3.2  Walls
              3.2.3.3  Textures
              3.2.3.4  Sprites
     Chapter 4  Planning and designing a level
        4.1  Installing BUILD
        4.2  Before starting
        4.3  Pros and cons of using real-world maps
           4.3.1  Advantages
           4.3.2  Disadvantages
        4.4  Using DOOM maps
        4.5  Designing the level
           4.5.1  Level types
              4.5.1.1  Single player
              4.5.1.2  Co-op
              4.5.1.3  DukeMatch
              4.5.1.4  My room/flat/dorm/house
           4.5.2  Choosing a level type
           4.5.3  Random tips and thoughts
              4.5.3.1  Working with Build
              4.5.3.2  Do
              4.5.3.3  Don't
              4.5.3.4  General tips
              4.5.3.5  Posting your level
           4.5.4  Typical mistakes to avoid
              4.5.4.1  Crossed lines
              4.5.4.2  Overlaying lines
              4.5.4.3  Hall Of Mirrors
              4.5.4.4  Door side tracks
              4.5.4.5  Unaligned Textures
              4.5.4.6  Missing Player Starts
        4.6  DukeMatch level design
           4.6.1  Monster placement
           4.6.2  Weapon placement
              4.6.2.1  Power weapons
              4.6.2.2  Starting-point weapons
           4.6.3  Ammo placement
              4.6.3.1  Amount and location
              4.6.3.2  Ammo Quantity Types
           4.6.4  Health placement
           4.6.5  Architectures
              4.6.5.1  Large, open areas
              4.6.5.2  Long, wide passages
              4.6.5.3  Nooks 'n crannies
              4.6.5.4  Balconies, bridges and towers
              4.6.5.5  Fortresses
              4.6.5.6  Obstacles
              4.6.5.7  Sniper spots
        4.7  Once your level is done
     Chapter 5  A walkthrough to creating a simple level
        5.1  Planning
        5.2  Getting ready
        5.3  Creating a new map
        5.4  The 2D screen
           5.4.1  Map
           5.4.2  Message window
           5.4.3  Data window
           5.4.4  Info window
        5.5  Moving about
        5.6  #Creating a room#
        5.7  3D mode
        5.8  Raising the roof
        5.9  Textures
           5.9.1  The floor
           5.9.2  #The roof#
           5.9.3  Flying about
           5.9.4  The walls
        5.10  Building the house
           5.10.1  The house sector
           5.10.2  Fixing the house sector
              5.10.2.1  The carpet floor
              5.10.2.2  Nice walls
              5.10.2.3  Finally, the roof
           5.10.3  Saving your work
           5.10.4  Building a doorway
           5.10.5  Adding a window
           5.10.6  Glass
           5.10.7  The sloped roof
        5.11  #Trying it out#
        5.12  Decorations
           5.12.1  The flower pot
           5.12.2  The picture
           5.12.3  A hanging lamp
           5.12.4  The burning barrel
        5.13  The enemy appears
        5.14  The other players
        5.15  Taking it from here
     Chapter 6  The BUILD Editor
        6.1  2D Mode
           6.1.1  The Screen
              6.1.1.1  The map
              6.1.1.2  The Message window
              6.1.1.3  The Data window
              6.1.1.4  The Info window
           6.1.2  The mouse
              6.1.2.1  Move
              6.1.2.2  Left button
              6.1.2.3  Right button
           6.1.3  The keyboard
              6.1.3.1  Esc
              6.1.3.2  Cursor keys
              6.1.3.3  NumIns and NumDel
              6.1.3.4  Spacebar
              6.1.3.5  NumEnter
              6.1.3.6  RightShift
              6.1.3.7  Control-RightShift
              6.1.3.8  RightAlt
              6.1.3.9  Ins
              6.1.3.10  Del
              6.1.3.11  RightControl-Del
              6.1.3.12  A and Z
              6.1.3.13  G
              6.1.3.14  L
              6.1.3.15  J
              6.1.3.16  Alt-S
              6.1.3.17  S
              6.1.3.18  B
              6.1.3.19  #Shift-B#
              6.1.3.20  C
              6.1.3.21  T
              6.1.3.22  H
              6.1.3.23  Alt-T
              6.1.3.24  Alt-H
              6.1.3.25  E
              6.1.3.26  < and >
              6.1.3.27  Shift-< and Shift->
              6.1.3.28  [ ]
              6.1.3.29  '-M
              6.1.3.30  '-3
              6.1.3.31  F1
              6.1.3.32  F2
              6.1.3.33  F3
              6.1.3.34  F4
              6.1.3.35  F5
              6.1.3.36  F6
              6.1.3.37  F7
              6.1.3.38  F8
              6.1.3.39  F9
              6.1.3.40  F10
              6.1.3.41  F11
              6.1.3.42  F12
              6.1.3.43  TAB
              6.1.3.44  Alt-TAB
              6.1.3.45  ScrollLock
              6.1.3.46  Ctrl-T
              6.1.3.47  Enter
        6.2  3D Mode
           6.2.1  The screen
           6.2.2  The mouse
              6.2.2.1  Move
              6.2.2.2  Left button
              6.2.2.3  Right button
           6.2.3  The keyboard
              6.2.3.1  Cursor keys
              6.2.3.2  CapsLock
              6.2.3.3  PgUp and PgDn
              6.2.3.4  V
              6.2.3.5  Alt-V
              6.2.3.6  NumCursor keys
              6.2.3.7  Shift-NumCursor keys
              6.2.3.8  /
              6.2.3.9  .
              6.2.3.10  F
              6.2.3.11  P
              6.2.3.12  Ctrl-P
              6.2.3.13  G
              6.2.3.14  E
              6.2.3.15  R
              6.2.3.16  O
              6.2.3.17  B
              6.2.3.18  #Shift-B#
              6.2.3.19  T
              6.2.3.20  M
              6.2.3.21  Shift-M
              6.2.3.22  1
              6.2.3.23  2
              6.2.3.24  H
              6.2.3.25  #TAB#
              6.2.3.26  Enter
              6.2.3.27  Ctrl-Enter
              6.2.3.28  Shift-Enter
              6.2.3.29  Ctrl-Shift-Enter
              6.2.3.30  '-ENTER
              6.2.3.31  '-R
              6.2.3.32  '-D
              6.2.3.33  '-W
              6.2.3.34  '-G
              6.2.3.35  '-Y
              6.2.3.36  '-T
              6.2.3.37  '-H
              6.2.3.38  '-S
              6.2.3.39  '-V
              6.2.3.40  '-C
              6.2.3.41  #'-Del#
              6.2.3.42  Alt+-
              6.2.3.43  CtrlAlt+-
              6.2.3.44  F1
              6.2.3.45  F2
              6.2.3.46  F3
              6.2.3.47  F4
              6.2.3.48  F5
              6.2.3.49  F6
              6.2.3.50  F7
              6.2.3.51  F8
              6.2.3.52  F9
              6.2.3.53  F10
              6.2.3.54  F11
              6.2.3.55  F12
     Chapter 7  How to...
        7.1  Extracting the original maps
        7.2  Abbreviations
        7.3  Player starting points
           7.3.1  Notes
        7.4  Glass panes
           7.4.1  Notes
        7.5  Invisible forcefield
        7.6  Doorways
           7.6.1  Notes
        7.7  Windows
           7.7.1  Setup
           7.7.2  Notes
        7.8  Air ducts
           7.8.1  Notes
        7.9  Angled surfaces
           7.9.1  Notes
        7.10  Secret places
        7.11  Multiplayer sprites
        7.12  Level-end button
           7.12.1  Notes
        7.13  Level-end sector
        7.14  Cameras
           7.14.1  Setup
           7.14.2  Notes
        7.15  Demo cameras
           7.15.1  Setup
           7.15.2  Notes
        7.16  User-controlled force fields
           7.16.1  Setup
           7.16.2  Notes
        7.17  Blastable walls (user control)
           7.17.1  Setup
           7.17.2  Notes
           7.17.3  Tips
        7.18  Blastable walls (triggered)
           7.18.1  Setup
           7.18.2  Notes
        7.19  Conveyor Belts
           7.19.1  Setup
           7.19.2  Notes
        7.20  Mirrors
           7.20.1  #Notes#
        7.21  Garbage cans
           7.21.1  Notes
        7.22  Revenge of the dancers
           7.22.1  Notes
        7.23  Buzzing phones
        7.24  Light switches
           7.24.1  Setup
           7.24.2  Notes
        7.25  Permanently rotating sector (gears)
           7.25.1  #Setup#
           7.25.2  Notes
        7.26  Doors
           7.26.1  Standard hinged
              7.26.1.1  Notes
           7.26.2  DOOM-type door, remote control
              7.26.2.1  Setup
              7.26.2.2  Notes
           7.26.3  DOOM-type door, local control
           7.26.4  Sliding sideways
              7.26.4.1  Notes
           7.26.5  Star Trek door
              7.26.5.1  Setup
              7.26.5.2  Notes
           7.26.6  Four-way door
              7.26.6.1  Notes
           7.26.7  Clamshell doors
           7.26.8  Teeth doors
           7.26.9  Auto-closing doors
           7.26.10  Switch-controlled doors
              7.26.10.1  Notes
        7.27  Shrinking sector (remote control)
           7.27.1  Setup
           7.27.2  Notes
        7.28  Spawning monsters
           7.28.1  Setup
           7.28.2  Notes
        7.29  Difficulty settings
        7.30  Automatic cannon
           7.30.1  Setup
           7.30.2  Notes
        7.31  Lethal sectors
        7.32  Earthquakes
           7.32.1  Setup
           7.32.2  Notes
        7.33  Elevators
           7.33.1  Setup
           7.33.2  Notes
        7.34  Remote-controlled Elevators
           7.34.1  Setup
        7.35  #Teleporters#
           7.35.1  #Setup#
           7.35.2  #Notes#
        7.36  Swimming pools
           7.36.1  Setup
           7.36.2  Notes
           7.36.3  Tips
        7.37  The Grapplers
           7.37.1  Setup
           7.37.2  Tips
        7.38  Overlapping sectors
           7.38.1  Notes
        7.39  Hiding switches
        7.40  Bridges and Shelves
           7.40.1  Notes
        7.41  Minibosses
           7.41.1  Notes
        7.42  Crashing car/helicopter
           7.42.1  Notes
        7.43  Pulsing lights
           7.43.1  Setup
           7.43.2  #Notes#
        7.44  Vehicles
           7.44.1  Setup
           7.44.2  #Notes#
        7.45  Attacking Vehicles
           7.45.1  #Notes#
        7.46  Two-way Vehicles
           7.46.1  #Setup#
           7.46.2  #Notes#
        7.47  #Echoing rooms#
        7.48  #Rising floors#
           7.48.1  #Setup#
        7.49  Water waves
           7.49.1  Setup
           7.49.2  Notes
        7.50  Engine piston
           7.50.1  Setup
           7.50.2  Notes
        7.51  Edge walls
           7.51.1  Setup
        7.52  Code switches
           7.52.1  Setup
           7.52.2  Notes
        7.53  The pool table
           7.53.1  Setup
           7.53.2  Notes
        7.54  Once-only sound effects
              7.54.0.1  Setup
        7.55  #Ambience sounds#
        7.56  #Tips and tricks: New and interesting effects#
           7.56.1  Ghosts
           7.56.2  Unfreezable monsters
           7.56.3  Falling to your death?
           7.56.4  Malfunctioning doors
           7.56.5  Mines
           7.56.6  The shrinking player
           7.56.7  #Timing devices#
           7.56.8  Even more textures
           7.56.9  #One-way mirrors#
           7.56.10  #Rain#
           7.56.11  #Invisible bridges#
           7.56.12  #One-way elevators#
           7.56.13  #Moving cameras#
           7.56.14  #Lethal cameras#
           7.56.15  #Minigolf#
           7.56.16  #Message screens#
           7.56.17  #Scrolling messages#
           7.56.18  #Oversized levels#
     Chapter 8  Programming the .CON files
        8.1  #The language of the .CON files#
        8.2  #Actors#
        8.3  Notes
        8.4  Cute tricks
           8.4.1  Picking up weapons
           8.4.2  Explosive ammunition
           8.4.3  Splat!
           8.4.4  #Footsteps#
     Chapter 9  Utilities and add-ons
        9.1  Editing utilities
           9.1.1  BUILD
           9.1.2  EditArt
              9.1.2.1  Changing graphics
              9.1.2.2  Adding new graphics
              9.1.2.3  Using DOOM I graphics
              9.1.2.4  General notes
           9.1.3  Wad2Map utilities
              9.1.3.1  WAD2ART
              9.1.3.2  WAD2MAP
        9.2  Future add-ons
           9.2.1  Add-on software wish list
           9.2.2  Add-on software in the making
           9.2.3  #Finished add-on software#
              9.2.3.1  #The Level Manager#
     Chapter 10  Troubleshooting
        10.1  Common questions
           10.1.1  My 3D mode messes up
           10.1.2  How do I copy sectors?
           10.1.3  #What's a tag?#
           10.1.4  #My switches only work once!#
           10.1.5  #I'm suddenly getting HOMs all over my map!#
           10.1.6  #My doors look weird when they open#
           10.1.7  #The sprites are much too big!#
           10.1.8  I'm using Windoze/Win95, and...
           10.1.9  I can't select sprites
           10.1.10  How do I make a flat sprite double-sided?
           10.1.11  #I used an animated windows, and the
                    wall messes up#
           10.1.12  How do I view the original maps?
           10.1.13  How do I use new maps?
           10.1.14  No monsters in new maps?
           10.1.15  How do I use the new .VOC and .MIDs?
           10.1.16  How do I show the wall data?
           10.1.17  I can't save the changes in BSetup
           10.1.18  The game ends with 'MAP E1L9.MAP not found!'
           10.1.19  Can the subway speeds be changed?
           10.1.20  How do I place active tripmines?
           10.1.21  How can I make a mirror shootable?
           10.1.22  How do I shade a whole room at once?
           10.1.23  The parallaxed sky looks messed up!
           10.1.24  I've parallaxed the sky and now Duke dies!
           10.1.25  How do I set the par time?
           10.1.26  #What format are the .ANM files in?#
        10.2  Bugs in the game
           10.2.1  #Low ceilings#
              10.2.1.1  #Bug#
              10.2.1.2  #Workaround#
           10.2.2  Holodukes
              10.2.2.1  Bug
              10.2.2.2  Workaround
           10.2.3  The shrinker
              10.2.3.1  Bug
              10.2.3.2  Workaround
           10.2.4  Endless ammo
              10.2.4.1  Bug
              10.2.4.2  Workaround
           10.2.5  Remote switch triggering
              10.2.5.1  Bug
              10.2.5.2  Workaround
           10.2.6  Underwater toilets
              10.2.6.1  Bug
              10.2.6.2  Workaround
           10.2.7  Explosions
              10.2.7.1  Bug
              10.2.7.2  Workaround
           10.2.8  Crash on shattering objects
              10.2.8.1  Bug
              10.2.8.2  Workaround
           10.2.9  Breaking unbreakable glass
              10.2.9.1  Bug
              10.2.9.2  Workaround
           10.2.10  Trip mines
              10.2.10.1  Bug
              10.2.10.2  Workaround
           10.2.11  Phantom bullet-holes
              10.2.11.1  Bug
              10.2.11.2  Workaround
        10.3  Bugs in BUILD
           10.3.1  Using a Busmouse
              10.3.1.1  Bug
              10.3.1.2  Workaround
           10.3.2  #Very long lines#
              10.3.2.1  Bug
              10.3.2.2  Workaround
           10.3.3  Splitting a sector
              10.3.3.1  Bug
              10.3.3.2  Workaround
           10.3.4  Selecting sprites
              10.3.4.1  Bug
              10.3.4.2  Workaround
           10.3.5  Autoaligning textures
              10.3.5.1  Bug
              10.3.5.2  Workaround
           10.3.6  Displaying memory info
              10.3.6.1  Bug
              10.3.6.2  Workaround
           10.3.7  Function keys in 3D mode
              10.3.7.1  Bug
              10.3.7.2  Workaround
           10.3.8  Deleting sectors
              10.3.8.1  Bug
              10.3.8.2  #Workaround#
           10.3.9  Copying sectors
              10.3.9.1  Bug
              10.3.9.2  Workaround
           10.3.10  FPU reliance
              10.3.10.1  Bug
              10.3.10.2  Workaround
        10.4  BUILD wishlist
     Chapter 11  Reference lists
        11.1  #List of original levels#
           11.1.1  L.A. Meltdown
           11.1.2  Lunar Apocalypse
           11.1.3  Shrapnel City
        11.2  List of tiles
           11.2.1  Control tiles
           11.2.2  Weapon sprites
           11.2.3  Ammo sprites
           11.2.4  Item sprites
           11.2.5  Special sprites
           11.2.6  Parallax (sky) textures
           11.2.7  #Lights#
           11.2.8  Switches
           11.2.9  Doors
              11.2.9.1  Technical doors
              11.2.9.2  Normal
           11.2.10  Floors
           11.2.11  Walls
              11.2.11.1  Machines
              11.2.11.2  Space ship hull
              11.2.11.3  Organics
              11.2.11.4  Air ducts
              11.2.11.5  Modern
              11.2.11.6  Metal
              11.2.11.7  Concrete
              11.2.11.8  Stone
              11.2.11.9  Rock
              11.2.11.10  Decoration
           11.2.12  Grids
           11.2.13  Technical-looking items
           11.2.14  Monitors
           11.2.15  #Often-used special textures#
           11.2.16  Diverse
           11.2.17  Unclassified (please assist!)
        11.3  List of Palettes
        11.4  List of sounds
           11.4.1  Format of this list
           11.4.2  The sounds themselves
        11.5  Dimensions
           11.5.1  #Time#
           11.5.2  Units
           11.5.3  The map
              11.5.3.1  Walking about
              11.5.3.2  Weapons
     Chapter 12  Miscellaneous
        12.1  MAP design contest
        12.2  PC Gaming's offer
        12.3  Conclusion
        12.4  Revision history
                            Chapter 1
                       Happy lawyer dept.
1.1  Disclaimer
This FAQ is to aid in informing the public about creating
additional levels for the Game Duke Nukem 3D, by 3DRealms. In no
way should this promote your killing yourself, killing others, or
killing in any other fashion. Also, it should not promote the
building of real-world death-traps :)
Additionally, Klaus Breuer claims NO responsibility regarding ANY
illegal activity concerning this FAQ, or indirectly related to
this FAQ. The information contained in this FAQ only reflects
3DRealms indirectly, and questioning 3DRealms regarding any
information in this FAQ is not recommended.
1.2  Trademark information
All specific names included herein are trademarks and are so
acknowledged:
3DRealms, Duke Nukem, id, DOOM, IBM, Microsoft, Windows and MS-
DOS.  Any trademarks not mentioned here are still hypothetically
acknowledged.
1.3  Copyright notice
This article is Copyright 1996 by Klaus Breuer. All rights
reserved.
You are granted the following rights:
   1.  To make copies of this work in original form, so long as
        1.1.  the copies are exact and complete;
        1.2.  the copies include the copyright notice and these
              paragraphs in their entirety;
        1.3.  the copies give obvious credit to the author, Klaus
              Breuer;
        1.4.  the copies are in electronic form.
   2.  To distribute this work, or copies made under the
       provisions above, so long as
        2.1.  this is the original work and not a derivative
              form;
        2.2.  you do not charge a fee for copying or for
              distribution;
        2.3.  you ensure that the distributed form includes the
              copyright notice, this paragraph, the disclaimer of
              warranty in their entirety and credit to the
              author;
        2.4.  the distributed form is not in an electronic
              magazine or within computer software (prior
              explicit permission may be obtained from Klaus
              Breuer);
        2.5.  the distributed form is the NEWEST version of the
              article to the best of the knowledge of the
              distributor;
        2.6.  the distributed form is electronic.
You may not distribute this work by any non-electronic media,
including but not limited to books, newsletters, magazines,
manuals, catalogs, and speech.  You may not distribute this work
in electronic magazines or within computer software without prior
written explicit permission.
These rights are temporary and revocable upon written, oral, or
other notice by Klaus Breuer. This copyright notice shall be
governed by the laws of the Federal Republic of Germany.
If you would like additional rights beyond those granted above,
write to the author at "sz0759@rzmail.uni-erlangen.de" on the
Internet.




                            Chapter 2
                          Introduction
2.1  #A word from Klaus Breuer#
Well, here's the v1.5 version of the FAQ!
I've had lots of feedback and got pointed into a lot of
interesting directions - thanks to everyone who helped out so
far!
2.1.1  Printing the FAQ
A word of caution for those of you who'ld like to print this FAQ:
the table of contents alone takes up 9 pages on my printer.
You're probably better off reading the whole thing with an ASCII
editor (easier to search for keywords, too).
Personally, I use the most excellent LIST program from Vernon
Buerg (no, I'm not affiliated, just a happy user).
If you have access to a Unix box (everybody should :), here's a
command you can use to print the whole thing in PostScript,
cramming 300 lines of text per page:
  alias a2lj5c2  "lwf -pA4 -i1 -s5  -c2 -fC  \!* | lpr -Plj4 -h"
                      ^^^^     ^^^  ^^^  ^^^-Courier Font
                      DinA4    5pt  2 column
This assumes a certain system setup, but it should point non-gurus
(like me) in the right direction.
2.1.2  Flames
It's funny, you know. Everybody who does anything on The Net is
going to be flamed sometime, no matter what he does.
So, let's get some things straight:
    *  This FAQ will be posted in its totality to
       alt.games.duke3d and the BUILD editing list, because
       that's where it belongs.
    *  If you can't be bothered to read the FAQ, don't flame me
       for not including somethig in it. Especially if it's in
       there already.
    *  Except for this general announcement, I do not respond the
       flames, mail bombings, or whatever.
    *  Since I'm not using Windoze or somesuch, I can delete huge
       amounts of flames with a single keypress. So don't bother.
2.2  Intended Audience
Since 3DRealms was kind enough to bundle their editor with the
game itself, lots of people have dreamed of creating their own
levels - their own worlds.
However, the BUILD editor was written by hackers for hackers;
documentation is scant.
Thus this paper should help everybody who intends to design his
own levels. However, you should be willing read all the info in
here and experiment as well. If you have a problem, study this
text, look at the original maps and experiment. Don't ask the Net
about it right away.
Creating a map is real easy. Creating a *good* map is very hard,
requiring not only perseverance and patience but time and -yes-
even a bit of brains ;)
2.3  #About the "UnOfficial" DUKE NUKEM 3D EDITING FAQ#
Welcome to the release v1.5 of the "UnOfficial" DUKE NUKEM 3D
EDITING FAQ.
What does that mean?  Version 1.5 is the eighth (I think) release
of the FAQ, "UnOfficial" means absolutely nothing, DUKE NUKEM 3D
is the name of the game, Editing is what the FAQ is all about and
FAQs are [F]requently [A]sked [Q]uestions (with answers, of
course :).
Here's how revision classification works.  If a new version of
the FAQ only has a small amount of information changed or added,
the version number is increased by 0.1. This is called a "minor
revision."
If a new version of the FAQ has a substantial amount of new
information changed or added, the version number is increased by
0.5. This is called a "standard revision."
If a new version of the FAQ has a huge amount of added or changed
information, major parts of the FAQ are rearranged, or major
parts of the FAQ are rewritten, then the version number is
increased by 1.0. This is called a "major revision."
All chapters containing changes from the last versions have their
chapter headings enclosed in ##'s. In earlier versions of the FAQ
I used a rather more complex system showing how long ago which
chapter was last changed but it became too much work - this thing
has simply grown out of all proportion.
Also, ##'s are at times found in the text - these denote
questions I urgently need help on, and any feedback is especially
appreciated.
2.4  Getting the "UnOfficial" DN3DE FAQ
The "UnOfficial" DN3DE FAQ is posted every month (or earlier if a
new version is released) on the following Usenet group:
alt.games.duke3d
The "Subject:" line of the post will be "'UnOfficial' DN3D
EDITING FAQ v??.??" where "??.??" is the version number of the
FAQ.
The FAQ is also posted to the editing mailing list as soon as a
new version comes out.
An HTML version is available at
http://ww.aber.ac.uk/~ngh94/duke.html
New releases of the "UnOfficial" DN3D EDITING FAQ will be
uploaded to internet ftp sites as soon as I find suitable sites.
The file name of the upload will be "dnefaq??.faq" where "??" is
the version number of the FAQ.
ATTENTION: ALL BBSes, Compuserve, America Online, GEnie, and all
other information services.  PLEASE conform to the naming
standard of the "UnOfficial" DN3D EDITING FAQ when placing this
file on your system.
2.5  #Adding to the FAQ#
If you want something added to the FAQ, please send E-mail to
"sz0759@rzmail.uni-erlangen.de" (no quotes), explaining what your
addition is.
It will be reviewed, and if accepted, added to the next FAQ
version. In the E-mail, please supply your name and E-mail
address.
Please note that all submissions to the FAQ become the property
of the author (Klaus Breuer) and that they may or may not be
acknowleged.
By submitting to the FAQ, you grant permission for use of your
submission in any future publications of the FAQ in any media.
The author reserves the right to omit information from a
submission or delete the submission entirely.
Note that I get a _lot_ of email very day, so don't be surprised
if I don't find time to answer your submission :)
If you send me binaries, please use the standard UUENCODE program
to do so. I can't read the Base64 format or whatever it is that
Windoze/Netscape uses.
2.6  The DN3D EDITING mailing list
Ginger (lattav@vnet.net) has set up a very active mailing list.
To subscribe, send email to: majordomo@oozoo.vnet.net
Put in the body of the message: subscribe duke3d-edit
A digested version is also available, send email to the same
address, but the body of the message should be: subscribe
duke3d-edit-digest
To unsubscribe, send the line
unsubscribe
to duke3d-edit-digest-request@oozoo.vnet.net
The mailing list digests are archived at
oozoo.vnet.net/pub/duke3d
2.7  The DN3D EDITING ftp site
We now have an ftp site where everything for editing duke maps
will be found. The address is oozoo.vnet.net/pub/duke3d-edit.
2.8  #WWW sites#
There are LOTS of WWW sites around. Here are just some pointers
(in alphabetical order) which should get you started:
http://fluffy.neb.net/Duke
http://www.3drealms.com
http://www.aber.ac.uk/~ngh94/duke.html
http://www.cris.com/~Demogorg/main.html
http://duke3d.crystalball.com/stereo/tfiles.html
http://www.ea.ucla.edu/~kd/Duke3D/index.html
http://www.fluffy.neb.net/Duke
http://www.frii.com/~afs/allabout.cgi/dn3d
http://www.koan.com/~ryman
http://www.newreach.net/~avenger/
http://www.salamander.net/~avenger/msques.html
http://www.servtech.com/public/duke3d/
http://www.kinglink.com/duke/duke3dlev.html
http://www.wi.leidenuniv.nl/~cwong/myindex.html
And these sites have particularily many MAPs:
http://duke3d.crystalball.com/stereo/maps1.html
http://users.aol.com/brnyrstomp/levelsf.html
http://www2.awinc.com/users/dgronlun/duke3d/duke3dlevels.html
http://www.whiterock.com/kinglink/duke3dlev.html
http://www.i2.i-2000.com/~richardg/levels.html
Finally, there's a german site too:
http://members.aol.com/cwaitschie/duke3d/duke3d.htm
2.9  IRC
The IRC channel of interest is #duke3dedit.
Don't ask the 'The 3D mode is messing up my screen' question
there. Please.
2.10  #Acknowledgments#
I'd like to thank 3DRealms for bringing out such an astonishing
game! After two years, we finally seem to have a DOOM killer.
Also, it's real nice of you guys to add the BUILD program into
the package! We've never had an editor out so fast :)
Thanks to Allen H Blum III, Richard "Levelord" Gray and Kenneth
Silverman for writing the Build docs. We all know you were in a
big hurry and the docs nearly didn't make it to the CD, so we
especially appreciate your work!
ALPHABETICAL ORDER:
Ahmed Hammad   (aka Spasmo) (cosc19z5@bayou.uh.edu)
               RightShift sprite selection/nonclip move trick and
               helped with the sliding door. The metallic tile
               idea is also from him.
Allen H. Blum III
               (Stryker@metronet.com)
               Thanks for showing up in the mailing list and
               answering questions! Especially the 'shade a whole
               room at once' idea is way cool. (Treat him to
               dinner, Buy Major Stryker ;)
BKlehr         (bklehr@aol.com)
               Caught some FAQ bugs and found out how to make
               shootable mirrors (bulletholes!).
Brett Gmoser   (gmoser@gramercy.ios.com)
               Wrote a long tutorial covering all kinds of
               things.
Brian Gentry   (gentryb@wasc.egginc.com)
               Found out about switch sounds.
Brian Kidby    (thekid@ornews.intel.com)
               Wrote the 'DeathMatch Level Design Guidelines
               v1.0' for DOOM, which I've used as a basis for my
               'DukeMatch level design' section.
Bullethead     (???)
               Wrote a couple of interesting lab notes, shedding
               light on some more obscure parts of BUILD.
Cho Yan Wong   (aka Tempest) (pwong@pobox.leidenuniv.nl)
               Wrote several very good tutorials.
Chris Longhurst
               (chrisl@division.co.uk)
               Found out about pulsing lights and clamshell
               doors.
Chris Voth     (chrisv@uniserve.com)
               Found out about the cstat.
Christopher Clark
               (chris@skylite.datanet.ab.ca)
               Plays minigolf with Duke :)
Dan Benge      (DanBenge@ix.netcom.com)
               Ideas on level design and the Alice In Wonderland
               effect.
David Moisan   (dmoisan@shore.net)
               Many thoughts on level design.
Ginger Latta   (lattav@vnet.net)
               Has agreed to set up a mailing list, even
               including a digested form. She's also setting up
               an ftp site for us!
Jeff Oliver    (jroliver@cs.sci.csupomona.edu)
               Teleporter info.
Jesse Lambert  (slcsj@cc.usu.edu)
               Did the nice ASCII logo.
Jim            (jek19@ios.orci.com)
               Help on rotating doors.
Joe Giddings   (goldcard@intrstar.net)
               Worked out lots of info about the different
               palettes.
John Allen Christian
               (hugejohn@ix.netcom.com)
               Info on Build keypresses (tilting floors).
Jonas          (JoXonoX@aol.com)
               Sprite flag meanings.
Kris Lloyd     (klloyd@uniserve.com)
               Info on user-controlled force fields and Duke's
               crashinf car/helicopter as well as (finally!)
               respawning minibosses.
Mark Lee       (mark.lee@gecm.com)
               Had the idea about making bridge sprites single-
               sided.
Mark Skier     (MSkierMD@aol.com)
               Helped out with pulsating lights.
Martin Knab    (knab@fg.arco.met.fu-berlin.de)
               Found out about oversized maps.
Matt Watkins   (mwatkins@calvin.gonzaga.edu)
               LOTS of info on modifying actos in the .CON files.
Michiel Magnee (migmag@mail.telepac.pt)
               List of MID files in the levels. (Hey, Michiel,
               use [F5]|[Shift]-[F5] to change the music being
               played).
Mike Forst     (mcforst@uniserve.com)
               Found out about the BIGFORCE tile.
Moritz Weigt   (wtiger17@aol.com)
               Found out about sprite difficulty settings and
               squashed a bug in echoing rooms.
Nigel Hughes   (ngh94@aber.ac.uk)
               Converting the FAQ to HTML format.
ns_Gotare      (gordion@mbox200.swipnet.se)
               One-way teleporters.
Patola         (patola@dcc.unicamp.br)
               Brilliant BUILD Tricks tutorial, look at
               http://www.dcc.unicamp.br/~patola/JOGOS.HTML
               (Hey, Patola, Daedalus is an interesting nickname,
               but where did you get it from?)
Rober Coward   (rcoward@madge.com)
               Found some FAQ errors and Duke bugs.
RoboJim        (Robojim@aol.com)
               Info on grapplers, garbage/stripper respawns,
               telephones and train setups.
Samiel         (samiel@fastlane.net)
               Wrote the tile renumbering utilities.
Scatt Man      (scattman@bssc.edu.au)
               Ambience, once-only sounds and demo camera info.
               Also wrote the sound list (now I don't have to do
               it myself, yaay!).
Sir Hoppy      (glenn@interaccess.com)
               Pointed out some errors in the air vents section.
Steffen Itterheim
               (100606.2141@compuserve.com)
               Apogee Staff, is also answering questions on the
               mailing list - thanks!
Steve C. Brown (sbrown@praline.no.NeoSoft.com)
               Help with F8 key.
Thomas Mueller (tsmuelle@cip.informatik.uni-erlangen.de)
               He found out lots of basic workings like
               Teleporters, Swimming Pools, etc and put me on the
               right track in regard to sector effectors.
Toni Ricardi   (darkstar@gis.net)
               Found several all-new bugs in Duke :)
Werner Spahl   (ui22273@sun1.lrz-muenchen.de)
               Duke footsteps patch.
THANK YOU! If, for some reason, I did miss you, PLEASE send me
e-mail!
Finally, I'd like to thank everyone who reads this FAQ, you are
what the FAQ is for!
2.11  Accurate information
An attempt has been made to make the information in this FAQ as
accurate as possible. Unfortunately, due to the fact that the
game was recently released, and updates, add-ons, and new
information are being worked on each second, it's hard to keep
up.
2.12  #Help with new levels#
I used to offer direct help on all kinds of editing problems, but
unfortunately I can't do this anymore due to time constraints
(hey, I'm saving for a ship, I need the money :)




                            Chapter 3
                     Preliminary information
This chapter explains some of the background behind creating
add-ons for Duke Nukem 3D.
3.1  Intended audience for this chapter
I guess all of you have heard of the game DOOM by id Software :)
Well, many of you have created add-on maps for DOOM. You know how
a door works, what a sector is, what to look out for while
creating a level.
While Duke3Ds BUILD engine is much more powerful than id's (see
below for a list of differences), it is similar enough for all
the experts to skip this chapter.
What? You've never created a DOOM map? Never heard of DEU? Don't
know that a DOOM-style door works by raising it's ceiling off the
floor?
Ok, this chapter here's for you.
First off, let me explain that I've created quite a few DOOM
maps. Thus if I take some things for granted you don't know
about, please write me and ask! That way I'll be able to work it
into this chapter, making it easier to understand.
3.2  The basics
Let's start by taking a look at the basics behind map building.
Do yourself a favour and don't skip this section!
I know many of you have met computers through Windoze or some
other GUI toy and don't know much about the underlying
intricacies of your system, but please - the more you know about
how Duke3D works, the better your maps will be.
Besides, it's fun to learn things :)
3.2.1  Differences between the Build and DOOM engines
Those of you who don't know DOOM (gasp!), feel free to skip this
section.
The Build engine is the system used to create Duke Nukem 3D.
Here's a list of the improvements over DOOM:
    *  Looking up and down
       Finally, you can accurately shoot an RPG through an
       upper-story window without needing a target in the window.
    *  Rooms above rooms (even if you can't display them)
       Build real spiral staircases and crossing corridors.
    *  Mirrors
       See your enemies around corners.
    *  Multi-colored lights
       Great ambience effects (DOOM only has white light).
    *  Moving/rotating sectors
       This is in my opinion (no, it's not humble) the best
       improvement. It allows you to build subways, real doors,
       moving stairways, squeeze through rotating gears, survive
       (?) earthquakes, drive around in vehicles...the
       possibilities are simply endless.
    *  Transparent sprites
       Build ghosts and proper windows.
    *  Flying via jetpack
       Fly about, attack your opponents from above. Very useful
       as a long drop can now kill you.
    *  Underwater diving
       The obvious extension to the flying capability. Explore an
       underwater world, fight sharks :)
    *  Sloping floors and ceilings
       This adds no end of realism! Finally, we can have sloping
       corridors, pyramid-shaped buildings, real domes...
    *  Rotated sprites
       Doesn't seem like much, but a rotated sprite marked as
       'blocking movement' can be used as a floor - and thus we
       can fake bridges!
    *  Blastable walls
       A very nice touch - it allows you to blow (predefined)
       holes in walls.
    *  Interactive Environment
       Bullet holes appear in walls, bottles burst into
       splinters, bloody footsteps lead away from corpses, window
       panel burst apart...fun.
    *  SVGA support
       If your system can take it. Looks good, but in my eyes not
       so important.
    *  Highly customizable
       Very nice, this. You can write your own opponent-AI, very
       easily add new sounds and graphics, and change the weapons
       simply by editing an ASCII file.
3.2.2  Useful cheats for testing levels
Read the Duke Nukem FAQ for a list of all cheats. Here are just
the codes I find myself using while testing a level:
DNRATE         Display the fps meter in the top left.
DNCOORDS       Shows your cordinates.
DNSHOWMAP      Show the full map.
DNDEBUG        Shows some interesting info in the top left.
               ## Anybody know what it means? Could be real
               useful.
DNCLIP         Toggle clipping. This will kill you if you walk
               into empty space, so use it only to quickly walk
               through doors and the like.
DNKROZ         Toggle God mode.
DNUNLOCK       Unlock all doors on the level.
DNWEAPONS      Give all weapons but no items or keys.
DNITEMS        Give all items and keys.
DNSTUFF        Gives everything.
3.2.3  What a map consists of
Maps are made up of sectors (rooms), walls and sprites.
3.2.3.1  Sectors
The map itself is basically just a collection of sectors.
A sector is a room consisting of a floor, a ceiling and walls.
Imaging a square column, looking like this:
              __________
             |\          \
             |  \          \
             |    \__________\
             \    |          |          Top block: Roof
             . \  |          |
             .   \|__________|
             .    .     .    .
             .    .     .    .
              ___________    .         Player area
             |\   .      \   .
             |  \ .        \ .
             |    \__________\
             \    |          |
               \  |          |         Bottom block: Floor
                 \|__________|
The lower block is the floor, the upper block is the roof, and
the player moves about in the missing bit in the middle.
The edges are walls, although it's possible to make a wall
intangible to the player, allowing him to cross it into another
sector.
Sectors can share borders with other sectors, and can include
other sectors as well.
Thus a room with a crate standing in the middle would consist of
two sectors: The room itself, with a square sector (the crate)
inside it.
The crate sector would have the same ceiling height as the room,
but with a slightly raised floor (forming the crate): the player
can hop onto the crate, but he can't walk below it.
The walls of the sector making up the crate would be intangible
(invisible and not blocking player movement), otherwise it would
look like a column instead.
This also explains why we can't have real bridges: if we raise
the floor of the bridge sector high enough, the bottom block will
elongate upwards until we have a wall instead.
Of course, seen from above sectors can have any shape: square,
rectangular, round or kidney-shaped.
3.2.3.2  Walls
Walls come in two flavours: one-sided and two-sided.
Imagine carving a dungeon out of a mountain. So far you have dug
two rooms, connected by a tunnel. This would translate into three
sectors; two big ones connected by a smaller one:
         _________________________
       /                          |      ________________
     /                            .______.               |  Key:
    |     * <- The player         .      .               |    |
1-sided wall
     \                            .------.               |    .
2-sided wall
       \                          |      |_______________|
         \________________________|    (seen from above)
Obviously, the outer walls have only one side, since they consist
of solid rock. But the borders between the two big sectors and
the small one are two-sided walls - you can walk on both sides of
them.
3.2.3.3  Textures
Textures are what a wall, a floor or the ceiling actually looks
like.
They make the difference between a wall looking like a brick wall
or a steel slab. You can also texture a floor or the ceiling.
Duke has quite a lot of textures for us, ranging from plush red
wall-to-wall carpeting to green alien slime. Some textures are
even animated, meaning they look as if they were moving - water
is a nice example of this.
Textures always make me feel a bit like a magician - with a wave
of my wand (ok: mouse) I can change a wall from flimsy straw to
solid steel and back.
3.2.3.4  Sprites
Sprites are all the objects in Duke3D: the flower pot in the
corner, the switch on the wall, the alien lurking behind you -
even the player is a sprite.
A sprite is always flat and two-dimensional, like a piece of
paper. Even a 3D-looking alien is just a sprite: Duke3D simply
shows you different sprites according to from where you're
looking at the alien.
Sprites exist in three forms:
Standing up    This sprite always faces you, looking nice and
               solid. A flower pot or a bottle is a typical
               example.
Flat           This sprite actually behaves like a painted piece
               of paper. They look weird standing in the middle
               of a room, so they are usually pasted on the walls
               (like switches or posters).
Lying down     These sprites are also flat, but they're lying on
               the ground (or hanging on the roof) instead. An
               example are the magazines scattered on the ground
               in the Red Light District (E1L2).
Sprites can block movement and can be placed at any height. Thus
it is possible (using sprites lying down) to create real 3D
functions like bridges out of sprites.




                            Chapter 4
                 Planning and designing a level
This chapter looks at designing a level with BUILD.EXE, the
editor supplied on the CD (in \GOODIES\BUILD).
4.1  Installing BUILD
An awful lot of people are having an awful lot of trouble getting
BUILD to run. So here's the beef:
    *  Install Duke3D to your hard drive.
    *  Copy everything from \GOODIES\BUILD into the Duke3D
       directory (NOT into a subdirectory thereof!). As some
       people have trouble understanding what I mean (Heaven
       protect us if they decide to post their first levels ;),
       here are the DOS commands to use (assuming your CD-ROM is
       drive E):
    *  CD C:\GAMES\DUKE3D
       COPY E:\GODIES\BUILD\*.*
    *  Finally, remove all read-only attributes: ATTRIB -R *.*
4.2  Before starting
I know you're eager to start building the level (why else are you
reading this FAQ?), but there are several things you should do
before firing up the editor and designing away:
Play the game  Play the whole Duke Nukem 3D game from start to
               finish. All three episodes. This will give you
               lots of ideas on what is possible and what you'd
               like to do.
               Look critically at how things happen: doors
               opening, aliens suddenly appearing, lights
               changing, gears rotating...
View the maps  Use the editor to have a close look at the
               existing maps. How do these doors open? What kinds
               of tricks were used to work around the limitations
               of the Build engine? How do people actually do a
               house - note how all walls are actually build out
               of one-sided walls. Things like that.
Have a theme   Please. Don't build yet another red light district
               with a sleazy bar and some dancers. We've got one
               already!
               Try to think of something original and take some
               time to really think about what you're trying to
               do: the New York traffic? A nuclear power station?
               An underwater base? A barren planetoid surface?
               Also try to think what would fit into the theme
               and what wouldn't - make a list.
               A .TXT file with a short story setting the mood
               and explaining your mission is also nice.
Draw a map     Take some graph paper and draw the whole map
               first. Believe me, your level is going to be lots
               better this way. You'll be able to take your time
               and think about everything you want to include.
               Another approach is to just make a rough sketch of
               the map with a good theme and create everything
               'on the fly'. That's the way it usually ends up
               anyway :), but the map-drawing approach does
               produce nicer-looking maps.
Less is more   Zen, yes. Also known as the KISS principle: Keep
               It Simple, Stupid.
               Remember that you have lots of tools and tricks to
               create a map - don't use them all! Don't include,
               for example, dancers just because you can. Don't
               use the trip mines in a non-futuristic level.
               Leave out the security cameras in a medieval
               castle (time travel theme?).
               Rather build several levels, each based on one or
               two ideas.
Keep it small  Beginners usually make the mistake of designing
               cyclopian buildings. Massive forecourts, towering
               walls, huge gloomy halls - all empty.
               Rather keep the rooms small and full of detail -
               they will be more interesting and the game will
               run faster.
Time           You'll need loads of it. Much more than you think.
               Especially the shading and testing will take days.
               Weeks.
               Have a look at the original levels and see just
               how much time and care has been spent on them.
               Don't post a level which is substantially below
               the niveau of 3DRealms levels - nobody will like
               it.
Data           It is said that you should write what you know,
               and the same applies to level design. If you've
               never really looked hard at a subway station,
               don't try to create one.
Read this FAQ  Don't jump into drawing your level half-way
               through reading this FAQ - wait until you have a
               good idea just what is possible with the Build
               engine.
Your first level
               Face it. Your first level is going to be something
               you'll be ashamed of after designing your third
               level. Don't post it.
4.3  Pros and cons of using real-world maps
There are lots of levels based on maps of the real world. Maps of
your campus (hello, first years!), maps of your dorm, your
apartment, your house.
The question is, should you use them?
4.3.1  Advantages
Real-world maps are drawn by professionals (ok, ok, I've also
seen houses designed by blind idiots) who know what they are
doing.
They don't forget to make the outer walls thicker than the inner
ones. They don't forget the kitchen or the storage space. The
halls are of the right width...in short, the whole map is
realistic and believable.
Also, it's real quick creating a level from such a map since you
don't have to think and design as much.
Finally, it's a great way to learn how the editor works as it
forces you to implement some things you might otherwise be too
lazy to work out.
4.3.2  Disadvantages
Such maps are also boring.
Believe it or not, but most architects didn't design their block
of flats for gun-toting maniacs chasing each other through the
corridors.
There are too few places to hide and the map typically has a
simple, utilitarian look.
Scale is a hassle as well. Ever looked real closely at a subway
station? It's actually very big and empty. And very boring as a
Duke level.
So you'll have to scale everything down by quite a lot anyway.
Remember that it's great fun for yourself to run through a
virtual representation of your house - but others who don't know
you might find such a map terribly boring.
And the biggest disadvantage of all: you don't think enough about
your level. The more time you spend mentally planning your world,
the better it will become.
4.4  Using DOOM maps
With the Wad2Map program (see further below), it is now possible
to convert DOOM maps to Duke3D maps.
Do everybody a favour: don't.
And here's why:
    *  We've _seen_ the DOOM maps already.
    *  They aren't designed to take advantage of the Build
       engine.
    *  They aren't designed to work with the new monsters.
    *  It's a heck of a lot of work checking a level after
       conversion (for example, switches won't work), and it's
       easy to mess things up and even forget textures (HOM, here
       we come!).
4.5  Designing the level
When designing a level, keep in mind that there is no formula
telling you how to build a fun level. Unfortunately, I can't just
tell you "Do this and that, and everybody will love your level".
But I can give you some tips and pointers.
4.5.1  Level types
There are basically four types of levels:
4.5.1.1  Single player
Single player maps are typically large and intricate, full of
detail and clever monster ambush points. They are aimed at people
who play them on their own.
For example, nearly everybody here in Germany plays in single-
player mode, as the telephone rates are simply shocking.
4.5.1.2  Co-op
Few levels are actually designed for co-op playing only. If they
are, they are larger versions of single-player levels, with a lot
more monsters and perhaps the odd trap which can only be passed
via teamwork.
4.5.1.3  DukeMatch
Since the original levels in Duke3D are very very good as both
single player and (usually, anyway) co-op, most people create
DukeMatch-only maps.
These maps are small and fast, concentrating on action instead of
the surroundings.
This doesn't mean that detail should be overlooked, though.
4.5.1.4  My room/flat/dorm/house
These levels attempt to copy a real-world place with as much
accuracy as possible. They are typically rather boring and only
of interest to the people who know the place well.
The only use I personally see for such levels is to learn how to
use the editor.
4.5.2  Choosing a level type
Your new level will usually be one of the above - very few maps
suceed at being good at everything.
Happily, there's an exception to the rule: JenApt (Jennies
Apartment) is an early (and great) level which excels at
combining all four level types in one. Created by Jennifer Lynn
(fragment@cyberramp.net), it's well worth looking at.
Single player levels are easy to do - all you need is a good
idea, lots of imagination and plenty of time. If you make the
level large enough, you might be able to combine it with a co-op
level.
DukeMatch levels are surprisingly difficult to create. Not only
do tastes differ (by a lot! For example, do I Hide&Snipe or
Chase&Blast?), but you have to do a lot of testing to make the
level just right.
And even then, it'll only be just right for you, and others might
not like it at all. See the section on DukeMatch level design
below.
The 'My very own room in VirtualReality MultiMedia DataHighway
CyberSpace (tm)' theme we'll leave to the VisualBasic
programmers.
4.5.3  Random tips and thoughts
## Feedback needed! In this section, I'd like to simply list tips
and tricks to keep in mind while designing a level.
4.5.3.1  Working with Build
    *  Build from the outside in.
       When creating a house, for example, first create a huge
       bonding sector, containing everything else. You can always
       resize it later.
    *  Do the rough work first.
       Build your house (or dungeon, or subway, or whatever) like
       you would build it in real life: start with the outer
       walls, add the rough rooms, connect everything up and only
       then add the details: glass in the windows, different
       textures, etc.
    *  Save your level a lot. Use the 'save (A)s' option to
       create several versions of your level. Thus, if an idea
       goes wrong, you can always return to an earlier version.
       The more backups you have, the happier you'll be when (not
       if) BUILD nukes your map.
    *  Beware the bug! BUILD is not perfect and contains some
       nasty bugs capable of rending your map to pieces. See the
       section on Build Bugs for more info.
    *  Use F12 to dump the map to disk and print it out.
4.5.3.2  Do
    *  Use F7 a lot while playing your map to make sure the scale
       is all right. Remember that scale is important! Duke
       levels are usually smaller that their real-world
       counterparts.
    *  Most sprites are too large when just inserted as they are
       (especially the buttons). Make sure you scale everything
       right.
    *  Take it easy on triangle-shaped sectors, the tip can look
       real bad.
    *  Try to make everything look as realistic as possible:
       wooden ceilings are usually tilted and are held up with
       massive beams. Often, corners of rooms (especially large
       ones) will be held up by stone pillars. And so on.
4.5.3.3  Don't
    *  Avoid cliches: do you NEED a shark in every bathtub? Why
       yet another lizard sitting on a toilet? Should this level
       really contain strippers?
    *  Please don't overuse the effect of monsters warping in!
       It's so darn unrealistic! Rather open a hidden door or
       somesuch, and have the opponents boil out from there.
    *  3DRealms added lots of in-jokes: the doomed space marine,
       Indiana Jones, the Terminator, the alien on the toilet...
       Don't reuse these; nothing worse than an old, tired joke
       seen for the 100th time. Invent your own!
    *  Don't post half-finished levels to let others see your
       'work in progress'. What for? You'll only make a bad name
       for yourself if you release half-baked levels...
4.5.3.4  General tips
    *  Scare the player. Dan Benge came up with the idea of
       breaking a (single player) level into scenes: lead the
       player into it (lots of ambience sound), lead him to the
       climax (octabrain in the face, whatever), reward him
       afterwards (triumphant music, power up, keys).
       Tension is very important in a level.
    *  Have plenty of height variations: stairs, lifts, ledges.
       Force the player to jump, too.
    *  Make players earn bigger and better weapons. Especially,
       guard the bigger ones well.
    *  If the player falls into nukage, give him a way out (a
       button to press, stairs...). He should be punished for
       moving carelessly, yes, but not killed.
    *  Mark secret doors - a lightly darker or mismatched texture
       (forcing you to look closely) will do.
    *  Keep in mind that players will try _anything_ - if they
       are crazy enough to try and jump to that ledge, reward
       them if they make it (and punish them if they don't >:)
    *  Pacing! Keep the player interested. This should also stop
       you from building mazes, which are plain boring to
       explore.
    *  The Ending: make it good! When the player finally managed
       to finish the level, make it worth his while.
4.5.3.5  Posting your level
When posting your level on the internet or anywhere else, please
adhere to the following checklist:
    o  I've read and understood all above thoughts.
    o  My level is as good or better than the original Duke
       levels.
    o  I have included a .TXT file giving details about the level
       (your address, if single play is supported, etc).
    o  I'm not going to brag about how very cool and awesome my
       level is (sheesh, guys, how often have I heard that one?
       By now I'm not downloading any level with the word
       'awesome' in the description as I know that it'll be a
       waste of time - again).
4.5.4  Typical mistakes to avoid
This section contains, in no particular order, common errors
which you should avoid:
4.5.4.1  Crossed lines
By this I mean bounding lines from the same sector crossing each
other. While the game will allow this, it usually looks bad.
4.5.4.2  Overlaying lines
Overlaying lines very often leads to mysterious graphics glitches
(a door texture suddenly spilling onto the floor is a typical
example).
Rather place the lines very close to each other (using Grid lock
off).
4.5.4.3  Hall Of Mirrors
The Hall Of Mirrors (HOM) is caused by a missing texture and is
only really possible if BUILD is about to crash or you converted
a DOOM map via WAD2MAP.
4.5.4.4  Door side tracks
Make sure the side tracks of doors don't move up with the door if
building a DOOM-type door. Use [O].
4.5.4.5  Unaligned Textures
Aaargh! Unaligned textures are one of the most ugly design errors
around, and BUILD makes it so easy to avoid them! Use [.] a lot,
and look at all the corners to make sure the textures fit.
Even Our Hero Jenny made that mistake in the JenApt map :(
4.5.4.6  Missing Player Starts
Make sure there are at least 7 co-op and 7 DukeMatch player
starts in your map (the 8th one in each case is the normal player
starting point).
4.6  DukeMatch level design
The info in this section I've shamelessly swiped from the
excellent 'Deathmatch level design guidelines v1.0' from Brian
Kidby (thekid@ornews.intel.com).
As the basis for this section was aimed at DOOM players, I
haven't included as many Duke-specific things as I should. ##
Please send me your thoughts and ideas, I'll be expanding this
section.
4.6.1  Monster placement
Pig cops are useful for supplying ammunition to the player.
Since ammunition respawns, the question is if you want your
players to fight for their ammo, especially as dead enemies don't
always drop anything (it's easy to hack the GAME.CON file for
this, though - see lines 1072/2862 and 188 in USER.CON).
Other monsters (the leaping chaingunning lizard comes to mind)
might give ammo as well, but they usually just distract from the
main aim of the game - nuke your opponent!
However, the placement of monsters can do a lot to generate the
'feel' for your level - minibosses might keep a large area clear
for a long time, as nobody will want to get close to them if they
dont have to...
4.6.2  Weapon placement
4.6.2.1  Power weapons
Power weapons are defined as the favourite DukeMatch weapons: the
chaingun and the rocket launcher.
In nearly all DukeMatches I've played, the first priority of the
players was to get one of these weapons. The second was to start
using it >:)
These weapons should be places as far apart as possible. This has
three reasons:
    *  Getting the gun
       Placing the weapons far apart forces the players to cover
       more ground. Thus they meet more opponents and monsters,
       possibly trigger traps and learn the layout of the level.
    *  Defending the gun
       Many DukeMatchers will go to a power weapon and 'sit on
       it', waiting for the other players to show up. if the
       weapons are far apart, the players won't see much action
       during their wait, forcing them to move ot to hunt sooner
       - much more exciting.
    *  Covering tracks
       In a new DukeMatch level, players like to keep the
       locations of the weapons secret for as long as possible.
       If the weapons are far apart, the chances of being
       followed are so much smaller.
4.6.2.2  Starting-point weapons
Every starting point should have a shotgun next to it, so the
players are not completely defenseless at the beginning. This
also gives them more confidence to go out looking for bigger toys
to use.
On the other hand, some people prefere to place the starting
points right next to 'normal' weapons - every start point next to
a different weapon. This makes respawning interesting, as the
kind of weapon available at the beginning (Shrinker vs. Trip
bombs, for example) radically changes the style of play.
4.6.3  Ammo placement
4.6.3.1  Amount and location
Place small amounts of ammo in high-traffic areas, and larger
(not too large!) stashes in secret places. Adding a sniper spot
near the bigger stashes makes life a lot more interesting, too.
4.6.3.2  Ammo Quantity Types
Easily accessible ammo should be of the 'small quantity' type, eg
single pipe bombs instead of pipe bomb boxes, as this eliminates
waste when a player picks up more than he can carry.
Also, larger amounts of ammo should be strategically placed (see
above).
4.6.4  Health placement
Rarely does health seem to be a problem in DukeMatch games.
Usually, players either die really quickly of a massive lead
overdose, or they run and hide, sniping at their opponent.
If you do place health around (and I still think you should), do
so sparingly, observing the same rules as for ammo. Also, place
toilets and water fountains only in high-traffic areas, to avoid
players disappearing for a long time to fill up their health
slowly (although, if several nice sniper spots are nearby...).
4.6.5  Architectures
First off, let me say that level layouts are always a matter of
taste.
Here are just some things which I like in DukeMatch levels:
4.6.5.1  Large, open areas
Fun! Show your aim at long-range pistol shooting, have rocket
launcher duels (have you mastered jumping over an approaching
rocket?), fight several players at once and have lots of space to
move about.
4.6.5.2  Long, wide passages
Same as for large areas applies - running towards somebody,
dodging his attacks while shooting your own is great fun.
4.6.5.3  Nooks 'n crannies
Such areas should not be too large, but it is fun as well:
    *  Hunting somebody through narrow, twisting passages is an
       adrenaline rush in itself - is he hiding behind this
       corner?
    *  Lots of nice sniping spots.
4.6.5.4  Balconies, bridges and towers
It's always fun watching your opponent walking under you,
completely unaware of your presence until you pull the trigger...
It's also nice blasting a sprite bridge out from under his feet
:)
4.6.5.5  Fortresses
At times, players may decide to pay a 'capture the flag' theme,
with four players defending a fortress and four others trying to
break it (perhaps with the aim of reaching/rescuing the dancer in
the middle?).
The fort should be well armed and not too large with lots of nice
sniper spots (and the odd blastable wall to enable attacks
through the back).
4.6.5.6  Obstacles
Obstacles (pillars, crates, tables, sprites) are very important
in DukeMatch, as they allow you to hide and dodge enemy fire.
4.6.5.7  Sniper spots
Sniper spots greatly add to DukeMatch levels. They should always
have an escape-route, though, just in case your first shot
missed...
One-way walls are good for this, but perhaps a bit _too_ easy.
4.7  Once your level is done
A finished level is far from finished - lots of things remain to
be done:
Shading        Shade your level! See how efficiently 3DRealms
               used light and shade in their levels? Do the same
               - carefully shade every single room. Add lamps and
               (colored) lights. Sunlight streaming through the
               windows. Shadows behind columns and buildings.
               Shade plays a major part in how realistic (and
               thus, how good) a level will look. Doing it well
               takes ages.
Textures       Well, we won't see the HOM (Hall Of Mirrors)
               effect from DOOM anymore. But make sure your
               textures are aligned. It's so easy to do using
               Build, please make sure they look alright! Nothing
               worse than seeing the brick texture break on the
               edge of a wall, clearly showing it to be fake.
               Use the [.] key a lot, make sure you know how it
               works (and save before you do, it crashed a couple
               of times on me).
               Also, don't use too many textures - the have to
               fit your theme and the game runs faster on fewer
               textures.
Details        'All those tiny little details...'
               The TV in the corner. The discarded bottle on the
               street. Blood on the walls. The camera turning by
               just the right amount. The perfect ambience sound
               in the perfect place.
Realism        Your map must be totally convincing. As said,
               shade plays a large part in this, but so does the
               map itself: are the walls thick enough? Are they
               too thin? Does that texture belong here? Is it too
               noticable that this sprite always seem to turn to
               face you? Should you really use this type of
               monster here?
Testing        Lots! Play the level on your own. Play in in coop.
               DukeMatch it for hours (if you can't play in it
               for hours, something's wrong). Fine-tune it: is
               the window at just the right height? Is that
               elevator positioned in the perfect place?
               Testing is really important - let your friends
               play with your level (without you being present)
               and listen to their comments.
Difficulty     If you're told that your level is too easy, don't
               make it more difficult by simply adding lots more
               monsters! That's a typical newbie mistake - rather
               place the monsters in better positions and redo
               the layout a bit.
Light          Next to shading (see above), the amount of light
               in a level is important. While a dark, gloomy
               level can create great atmosphere, keep in mind
               that few of us enjoy playing in pitch darkness.




                            Chapter 5
            A walkthrough to creating a simple level
This chapter will guide you to designing your first level.
It's very much written like a cook-book - you don't have to
understand exactly what you're doing; if you follow the
instructions, it'll work out ok :)
Details about working with BUILD can be found in the next
chapter.
5.1  Planning
Remember: we have to plan the map first.
For our first map we'll build a very simple map: a storage house
on a street. It will include a door, a window and have a sloped
roof.
5.2  Getting ready
If you're still in Windoze, get out. It'll do you good, and both
Duke3D and Build run better under DOS.
I'm assuming that you've installed Duke3D on your hard drive on
C:\GAMES\DUKE3D and that your duke CD is in drive F.
So now you'll have to copy the editor into your Duke3D directory
as well:
CD C:\GAMES\DUKE3D
XCOPY F:\GOODIES\BUILD\*.*
Now start up BUILD.EXE. A screenfull of legalese will pop up (in
effect it says that you can't copy BUILD and should only design
maps for the commercial version of Duke3D - obvious). Press ENTER
to get rid of it and -voila!- you're in the 2D mode.
5.3  Creating a new map
Press [Esc]. On the bottom, a small menu will pop up:
(N)ew, (L)oad, (S)ave, save (A)s, (Q)uit
Press [N].
Asked 'Are you sure you want to start a new board?', you press
[Y].
Note to non-US users: the program reads your keyboard directly
and thus expects you to press the key right next to [T] - for ze
Germans, this would be [Z].
The new map will automatically be called NEWBOARD.MAP -
overwriting any file with that name in your directory. So be sure
to use 'save (A)s' the first time you save your map.
5.4  The 2D screen
The screen in front of you now is the 2D mode, where you'll be
doing all the rough work like laying out your rooms and
corridors. You are currently viewing your map from above.
(Changing room heights, textures, etc are done in 3D mode, so be
patient).
The screen consists of several parts:
5.4.1  Map
Most of the screen is given over to the map itself. Currently
it's just displaying a grid.
All line endpoints and all sprites will automatically align
themselves with the grid (making it easy to design rectangular
rooms, for example). You can change the grid size by pressing [G]
several times: try it now. You'll see the grid size shrink and
then disappear (meaning the grid is switched off and you can draw
anywhere). Keep pressing [G] until you see the biggest possible
grid. The biggest (meaning coarsest) grid has points which are
1024 units (that's 256 pixels) apart.
To see the maximum possible size of your map, use the [A] and [Z]
keys to zoom your map in and out. Try it, and then zoom back to a
comfortable distance.
The map also shows a red cross (your mouse cursor) and a white
arrow (your current position).
5.4.2  Message window
The message window is the bit just below the map: on the left it
shows the text 'BUILD V041996 BUILD by Ken Silverman'.
The right part of the message window currently just shows a red
line - that's where the program will display messages and ask you
for any info it needs.
5.4.3  Data window
The data window displays info about currently selected objects
(like sectors, walls or sprites) and can also show some help
texts.
Right now it should be empty.
5.4.4  Info window
The info window also consists of two parts: on the left is your
current (x,y) position in units as well as your viewing angle.
On the right it shows how many resources you have used up
already. Interesting, because it shows you the limits imposed by
the Build engine: you can have a maximum of 1024 sectors, 8192
walls and 4096 sprites.
5.5  Moving about
As said, the white arrow is your position and heading on the map.
You can move about in two ways:
Cursor keys    Like in the game, these move your forward and
               backwards. You can also rotate your heading.
               Interestingly, it also prohibits you from walking
               through blocking walls - this way you can see if
               the player will actually be able to walk
               everywhere he should be.
Mouse          The red cross is your mouse cursor and therefore
               (surprise!) moved with your mouse. Pressing the
               right mouse button transports your position to the
               mouse cursor - try keeping the button pressed and
               moving your mouse to see what happens.
5.6  #Creating a room#
So, let's start by building the street first.
Move your position somewhere into the middle of the map and zoom
in until you're at a nice comfortable distance (three squares of
the grid should be about an inch in length on your screen).
Now point the mouse at the bottom left of your currently visible
map and press the spacebar.
A small green square appears on a grid point and the message
window displays 'Sector drawing started.' And so it has - try
moving the mouse about on the screen. See that white line? That's
your first wall. Move it straight up by exactly seven squares and
press the spacebar again.
Another green square has appeared, and you've begun drawing a new
wall. Move it exactly 14 squares to the right and press the
spacebar again. Draw the next wall seven squares straight down
and press the spacebar.
The last wall you'll end exactly on the first point created, thus
forming a neat rectangle.
When you pressed the spacebar for that last square, the lowest
wall started flickering. This means that it's the currently
selected wall. Press [Alt]-[Tab] to get some info on the wall.
Don't worry about what all that stuff means - the only thing of
interest right now is the Wall number: the one on the bottom is
wall number 3 (the first one was wall number 0).
Move the cursor near the other walls and note how the other walls
get selected. The info at the bottom, however, is not
automatically updated, so you'll have to press [Alt]-[Tab] for
each wall again.
Just press [Tab] now and have a look at the sector info. All that
stuff is explained later in the FAQ, it's not important right
now.
5.7  3D mode
Make sure the white arrow is inside this room and press the
[NumEnter] key. This is the Enter key on the bottom right of the
numeric keypad (the big one in the middle won't work for us).
Wow! 3D!
You're now inside your room. It's still somewhat narrow and has
walls consisting of ugly gray stone. That stone, by the way, is
that ugly on purpose. It reminds you that you still have to find
a nice texture for it.
In 3D mode, two things are of particular interest:
The mouse      The mouse cursor has changed into a white cross -
               you use it to point at the things you want to
               change: walls, sprites...anything.
FPS            On the top left is the FPS (Frames Per Second)
               counter. This is the speed at which the screen is
               being redrawn.
               This number is terribly important while designing
               your level: if it drops too low (below 10), the
               level will play jerky and you won't enjoy it.
               The FPS are connected to the complexity of the
               displayed image - the more walls, sprites and
               textures the computer has to show on a single
               screen, the lower the FPS count will be.
               As the Levelord says: "Framerate is God!". So keep
               an eye on it.
You can move about in 3D mode with the cursor keys. Don't use the
cursor keys from the numeric keypad but the ones in the middle.
You can jump back and forth between 2D and 3D mode by pressing
the [NumEnter] key.
5.8  Raising the roof
This is supposed to a street scene, right? So the first thing
we'll need to do is raise the roof.
Point at the ceiling and press [PgUp]. You can see it move
upwards a bit, pulling the walls with it. Point at the wall in
front of you and press [PgUp] again. That's another way to raise
the ceiling.
Raise the roof until you reach a height you feel more comfortable
with. The room should now resemble a small aircraft hangar.
5.9  Textures
Now for some magic: let's change the appearance of the walls and
floor.
5.9.1  The floor
The floor is first: we'll change it from a simple and ugly stone
to a street. Point at it and press [V].
The screen clears, showing the current texture at the top left
and the number '0' at the bottom left. This screen contains all
floor textures you have used on your map so far, and the number
'0' is the number of the currently selected texture.
Press [V] again: now you'll see a list of _all_ textures in the
game, including things which are actually sprites (like the
weapons), but can be usd as textures if you want (although
they'll usually look weird).
You can move your cursor (the white box) about with the cursor
keys - try it.
Have a look at all the possibilities.
Now press [G] (meaning Goto). The program will ask you 'Goto
tile:' on the top left. Use the backspace key to erase the
currently shown number and type '815'. Press [Enter].
Voila! The floor changed its appearance and now looks more like a
street.
5.9.2  #The roof#
Now for the roof. The street has sky above it, right? So, using
[V] again we'll select tile number 89.
This looks weird, not like the sky at all. So we parallax it:
point at the roof and press [P].
Much better! Move around a bit, using [Ctrl]-[A] and [Ctrl]-[Z]
to look up and down. (Yes, if you look too high, the texture will
mess up - don't worry about it, in the game itself it'll look
ok).
5.9.3  Flying about
There are three movement modes available to you in the 3D view:
Game Mode      Here you walk around like the player in the game.
               Use [A] to jump and [Z] to duck.
Height Lock    In this mode, you're always at the same height
               above the floor. Use [A] and [Z] to raise and
               lower yourself.
Float Mode     You're completely unaffected by the floor and can
               smoothly change your height with the [A] and [Z]
               keys.
Use the [CapsLock] to change between these modes.
5.9.4  The walls
Currently we're still sitting in a walled-in box. Let's make this
look even more like a street.
Point at the west wall and give it the texture number 794.
Now this looks more like a house. However, I bet the windows are
not perfectly aligned with the ground and you only have half the
lowest row showing.
So let's change the orientation of the wall texture. Point at the
houses and press [O]. Hmm, the texture now hangs from the roof
instead of the floor.
Still not good enough. Press [O] again and raise the ceiling
until you have three rows of windows, looking just right. Walk up
close to it, making sure it looks ok.
Now we'll copy this texture to the other four walls: Point at the
west wall again and press [Tab]. This copies the texture into
memory, causing some text to appear: 'Lo = 0/hi = 0/USED= 1/MEM =
8192'. (Of interest is only the 'USED' value - it shows how often
we have used this texture already).
Point at the three gray walls in turn and press [Enter] on each.
Much better. Now we're standing on a street (or a courtyard).
Note how neatly the textures fit together in the corners? That's
because we stuck to the grid while designing this room in 2D
mode. All textures have width and height in a multiple of 8, same
as the grid. So stick to the grid, and you'll be ok.
Last thing to do now is to make our house stand out. The street
is on the north edge of our house, so point at the south wall and
give it the texture number 723. This changes our house to a
darker, more brooding one.
5.10  Building the house
So far we have a street but no house.
To design the house, we first drop back into 2D mode: press
[NumEnter].
5.10.1  The house sector
Press [G] again, making the grid a bit smaller (exactly by half,
in fact). This is now the second-biggest grid available to us.
Point on the grid just below the lower left point of the street
and press [Spacebar]. Don't draw on the point itself, but one
grid unit below it - if you made a mistake, press [Backspace] and
try again.
Draw a line to the right parallel to the street, along its whole
length. Press [Spacear] under the bottom right point of the
street. That's the first inside wall of the house. The next wall
goes straight down by 8 grid units.
Keep going until you have a rectangle defining the inside of your
house.
5.10.2  Fixing the house sector
Move the white arrow inside the house sector with the mouse
(notice that you can't move from the street to the house with the
cursor keys, as there's a thin line of nothing (solid rock)
between the street and the house) and switch into 3D mode.
Yuck, there's the gray stone again. Again, we first raise the
roof to a comfortable height (don't make it too high - look at
the room you're in now to get an idea of the proper height).
Now that we have a (somewhat long and narrow-looking) room, we
fix the floor first. Let's make a red carpet on a wooden floor,
like the one we saw in the Bank Roll level.
5.10.2.1  The carpet floor
Point at the floor and give is texture number 749. Hmm, the
floorboards look a bit wide. Point at them and press [E] (toggles
between enlarged and normal floor). Now the wood looks better.
Now how will we do the carpet? After all, we don't want wall-to-
wall carpeting, we want the wood to peek out at the edges.
Since a sector can only have one floor texture, the answer is to
create a second sector inside the house sector. A smaller one,
with the same roof and floor height as the first one, but a
different floor texture.
So we pop back into 2D mode and design a second sector inside the
house. It looks just like the house sector, but is a bit smaller
(one grid unit distance to the walls).
Place the white arrow in the middle of our new sector and press
[NumEnter].
Whoops! A message appears: 'Arrow must be inside a sector before
entering 3D mode'. What happened?
Place the arrow in the narrow space between the old house sector
and the new one and press [NumEnter] again. Whooo - tight!
You see, the old sector is now doghnut-shaped - we've created a
solid block of stone right in the middle of it.
Go back into 2D mode. Point inside the new sector and press
[Alt]-[S].
The walls now turn red, and the message window says 'Inner loop
made into new sector.'.
Back in 3D mode we see that everything is ok now - we have our
original house back. No sign of the new sector, though.
That's because the new sector automagically has the same floor
and ceiling of the original sector. Point at the middle of the
floor, press [V] and select texture number 899. See? There's our
carpet.
Play about raising and lowering the roof and floor of the carpet
sector to get a good understanding of what we've done just now.
When you're done, set the floor and roof of the carpet sector to
the same as the house sector and give all four walls a nicer
texture: 783. Remember that you can use [Tab] and [Enter] to make
life easier.
5.10.2.2  Nice walls
Hmmm. The walls are suposed to have a wooden toe-rail along the
bottom and a dark stripe near the ceiling, and currently they
look wrong.
Looks like we'll have to shift the texture up a bit: point at one
of the walls and press [Shift]-[Num2] (that's the '2' key on the
numeric keypad).
See it move up a bit? Keep pressing [Shift]-[Num2] until the
wooden toe rail is exactly right on the floor (walk up close to
the wall to make sure no single line of brighter pixels is
peeking underneath the wood). Now the wall is so high that the
texture repeats on the upper part, so we'll lower the roof a bit.
Sinve the texture is attatched to the roof, this lowers the whole
wall into the floor. Point at it and press [O] (for Orientation).
Move the roof again and note that the texture is now attached to
the floor, not moving with the roof.
Make the texture look good again by using [Shift]-[Num2]. Then
lower to roof until the wall looks just perfect. Don't forget to
lower the roof of the carpet sector by the same amount, otherwise
it won't look right.
If the other walls are not looking ok, point at the wall you've
been working on and press [.]. This auto-aligns the textures of
all walls (you might have to press [O] on the other three walls
as well).
5.10.2.3  Finally, the roof
The roof also isn't looking to good so far. Give it the texture
number 182. And change the roof texture of the carpet sector to
match, of course :)
5.10.3  Saving your work
Nice. Now just so we don't loose everything, go back into 2D
mode, press [Esc] and [A] (save As). Erase the name 'NEWBOARD'
with [Backspace], type [DEMO] and press [Enter].
Now no matter what happens, we won't loose our work so far.
5.10.4  Building a doorway
The house is well and good, but we're missing something
important: a doorway out to the street.
To create one, we'll need to be in 2D mode and create a sector
connecting the street and the house.
Move to the right of the house and zoom in a bit so you can see
the grid very clearly. Move the cursor just underneath the white
line defining the top edge of the house. See that little black
dot on it just above the red cross? Move the cross until the dot
is exactly three grid squares from the right edge of the white
house sector and press [Ins].
A small green square appears: we've inserted a point on the white
line, splitting it in two. Insert another point on the same line,
two grid squares to the left of the first one.
Now do the same thing to the bottom part of the street sector:
insert two points just above the points on the house sector.
These four new points will now define our doorway sector. Notice
that the doorway will share two lines: the bottom one will also
belong to the house, while the top one will connect to the
street.
Now build the door sector: point at the bottom left point and
press [Spacebar], starting a new line. Point at the point on the
bottom right and press [Spacebar] again. Keep doing this with the
top right and the top left point. End the final line on the
bottom left point, creating a rectangle which will immediately
turn partly red.
That's our new doorway sector. Look at it: the top and bottom
lines are red (two-sided lines) and the left and right ones are
white (one-sided).
Let's view this in 3D: place the arrow on the street and switch
into 3D mode.
Doesn't look too good so far, does it? The doorway reaches all
the way into the sky, appearing all wrong.
So let's make it lower: walk into the doorway, point at one of
the walls and keep pressing [PgDn] until the roof comes into
view.
The roof looks a mess because it's still parallaxed (the doorway
took on the setup of the street sector - notice the floor is
asphalt), so press [P] on it.
Take a few steps backwards into the street and change the height
of the doorway until you're happy with it (it should end just at
the top of the dark windows).
The walls look a bit messy, both over the doorway and inside it.
That's because their textures are attached wrong - press [O] on
them. Much better.
Also change the doorway sectors floor, roof and wall textures to
773.
Now we have a house which we can leave through a doorway and walk
into the street!
5.10.5  Adding a window
So, what's a window? Easy: just like a doorway, but with a raised
floor and some glass in it.
Since you now know how to build a doorway between the street and
the house, go ahead and build another one somewhere to the left
of the first doorway.
Got two alike doorways next to each other? Textures looking ok?
Right, step into the street. Point at the floor of the second
doorway and press [PgUp] to raise it right up to the bottom of
the black windows (looks better).
All right! You've got yourself a window!
However, it still doesn't look good - it's too high up, we can't
look out comfortably. So, lower the roof and floor of the window
sector until you can easily look into the house.
Better, but now it doesn't fit the texture on the street as
neatly anymore. So we'll use [Shift]-[Num8] to shift the wall
texture down until it looks right.
Notice how you're only shifing the wall texture over the window?
Each section of a wall (separated by a point) can have its own
texture, so you'll have to shift each walls texture.
Remember that you can use [.] to auto-align textures for you (it
auto-alignes all walls to the right of the one you pointed at, so
shift the texture on the leftmost wall).
5.10.6  Glass
Now we only need to add some glass into the window (so we can
shoot it, yaaay!).
Still in the street, point on the wall below the window and press
[M]. The window will be walled closed with the ugly gray stone
texture again. Point at it and give it the texture number 503.
Voila! A glass pane!
However, the white reflections on it loks wrong. Press [T] twice
to make the window more transparent.
You can also use [F] (Flip) and [Num4] as well as [Num6] to
change the appearance of the window. (Of course, you can use
these keys on any wall texture). If you make a mistake, you can
reset the wall be pressing [/].
Remember to fix both sides of the glass pane.
Now, all we have to do is make the glass breakable: point at it
and press [B] (blocking movement) and [H] (hitscan on, meaning it
can be shot).
A glass pane on the very outside doesn't look to good, though -
it should be in the exact middle of the window sector. Besides,
it'll mess up the street texture when shattered.
So, first we'll define a line where the glass will be: in 2D
mide, insert a point in the middle of the left and right walls of
the window sector. Point at the first point and (using
[Spacebar]), draw a line across to the second point. The message
'Sector split.' will appear - the window sector is now made up of
two separate sectors, and we'll put the glass on the line
dividing them.
But first, press [B] at the new line in 2D mode until it looks a
normal red. Do the same for the upper line (where our glass is
right now).
Back in 3D mode, we'll remove the old glass pane by pressing [M]
at it and insert the new pane by pointing just inside the window
sector and pressing [M] again. Fix the window up using [Num4] and
[Num6] and don't forget [T], [B] and [H].
5.10.7  The sloped roof
Remember we wanted to slope the ceiling of the house so it looks
a bit like an A-frame?
Well, of course each sector can only be sloped one way, so we'll
have to split the house sector (and the carpet sector!) again:
Insert a point in the middle of each horizontal wall in the house
(the house walls and the carpet sector walls) so you get four
points underneath each other.
>From the top point, draw a line to the one just below it. The
message window will say 'Loops joined.'. Keep going: connect the
two points on the carpet sector ('Sector split.') and the lower
two points ('Sector split.').
Now, still in 2D mode, we define the 'hinges' of the sloping
ceiling. We'll hinge the roof in the middle, so first point
inside the carpet sector just to the left of the new line and
press [Alt]-[F]. This makes the selected line (the blinking one)
the first line in the sector the mouse cursor is in.
Do the same for the second carpet sector (the one on the right)
and with both house sectors.
Do the same for the second carpet sector (the one on the right)
and with both house sectors.
Now switch to 3D mode, point at the roof and press '[' and ']' to
tilt the ceilings. (You'll have to raise the ceiling a bit - use
[.] to realign the walls afterwards).
If the ceiling tilts wrong, you've messed up the [Alt]-[F] bit.
Make sure you've selected the right line at try again.
You can use [/] to make a ceiling straight again.
5.11  #Trying it out#
Let's try our new level out. Place the arrow in the street and
press [ScrollLock] to set the dim red arrow which shows your
starting point in the game.
Caution: if the starting point is outside a valid sector, the
game will crash if you try to run the map!
In 2D mode, press [Esc], [Q] [Y] [Y] to exit the editor, saving
your map.
Now start up Duke3D by typing
DUKE3D -map DEMO.MAP
Fun! Walk through your creation, smash the window, look about.
However, it sure gets old fast - plain walls with no decorations,
and where are the enemies?
5.12  Decorations
Let's keep our decorations simple: a flowerpot in the corner, a
picture on the wall, a lamp on the ceiling and a burning barrel
in the street.
First call up Build again:
BUILD DEMO.MAP (press [Enter] twice quickly)
We find ourselves in 3D mode, at the player starting point. Walk
inside the house, point somewhere at the floor and press [S]
(insert sprite).
Again, we're confronted with the ugly gray wall, this time
standing upright on the floor.
Try walking around it - note how it always faces you?
Press [R] at it and see how it changes into a flat piece of
paper. You can change its heading in 2D mode by pointing at the
sprite (the small circle with the tail sticking out of it) and
pressing [<] and [>].
Back in 3D mode, press [R] at it again - now it's flat on the
floor.
5.12.1  The flower pot
Make the sprite stand up again with [R] and press [V] to select a
different sprite (number 1025). The wall changes into a flower
pot!
By the way, notice that sprite 1025 looked differently in the
selection list? The pink bits will be transparent when the sprite
is used.
Now shift the flower pot into a corner: in 2D mode, make the grid
a bit finer, point at the flower (now called BOTTLE7 by the
program) and move it about by pressing and holding the left mouse
button (you can shift the endpoints of walls in the same way,
btw).
All right! Now we have a flower pot in the corner of the room.
Press [Tab] at it and use [S] in 3D mode to place some more pots
on the floor. They will automatically shatter when hit.
In 2D mode, the sprite appears pink - this means that the 'block
moveemnt' flag has been set, and you can't walk through it. If
for some reason you want to allow the player to walk through a
sprite (fire, for example), press [B] at the sprite and watch it
change color.
5.12.2  The picture
The next sprite will be a picture on the wall.
Point at the south wall and press [S] again. The flower pot
appears again, but since we placed it on a wall, it's
automatically flat already.
Use [V] to change it into sprite number 1075 - a framed picture.
Use [PgUp] and [PgDn] to position it on the wall.
5.12.3  A hanging lamp
Next we'll hang a lamp from the ceiling.
Point at the middle of the floor and press [S]. Change it into
sprite number 979 (a hanging lamp).
Well, not exactly hanging yet. So point at it and press
[Ctrl]-[PgUp] to move it right up to the ceiling (yes,
[Ctrl]-[PgDn] will place a sprite on the floor).
5.12.4  The burning barrel
Finally, we'll place a burning barrel on the street. Walk outside
and place a sprite number 1240 somewhere on the street.
Note that this sprite will automatically animate to look like a
burning barrel. If you had chosen one of the other three
animation frames (sprites 1241 to 1243), it wouldn't have worked
- the flames would appear 'frozen' (try it).
By the way, you can remove a sprite by pointing at it and
pressing [Del].
You might also want to play around with the [Num2], [Num8],
Num[4], [Num[6] and [/] keys.
5.13  The enemy appears
We're still missing opposition.
So, go back into the house and place a sprite number 2000 in the
middle of it.
Ah, a PigCop! Try walking around it - note how you're always
shown the correct side of the monster?
Place another one next to the first one, but as number 2001.
This one isn't moving, and the program calls it PIGCOPSTAYPUT
(check it in 2D mode).
All monsters have a STAYPUT frame - it means that they will walk
around normally, but never change the sector they started in.
Great for setting up ambushes.
It also means that our second PigCop won't dare to leave the
carpet :)
Here's a cute trick: try making one of the cops transparent [T]
to create a ghost :)
Start the game up again, switch to God mode (type DNKROZ in the
game) and watch the different behaviour of the two monsters.
Note that you can place monsters in different poses to have them
start up in them. For example, you can place a PigCop number 2045
(lying down) behind a low wall...
5.14  The other players
All that's missing now is to set up the coop and DukeMatch
starting positions of the other players. You'll need seven of
each (the red arrow is the eight one for both coop and DukeMatch
positions).
Simply place sprites number 1405 (called APLAYER) everywhere you
want a DukeMatch starting spot (be fair!).
To differentiate the coop starting positions (which are usually
all in a bunch somewhere) from the DukeMatch spots, point at them
in 2D mode, press [Alt]-[T], [1] and [Enter] to give them a lo-
tag of 1.
5.15  Taking it from here
All right! Your first level!
It's still a bit simple, so read through the next chapter and
play around (save it first). The trick is to experiment as much
as possible!




                            Chapter 6
                        The BUILD Editor
This chapter is intended as a reference to the BUILD editor,
included on the CD. A big thanks to 3DRealms for giving us the
very editor they used to design their levels!
In this chapter, I'm describing the BUILD editor V041996 from
9/23/95. Press [F1] in 2D mode to see what version you've got.
The program consists of two parts: 2D mode and 3D.
6.1  2D Mode
2D mode is used to design the sectors and place sprites
accurately, much like a blue print.
6.1.1  The Screen
The screen is split into four parts:
6.1.1.1  The map
Most of the screen is taken in by the map.
Shown on it are:
The grid       Made up of dark gray lines, the grid has 8
               settings (7 magnifications and Off). All objects
               snap to the grid as they are placed or moved.
Sprites        Small circles with a line indicating its facing.
               At high enough magnification, they will also
               display a tag:
               X Y NAME
               where X is the hi-tag, Y the lo-tag and NAME the
               name of the sprite as given in the NAMES.H file.
               A pink sprite is flagged as impassable.
Points         End points of lines are shown as small green
               squares.
Walls          Two types of walls are possible: one-sided walls
               are white, two-sided walls are red.
               Two-sided walls with the 'blocking movement' bit
               set are shown as pink, and glass (with the
               'hitscan' flag set in addition) is a thick pink
               line.
               A wall can also display a rectangular sign at high
               enough resolution, showing the wall tags.
Sector         A sector is bounded by walls, and is not displayed
               as such (pity - DEU did a very good job of this,
               very useful). But if it is tagged, you can see a
               sign with the tag numbers on it, same as for walls
               and sprites.
Mouse          The mouse cursor is a red cross if grid locking is
               on and a white one if grid locking is off.
Observer       The observer (your position in 3D) is a white
               arrow.
6.1.1.2  The Message window
This window shows the text 'DUKE NUKEM BUILD V041996 BUILD by Ken
Silverman'. The right part is reserved for prompts like the Esc-
menu.
6.1.1.3  The Data window
The data window displays info about currently selected objects
(like sectors, walls or sprites) and can also display some help
texts.
6.1.1.4  The Info window
The info window also consists of two parts: on the left is your
current (x,y) position in units as well as your viewing angle.
On the right it shows how many resources you have used up
already. Interesting, because it shows you the limits imposed by
the Build engine: you can have a maximum of 1024 sectors, 8192
walls and 4096 sprites.
6.1.2  The mouse
Most of the time you'll have your right hand on the mouse and the
left one on the keyboard.
6.1.2.1  Move
Moves the mouse cursor (really!). Is also used to shape the
selection box together with the [RightShift] and [RightAlt] keys.
6.1.2.2  Left button
Used to drag a selected object or group of objects.
6.1.2.3  Right button
Places the player at the mouse position.
6.1.3  The keyboard
All keys named NumXXX are keys from the numeric keypad.
6.1.3.1  Esc
Pops up the Esc-menu: (N)ew, (L)oad, (S)ave, save (A)s, (Q)uit.
(N)ew          starts a new map (after confirming with you).
(L)oad         pops up a selection list of all .MAP files
               (Caution! It doesn't ask you if you're sure, so
               save first before loading a new level. If
               necessary, abort the selection process with
               [Esc]).
(S)ave         saves the map under its current name, overwriting
               any map with the same name on the disk without
               comment. New, unnamed levels are automatically
               called NEWBOARD.MAP.
save (A)s      asks you for a name to save the current map under.
               All new maps should first be given a name this
               way. Beware that it will overwrite any map with
               the same name without comment.
(Q)uit         will quit the editor after confirming with you and
               offering to save your current work.
6.1.3.2  Cursor keys
Move the player position. The player is clipped, so use the right
mouse button to move if necessary.
6.1.3.3  NumIns and NumDel
These keys will pan the player position sideways.
6.1.3.4  Spacebar
Draw new sectors. The program is bright enough to know when
you're drawing a new sector or adding to an existing one. Use
[Backspace] to back up to the last point plotted.
6.1.3.5  NumEnter
Toggles between 2D and 3D mode.
6.1.3.6  RightShift
Used together with the mouse to select a rectangular region of
objects (points and sprites) to move. Press again to deselect.
Interesting note: if you drag a sprite normally (using the left
mouse button), the sprite will be clipped, meaning it can't pass
over high walls, into door sectors, etc. But if you select it
with the right shift key first, you can move it anywhere you
want. Real useful trick, this.
6.1.3.7  Control-RightShift
Select all points of a sector, which can them be dragged with the
left mouse key and stamped with [Ins].
6.1.3.8  RightAlt
Use together with the mouse to select all sectors within a
rectangular area. Before moving the mouse, press [Ins]. Now the
selected sectors can then be dragged with the mouse and stamped
with [Ins] or you can rotate them with [<] and [>].
If you load a new map right after selecting sectors, you can even
stamp the old sectors into the new map.
To copy a sector properly is non-trivial - see 'How do I copy a
sector' below.
6.1.3.9  Ins
Insert something. If some objects are selected, it will insert
these (points or sectors) - don't forget to drag them afterwards.
If nothing is selected, it will insert a point on the current
line.
6.1.3.10  Del
Delete a sprite.
6.1.3.11  RightControl-Del
Delete the current sector (the one the mouse cursor is in).
6.1.3.12  A and Z
Zoom in and out.
6.1.3.13  G
Change the grid size.
6.1.3.14  L
Toggle grid locking.
The color of the mouse cursor changes accordingly: red for
locking on, white for off.
6.1.3.15  J
Join two neighboring sectors. Press [J] in the first sector and
again in the adjacent one. The adjacent one will take on all
settings (ceiling height, textures, etc) of the first sector.
6.1.3.16  Alt-S
Turn an inner sector into player space (used to create sectors
within sectors).
6.1.3.17  S
Insert a sprite. You can store a sprite in 3D mode by pressing
[Tab] on it, making it the default sprite to insert.
6.1.3.18  B
Toggle the 'block movement' flag on a line or sprite.
6.1.3.19  #Shift-B#
Blocks only one side of a two-sided wall.
6.1.3.20  C
Turn a line into a circle - move the mouse to change the circle.
[+] [-]        changes the number of points on the circle.
[Spacebar]     draws the circle.
[C]            aborts it.
6.1.3.21  T
Set the sector lo-tag.
6.1.3.22  H
Set the sector hi-tag.
6.1.3.23  Alt-T
Set the sprite or wall lo-tag.
6.1.3.24  Alt-H
Set the sprite or wall hi-tag.
6.1.3.25  E
Change a sprites status list number.
## Anybody know what this does, exactly? What's a status list
number?
6.1.3.26  < and >
Change the angle of a sprite or selected sector. Use [RightAlt]
to select sectors.
6.1.3.27  Shift-< and Shift->
Change the angle of the sprite or selected sector in smaller
increments.
6.1.3.28  [ ]
This allows you to search backwards or forwards for a certain
sector or wall. Select the tags to look for via [F8] (for walls)
or [F9] (for sectors) and press '[' to search backwards and ']'
to search forwards.
If the sector or wall is found, the map will jump to it, placing
the cursor at one of the points (probably the first one of the
sector/wall).
6.1.3.29  '-M
Pressing ['] and [M] together brings up a memory status window.
Caution: I don't recommend using this option as BUILD gets
unstable afterwards and will crash upon switching to 3D mode.
Total Tiles    Bytes taken up by all selected tiles?
Total Sprites  Bytes taken up by all selected sprites?
Total Actors   Bytes taken up by all actors (now what's that?)
Total Memory   Bytes needed for this map?
Total W/Duke   Bytes needed to run this map together with Duke3D?
Note for the German users: ['] is the 'Umlaut A' on your
keyboard.
6.1.3.30  '-3
Pressing ['] and [3] together changes the tag display mode (very
useful feature, this):
0: No tags displayed
1: Show sector tags only
2: Show wall tags only
3: Show sprite tags only
4: Show all tags
5: Show item tags only
6: Show tags of current sprite only
6.1.3.31  F1
Shows a short help screen as well as the version number of BUILD
(currently V041996).
## According to this helpscreen, [']-[1], [~], and [']-[9] should
be doing something as well but they don't - anybody with more
luck than me?
6.1.3.32  F2
Increments the players x-position by one unit. Seems like a
useless feature and my guess is that [F1] decremented the players
position before 3DRealms turned it into a help button.
6.1.3.33  F3
Decrements the players y-position by one unit.
6.1.3.34  F4
Increments the players y-position by one unit.
6.1.3.35  F5
If you are in a valid sector, this option will show some general
info about your map, like its name and the number of items in it
(the blue numbers mean the number of each item only found in
multiplayer mode).
This is particularily interesting if you want to make sure that
you've got a good weapon mix with enough ammo and goodies.
6.1.3.36  F6
If a sprite is selected, this will show a small help screen
listing the numbers of all (?) sector effectors and their
function (that's the info in SEHELP.HLP - feel free to change
this ASCII file).
Otherwise, some more really useful info about your map is shown,
this time containing the next free tag and the amount of monsters
placed.
6.1.3.37  F7
This shows a help screen listing all (?) sector tags with their
function. In effect, the file STHELP.HLP is displayed - feel free
to modify it.
6.1.3.38  F8
Allows you to search for a wall with specific hi- and lo-tags.
If a sprite is highlighted, you can search for the sprite via its
tags, too.
'[' and ']' start the search.
6.1.3.39  F9
As [F8], but you can search for a sector instead.
6.1.3.40  F10
Increments the angle of the player by one unit. Looks like a
singularily useless function.
6.1.3.41  F11
Displays the message 'Grabbed wall sprite 0' - ?? ##
6.1.3.42  F12
Takes a .PCX screen shot.
Turn off the Grid before you press [F12], as it isn't shown
properly.
6.1.3.43  TAB
Show info on the current sector:
Sector         The number of the sector.
Firstwall      The number of the first wall (set with [Alt]-[F]).
               Interesting because:
                   *  The floor/ceiling texture orientates itself
                      on it.
                   *  The floor/ceiling uses this line as a hinge
                      when tilting.
                   *  Blastable walls lower the ceiling until the
                      first lines touch - if your wall has
                      triangular holes in it, this may be why. So
                      make sure your first line is the lowest
                      one.
Numberofwalls  The number of walls bounding this sector.
Firstsprite    The number of the first sprite in ths sector.
               Hmmm...anybody know if the first sprite is of
               similar importance as the first wall? ##
Tags           The hi and lo tags of the sector (also shown in
               hex).
               Change with [H] and [T].
Extra          Describes as 'used by the game programer only'.
               Usually set to -1; anybody got details? ##
Visibility     The visibility in this sector, usually set to 0.
Pixel height   The height of the room in pixels.
               Each [PgUp] or [PgDn] in 3D mode changes this by 4
               (= 256 units).
Ceiling Flags  The ceiling flag, shown in hex.
               The flags (with the keys used to change them in
               3D) are as follows (the rightmost bit being number
               0):
               0: Set if parallaxing [P]
               1: Set if tilted '[',']'
               2: Set if x and y are swapped [F]
               3: Set if texture size is halved [E]
               4: Set if x-flipped [F]
               5: Set if y-flipped [F]
               6: Set if texture aligned with first sector wall
               [R]
(X,Y) pan      The x,y amount the ceiling has been panned. Use
               the cursor keys for this.
Shade byte     The amount of shade on the ceiling.
               0 is normal, < 0 is lighter, > 0 is darker.
Z-coordinate   The z-coodinate of the ceiling.
               Smaller means higher. Each [PgUp] or [PgDn] in 3D
               mode changes this by 1024 units (= 4 pixel).
Tile number    The number of the ceiling texture.
               Use [V] to change.
Ceiling heinum Amount of tilt.
Palookup number
               Color palette to use (0 is normal).
6.1.3.44  Alt-TAB
Show info on the current wall or sprite.
The wall info is as follows:
Wall           Number of the wall (note that red lines are
               actually two walls, so it's important which sector
               you're in when pressing [Alt]-[TAB]).
X-coordinate   X-coordinate of left side of wall.
Y-coordinate   Y-coordinate of left side of wall.
Point2         Number of the next wall to the right in the same
               sector.
Sector         Sector the wall is in.
Tags           The hi and lo tags for this wall, also shown in
               hex.
               ## Anybody got a list of interesting tag numbers?
Flags          The flag (in hex) of this wall.
               The flags (together with the keys to change them)
               are as follows (0 is on the very right):
               0: Set if wall blocks movement [B]
               1: Set if wall has two different textures [2]
               2: Set if tile is aligned to ceiling (0 if floor)
               [O]
               3: Set if x-flipped [F]
               4: Set if masking wall (like window) [M]
               5: Set if 1-way wall [1]
               6: Set if hitscan enabled [H]
               7: Set if transparent [T]
               8: Set if y-flipped [F]
               9: Set if reverse-transparent (?) [T]
Flags          The flags for the sprites are as follows:
               0: Set if sprite blocks movement [B]
               1: Set if sprite is transparent (see bit 9) [T]
               2: Set if flipped Left/right [F]
               3: Set if flipped Up/Down [F]
               4: Set if sprite is flat upright [R]
               5: Set if sprite is flat on ground [R]
               6: Set if sprite is single-sided [1]
               7: ???
               8: Set if hitscan enabled [Ctrl-H]
               9: Set if very transparent, else slightly
               transparent (see bit 1) [T]
Shade          The amount of shade on the walls (smaller is
               brighter).
               Use [+] and [-] to change.
(X,Y) repeat   Used to stretch textures.
               Use the [NumCursor] keys to change this, press [/]
               to undo any accidential changes.
(X,Y) pan      Used to move textures.
               Use the [Cursorkeys] for this.
Tile number    The texture number used on this wall. Use [V] to
               set this.
OverTile number
               The extra texture number for 1-way walls and
               masked walls.
               ## I'm not sure how this is supposed to work. On a
               wall with three textures (a window with glass on
               the maskable wall as well as two different
               textures above and below it) it stayed 0.
Nextsector     The number of the sector on the other side of the
               wall (-1 if there is none).
Nextwall       Number of the wall on the other side (only
               interesting if the wall is two-sided, otherwise
               it's -1)
Extra          Usually -1, and described as 'used by the game
               programmer only'. Which makes it irresistable :)
               ## Anybody got more info?
Wall length    Wall length in pixels. The grid at maximum size
               has a square width of 64 pixels.
Pixel height   Height of the wall in pixels.
6.1.3.45  ScrollLock
Set the starting position to the current players position.
Caution: if this position is set to an invalid position (outside
a sector), the game will crash when you try to run this map.
6.1.3.46  Ctrl-T
Toggle tag box display on the sprites, walls and sectors.
6.1.3.47  Enter
Displays the text 'Highlighted line pointers checked'.
## Anybody know what this means? It sure doesn't protect you from
invalid lines...
6.2  3D Mode
3D mode is where it's at! Here you stand right in your map and
can change anything: floor/ceiling height, textures, etc. It's
where you'll be spending most of your time.
This mode is also what really makes BUILD stand out from other
editors like DEU - you can spend a long time in here, fixing up
your level to look just right. No more guessing around with the
alignment, easily set the height of your rooms, see what
everything looks like before you fire up the game
itself...lovely.
6.2.1  The screen
The screen shows the map as viewed from the players position. Two
things deserve special note:
FPS meter      On the top left the current fps rate is shown.
               Keep an eye on this while editing and don't make a
               room so complex that the fps drops too low! Also
               remember that others may be using a slower
               computer than you, so lets keep the fps high, ok?
Mouse          Yes, the little white cross is the mouse pointer,
               no it doesn't change color according to the 'grid
               locked' status, and yes, you move it with the
               mouse :)
Also, sprites displayed in blue (palette 1, change via [Alt]-[P])
are only available in multiplayer mode.
6.2.2  The mouse
Again, you'll be spending your time with the right hand on the
mouse and the left on the keyboard.
6.2.2.1  Move
Believe it or not, but moving the mouse actually changes the
mouse cursors position on the screen, enabling you to point at
anything you can see! Yes!
6.2.2.2  Left button
Pointing the mouse at something, pressing the left mouse button
and keeping it pressed keeps that object selected, even if the
mouse pointer somehow strays from it (for example, when changing
the height of an object).
6.2.2.3  Right button
## Anybody know if the right mouse button serves any useful
function? I know of none (in 3D mode, that is!).
6.2.3  The keyboard
Lots of funny buttons for you to press!
6.2.3.1  Cursor keys
Moves the player around, just like in the game. Press [LeftShift]
to speed up your movement.
6.2.3.2  CapsLock
This key cycles through the three different movement modes
available to you:
Game Mode      Here you walk around like the player in the game.
               Use [A] to jump and [Z] to duck.
Height Lock    In this mode, you're always at the same height
               above the floor of the current sector. Use [A] and
               [Z] to raise and lower yourself.
Float Mode     You're completely unaffected by the floor and can
               smoothly change your height with the [A] and [Z]
               keys.
6.2.3.3  PgUp and PgDn
Allow you to change the height of the object you're pointing at:
raise or lower ceilings, floors and sprites.
If you point at a wall, the corresponding ceiling will change
height.
Press [Ctrl]-[PgUp]/[PgDn] to move a sprite exactly to the
ceiling/floor.
6.2.3.4  V
Change the selected tile or sprite.
6.2.3.5  Alt-V
This is supposed to change something called a 'Groudraw height
map'. To me it just looks like it's selecting a tile as well. ##
Anybody knows what's going on here?
6.2.3.6  NumCursor keys
On a wall, these keys change the size of the texture. This means
you're able to re-use textures for many different things, scaling
them exactly as needed (perhaps showing only a certain part).
Using these keys on a sprite will change the size of the sprite.
Very useful indeed.
Finally, the textures on a ceiling or floor can only be resized
using [E], so these keys just scroll the texture, enabling you to
align it accurately.
6.2.3.7  Shift-NumCursor keys
Usable only on walls and ceiling/floors (sprites will ignore the
shift key and resize instead), these keys shift the offset of the
texture.
In effect you're moving the texture without resizing it.
6.2.3.8  /
Used to reset a texture or sprite to normal (undoes the effects
of [Shift]-[NumCursor] and [NumCursor]).
6.2.3.9  .
This key will try to auto-align all walls to the right of the
selected wall if they are using the same texture.
Caution: this has caused my system to crash on several occasions
- save before you try this!
6.2.3.10  F
Flips the selected floor/ceiling 8 possible ways. Walls and
sprites can only be flipped 4 ways.
6.2.3.11  P
Toggle parallaxing on floors or ceilings. This only works well on
some textures (like 89..96, the cityscapes).
6.2.3.12  Ctrl-P
Change the type of parallaxing used (three different types are
available).
6.2.3.13  G
This is supposed to give a floor height-mapping. ## Like
[Alt]-[V], this doesn't seem to work for me.
6.2.3.14  E
Toggles the tile size of floors/ceilings between normal and
enlarged.
6.2.3.15  R
Toggle floor/ceiling tiles between relative and absolute
alignment.
In absolute alignment, floor and ceiling tiles are aligned to the
grid itself (thus allowing you to align them neatly to the usual
rectangular floors).
In relative alignment mode, the tiles align themselves to the
first wall (set with [Alt]-[F] in 2D mode). This is very nice for
odd-shaped, rotated, or moving sectors.
6.2.3.16  O
Changes the wall texture orientation. A wall texture can start
either on the floor or on the ceiling. This is particularily
useful when building windows (make sure that the wall above and
below looks ok) or DOOM-type doors (make sure the texture moves
with the door).
6.2.3.17  B
Toggle the 'block movement' flag on a wall. Usually used for
glass panes, force fields or sector boundaries, as a one-sided
wall always blocks movement anyway.
6.2.3.18  #Shift-B#
Block only one side of a two-sided wall. This enables the player
to walk through the wall in one direction only.
6.2.3.19  T
Toggle the transparency flag on a wall or sprite.
There are three stages: slightly transparent, very transparent,
and opaque (normal). Of course, this only works on two-sided
walls.
Try it on monsters to create ghosts - pity it doesn't work on
players >;)
6.2.3.20  M
Point at the floor below a sector edge and press [M] to create a
maskable wall. In effect, you're giving the sector edge a two-
sided wall which is most often used in creating glass panes.
6.2.3.21  Shift-M
Make a maskable wall just like with [M], but only on one side.
This way you're able to create walls where you can only see
through in one direction, for example.
A window created this way will only show you the glass texture
from one side. And you won't be able to shoot through it from the
wrong side, either: it will be marked with floating bullet-holes,
instead.
When shattering it from the visible side, the bullet holes stay
in the air...
6.2.3.22  1
Create 1 one-way wall. Only possible on a two-sided line, this
command will create a wall which only has a texture on one side.
Monsters can see through this wall and will attack you, walking
through the wall (if they're allowed to).
6.2.3.23  2
If a wall consists of two sections (a top and a bottom one, like
you find with windows), pressing [2] will allow you to separately
edit the upper and lower texture.
6.2.3.24  H
Toggles the hitscan bit on a two-sided wall. If this bit is set
(default is off), the wall will react to bullets (shattering if
it is glass, showing bullet holes if it is normal).
If you set the hitscan bit on a sprite, the sprite will block
bullets even if it doesn't block you. However, turning off the
hitscan bit on a destructable sprite (like a bottle) has no
effect.
6.2.3.25  #TAB#
This remembers the current object (sprite or texture) and places
it in the buffer.
According to the Build documentation, it not only remembers the
tile number, shade and texture setup, but also the cstat (a bunch
of info about the tile, like tags, etc).
Some text appears, showing you what you have just selected: name,
lo- and hi-tag, number of times used in map (only if you point at
it), and MEM (amount of low RAM free?). If the graphic toggle is
on (use [']-[G]), an image of the selected texture is shown as
well.
Press [TAB] again on the same texture to turn that display off.
Use one of the keys below to paste the object back. Note that you
have to use the big [Enter] key, not the one at the numeric
keypad:
6.2.3.26  Enter
Copy the selected object to whatever you're currently pointing at
(meaning you can replace sprites and textures this way). Shade
and (for textures) the x-repeat values are copied as well, while
the y-repeat is modified to make the pixels square.
6.2.3.27  Ctrl-Enter
Copies the selected texture to all walls in a closed loop.
Use this to change the appearance of a whole room at once.
6.2.3.28  Shift-Enter
Copy the shade value only.
6.2.3.29  Ctrl-Shift-Enter
This function auto-shades a sector:
Make one of the walls the lightest shade and another one the
darkest one. Point at the lightest wall and press
[Ctrl]-[Shift]-[Enter] - all walls on the loop will be smoothly
shaded.
Somehow, this function never worked very well for me: wall
shading is very harsh and non-smooth, so I usually shade by hand.
6.2.3.30  '-ENTER
Pressing ['] and [Enter] copies the tile only, leaving everything
else (especially the shade!) as it is.
6.2.3.31  '-R
Toggles the FPS display on and off.
This is only good for taking screenshots, as the FPS is one of
the most important considerations in level design.
6.2.3.32  '-D
This is supposed to change the skill mode, but on my system only
the text '(something something) not found' flashes up and nothing
changes - skill mode stays at 1.
6.2.3.33  '-W
This toggles the sprite display between several modes:
Display all Sprites
No Effectors (Sprites 1..10 are not displayed)
No Actors (No players or monsters are shown)
None (No effectors or actors shown)
This is nice if you want to do some changes to the map without
being bothered by monster images.
6.2.3.34  '-G
This toggles the display of the selected texture (via [TAB]) on
and off.
6.2.3.35  '-Y
## Listed as 'Toggle purple background', I haven't found out what
it does yet. I _thought_ it had something to do with displaying
the transparent sprite color, but...
6.2.3.36  '-T
Allows you to change the lo-tag of the selected object.
6.2.3.37  '-H
Allows you to change the hi-tag of the selected object.
6.2.3.38  '-S
Allows you to directly type a shade value for the selected
object.
Very nice for setting the shade on goodies to 128 (= -128, as 127
is max. shade and you can't enter negative numbers) to make them
very visible from far away.
6.2.3.39  '-V
Changes the visibility of a sector (how fast it darkens with
distance).
6.2.3.40  '-C
Changes the global shade of a sector to the shade of the object
currently selected.
6.2.3.41  #'-Del#
Sets the cstat to 0. Cstat is the variable containing all info
about the object (shade, tags, etc).
6.2.3.42  Alt+-
Changes the visibility of the current sector.
6.2.3.43  CtrlAlt+-
Changes the global visibility for the whole map (careful with
this!).
6.2.3.44  F1
Shows a short help menu, listing the less-commonly used commands.
Pres [F1] to remove it again.
6.2.3.45  F2
Increments the players x-position by one unit. Seems like a
useless feature and my guess is that [F1] decremented the players
position before 3DRealms turned it into a help button.
6.2.3.46  F3
Decrements the players y-position by one unit.
6.2.3.47  F4
Increments the players y-position by one unit.
6.2.3.48  F5
Nukes the 3D display, forcing you back to 2D.
Strange function indeed :)
My guess is that the system tries to display the same text it
does in 2D mode and messes up the graphics along the way.
6.2.3.49  F6
Same as [F5].
6.2.3.50  F7
Same as [F5].
6.2.3.51  F8
Same as [F5].
6.2.3.52  F9
Rotates the players view left a bit.
6.2.3.53  F10
Rotates the players view right a bit.
6.2.3.54  F11
Changes the gamma correction (makes the screen lighter).
This is not terribly useful, as the settings aren't saved and the
gamma seems to reset when moving between some sectors.
6.2.3.55  F12
Takes a .PCX screen shot.




                            Chapter 7
                            How to...
This chapter is intended as a cookbook: how to create different
effects.
## If you find out something new, please let me know and I'll add
it here.
7.1  Extracting the original maps
It's a very good idea to extract the original maps for Duke3D and
see how 3DRealms did things. It has the additional effect of
making you realize just how much work is in these levels and how
much you'll have to work to achieve anything similar :)
The command
KEXTRACT DUKE3D.GRP *.MAP
will extract all map files from Duke's group file.
7.2  Abbreviations
In order to easily describe tags, sector effectors and the like,
I use some abbreviations:
Bomb           Also called C9, it's a sprite with the tile number
               1247 (yellow gas bottle), x-shrunken as narrow as
               possible. It is intangible to the player, but
               blows up when triggered.
[x,y]          The tags of a sprite or wall: x is the hi-tag, y
               the lo-tag.
               Example: [0,34] describes a hi-tag of 0 and a lo-
               tag of 34.
(x)            Tile number (refers to sprites, too).
               Example: (621) is the camera sprite.
Controller     A special sprite (tile numbers 1..10) which is not
               shown at game time and controls the environment in
               some way:
S              Sector effector
               Example: S [100,256] means to insert a Sector
               effector with the hi-tag 100 and the lo-tag 256.
A              Activator
T              Touchplate
L              Locked activator
M              Music and SFX
L+             Locator
C              Cycler
D              Master switch
R              Respawn
Sp             Speed
7.3  Player starting points
Player starting points are marked by sprite number 1405.
You'll need to place at least 7 players (the player start
position is automatically included, so you don't have to set a
sprite there specifically for it).
Dukematch starting points have no tags.
Coop starting points have the tag [0,1].
7.3.1  Notes
    *  As far as I know, you can place any amount of dukematch
       starting points.
       ## Anybody knows what happens with too many coop starting
       points?
7.4  Glass panes
Glass panes are simply two-sided walls maskable walls (created by
pointing on the floor in front of a two-sided line and pressing
[M]) with the 'block movement' [B] and 'hitscan' [H] flags set.
The texture has to be glass (503).
7.4.1  Notes
    *  To create unbreakable glass, simply use a glass sprite
       instead of the glass texture.
7.5  Invisible forcefield
Often, you'll want to place an invisible forcefield someplace (it
ripples if hit, but doesn't damage the player).
Simply build a glass pane, using sprite 230 instead. This tile
can be made so transparent/dark as to be completely invisible.
7.6  Doorways
A doorway is nothing but a sector connecting two other sectors.
Simply lower the roof a bit, align the textures (use [O] and [.])
and you're ready to go.
7.6.1  Notes
    *  You can make arching doorways by splitting the doorway
       into several sectors and tilting the roof or even the
       floor.
7.7  Windows
A window is simply a sector with a raised floor and a lowered
roof which has been inserted into a normal wall.
7.7.1  Setup
Follow these steps to insert a window into a standard wall (made
up of one-sided walls):
    *  We'll assume the wall goes from east to west.
    *  In 2D mode, split each of the lines making up the wall
       twice where you want the window to be, forming a rectangle
       of points.
    *  Connect these rectangles with lines; a new sector will be
       created. This is your window sector.
    *  Switch to 3D mode. Raise the floor a bit and lower the
       roof of the window sector until the window looks about
       right.
    *  If you want, insert a glass pane in the window sector.
       It'll look especially good if you split the window sector,
       adding the glass in the exact middle of the window sector
       instead of on the edge.
    *  Align the textures. You can auto-align by pointing to the
       left-most wall and pressing [.].
7.7.2  Notes
    *  Don't add the glass pane to the very outside of the window
       as the wall texture above it will mess up when the glass
       is shot. Place the glass on its very own line inside the
       window sector.
7.8  Air ducts
Air ducts are just flat sprites in front of holes in the wall.
They will break automatically.
7.8.1  Notes
    *  Useful sprites are 407 (rotating fan) and 595 (metal
       grate).
    *  Make the duct itself nice and narrow, about as wide as the
       grid at maximum size (1024 units or 256 pixels).
    *  For the duct inside, you can use the textures 342 and 343.
       Use 341 for a hole broken in the duct.
    *  If the above textures are used, the air duct sound is
       created automatically.
    *  If the duct is only visible from one side, make sure the
       sprite is two-sided by pointing at it in 3D mode and
       pressing [1].
7.9  Angled surfaces
To tilt a sector surface (roof or ceiling), point at it and press
the '[' and ']' keys.
7.9.1  Notes
    *  The surfaces will always use the first line of the sector
       as hinge. To set the first line, point at it in 2D mode
       and press Alt-[F].
    *  To undo your changes, press [/].
    *  Use RightShift-'[' or ']' for small changes and
       LeftShift-'[' or ']' for very small changes.
7.10  Secret places
To mark a sector as secret, just tag it [0,32767]. A player will
be credited for finding it as soon as the sector is entered.
7.11  Multiplayer sprites
To make an object appear only in multiplayer (coop or DM) play,
use Alt-P to give it a palette of 1.
7.12  Level-end button
Also called the nukebutton, this sprite (142) is used to end the
level.
Tag it [0,x], where x can be:
32767          End level, go to status screen and then on to the
               next level.
1..11          End level, go to level 1..11
               (eg. [0,10] would take the player to the (secret)
               level 10).
7.12.1  Notes
    *  To get the secret-level color on the nukebutton, set its
       palette to 14.
7.13  Level-end sector
Tag a sector [0,65535] to end the level when a player enters this
sector.
7.14  Cameras
You can place cameras around the map, which will relay an image
to one or more viewscreens.
7.14.1  Setup
The security network consists of three objects:
Channels       A channel transports the video data from the
               camera(s) to the viewscreens. It is just a number.
Cameras        (621) [Mobility,Channel]
               They have to be sprites, and can be placed
               anywhere in a room, facing in any direction. Using
               the hi-tag, you can even set the camera mobility:
               higher numbers allow the camera to move through a
               wider arc.
               Some example numbers:
               0: Immobile
               128: Very jerky (too short) - not recommended
               256: Normal panning
Viewscreens    (502) [Channel,0]
               Viewscreens have to be sprites, too.
7.14.2  Notes
    *  The camera shade controls the down-angle: 0 is horizontal,
       -80 is most common, -128 is maximum down.
    *  If several cameras share a channel, the viewscreen
       connected to this channel can cycle through all connected
       camera views.
    *  It is advisable to hide the viewscreen behind a harmless
       forcefield (230), to cause the well-known purple circles
       when it's being shot at.
    *  Mobile cameras shouldn't be flipped, as the animation
       isn't flipped as well.
    *  The angle of the camera should point into the middle of
       the desired panning arc. The arc angle is easily
       calculated: 90 degrees = 512.
    *  Don't place the cameras too close to the walls.
7.15  Demo cameras
Demo cameras can be placed anywhere and will automatically film
duke from the outside when recording a demo. Neat.
7.15.1  Setup
The camera is just an S[ViewDistance,27]. Don't use the sprite
itself.
7.15.2  Notes
A ViewDistance of 7000 works fine.
7.16  User-controlled force fields
A user-controlled force field is a standard force field which can
be toggled on and off with a switch.
7.16.1  Setup
    *  Build a standard forcefield somewhere (masked wall, tile
       number 663), but don't set the hittable or blocking flags.
       Tag the forcefield line [0,Channel].
    *  Place an S[Channel,12], Palette 2, on each side of the
       force field.
    *  Place a switch anywhere with tags [0,Channel].
7.16.2  Notes
You can use a touchplate effector as well to toggle the force
field.
7.17  Blastable walls (user control)
Such walls can be blown up by detonating something close to them
(a pipebomb, RPG, etc).
7.17.1  Setup
    *  First build the wall with the hole already in it (usually
       consisting of several sectors with angled floors and
       ceilings).
    *  In each of these sectors, place an S [Channel,13].
       On the wall to be blasted, place a (possible semi-
       transparent) crack [Channel,0] (546-549), facing the
       player. Fire extinguishers (916) can be used, too.
    *  If you want, place bombs on both sides of the wall for
       realism [Channel,DelayUntilExplosion]. A delay of 8 is
       very short, while 2000 takes ages before it explodes.
7.17.2  Notes
    *  A wall with a crack on each side will blow ok, but the
       other crack will remain hanging in mid-air.
    *  Blastable walls retain no bullet holes until they blow.
    *  Here the first line of a sector is important again - the
       floor and ceiling are moved together until the first wall
       sides touch. So if your wall shows some triangular holes,
       this is where to look: make sure your first walls (set
       with Alt-F4) are the lowest ones.
    *  If you give the crack a palette number of 1, it can only
       be blown in multiplayer games.
    *  It might also be a good idea to create a wall with a
       nicely blasted hole in it and cover it with a solid wall,
       thin as paper. Then blast this thin wall completely away,
       revealing the hole - this is often easier than laborously
       building a hole made up of dozens of sectors, each with
       its own sector effector...
7.17.3  Tips
    *  Use texture 852 (blasted concrete) on the inside of the
       hole.
    *  Carefully align the wall textures. Especially the sideways
       alignment is important, as the wall looks real bad if this
       is not done properly - use the [.] key.
7.18  Blastable walls (triggered)
The work just like user-controlled blastable walls, except that
they can only be blown by program control, not by the user.
They are triggered by a T [0,Channel], and you can even add a
time-delay from the moment T is activated to the explosion of the
wall.
7.18.1  Setup
    *  First build the hole just as outlined above.
       However, you won't need to place a crack.
    *  In just one of the hole sectors, add a D [Delay,Channel].
       Delay ranges from 0 to 255, 255 being longest.
    *  Place at least a bomb [Channel, Delay] in the same sector
       as D. Delay ranges from 8 (blow right away) to over 2000
       (take ages, can be used for nasty traps) with typical
       values being 8,16 or 32.
       For realism, place some of these on both sides of the wall
       as well.
    *  Place a T [0,Channel] in any sector. It will go off as
       soon as the player enters the sector.
7.18.2  Notes
    *  You can blow several walls open simultaneously, but don't
       use different delays - the world shakes, but the holes
       only appear when the highest-numbered D blows.
7.19  Conveyor Belts
Conveyor belts are sectors which will transport any sprite on
them in a certain direction.
7.19.1  Setup
    *  S[0,24] in the conveyor belt sector, facing in the
       direction the belt should move.
    *  Optionally, add a Sp[0,BeltSpeed] to change the belts
       speed.
7.19.2  Notes
    *  You might have to rotate the sectors floor to make it look
       right - I've had a belt going one way and the texture
       scrolling another way...
    *  To create running water, just set the sector tag to [0,1].
    *  Typical conveyor belt tile is (1156).
7.20  Mirrors
Mirrors are interesting in that they require a rather large room
behind the mirror (check E1L1 for example). This room must be
able to contain any part of the room visible in the mirror,
otherwise you'll get graphics glitches.
A mirror is in effect a one-sided wall (created by pointing on
the floor in front of a two-sided wall and pressing [1]) with the
texture 560.
Finally, point at it and press [B] and [H] to set the 'block
movement' and 'hittable' flags.
7.20.1  #Notes#
    *  You can make the mirror unbreakable by not setting the
       'block movement' and 'hittable' flags. It will still be
       broken by an explosion close to it, though.
    *  To have Duke say 'Damn I'm looking good' when pressing on
       the mirror, give it a lotag of 252 while in 3D mode.
    *  Mirrors have a range limit - if they're viewed from too
       far away, they'll default to showing a parallaxed sky
       texture.
    *  If the 'mirror room' is too small, weird graphic glitches
       can occur.
    *  Also, the 'mirror room' has to have the same floor/ceiling
       height as the room being viewed - you'll get glitches when
       jumping/ducking if it isn't.
    *  If you set clipping and walk through the mirror, you:
           -  will die if you leave the mirror room,
           -  get stuck if you deactivate clipping, and
           -  notice graphic glitches underneath the mirror
              (viewed from inside).
7.21  Garbage cans
Garbage cans (1232) can spawn something else when shot - just set
its tag to [0,ObjectToSpawn]. You can't spawn every possible
object though (I tried toilets :), but things like shotgun ammo
(49) or, indeed, other cans work well.
7.21.1  Notes
    *  Rubbercans (1062) can't be made to spawn something, they
       always create rats. Although, of course, this can be
       changed in the GAME.CON file (line 204).
    *  A garbage can can spawn a garbage can :)
       This way you can also see that the default sprite size is
       too large: the spawned cans are quite a bit smaller than
       the original ones.
7.22  Revenge of the dancers
When a dancer is shot, you can make an enemy appear. Just set the
dancer sprite to [Channel,0] and place one or more R
[SpriteToAppear,Channel] anywhere.
7.22.1  Notes
    *  You can make lots of things appear, I've even had success
       with burning barrels (1240).
    *  If you try to spawn an invalid object (like another dancer
       or a sign), the respawn spark appears (including the
       sound), but nothing warps in. This might be used to faze
       players.
    *  A dancer can spawn a weapon, preferably in the same place
       as the dancer. This makes it look as if the woman was
       armed (wonder where she hid that Devastator).
       Personally, I don't advise this, though: some people are
       strange enough to play outside Adult Mode and thus never
       see the dancers. Others again (like myself) never shoot
       the dancers (I mean, come on, shooting a woman?).
7.23  Buzzing phones
To have a phone buzz if the player tries to activate it, place a
switch (132) on the phone (967), tag it [174,278] and rotate it
away from the player to make it invisible.
7.24  Light switches
Light switches turn the light in one or more sectors on and off
('on' is the brightness of the S, 'off' is the original light
level).
7.24.1  Setup
    *  Place a switch (eg 164) [0,Channel] sprite anywhere.
    *  The sectors to light up need an S [Channel,12].
7.24.2  Notes
    *  You can use several switches on the same channel, they
       operate simultaneously.
    *  Switches work just fine if used on their own - perhaps
       this could be used by players to communicate?
    *  The hitag of the switch controls the sound the switch
       makes on activation. 0 is the normal 'click', but try the
       others...
7.25  Permanently rotating sector (gears)
You can set up a sector to keep rotating around a midpoint, like
the gears in E1L3.
7.25.1  #Setup#
First, build your sector. If the floor or roof is to be visible,
make sure that you've set the texture alignment to 'relative'
(use [R]) so it rotates with the sector.
You'll need these tags:
S              [Channel,0]
               Defines a rotating sector. Make sure it points
               down.
S              [Channel,1]
               Defines the sector rotating axis. The direction
               defines the rotation: up is clockwise, down is
               counterclockwise.
Sp             [0,Speed]
               Default rotation is rather fast, so you might want
               to add an Sp[0,64] for slower movement.
M              [HearingDistance,SoundNumber]
               The distance obviously depends on the size of your
               rotating sector - try 8000. Good SoundNumbers to
               use are 87 (grinding gears) or 89 (machine at
               work).
7.25.2  Notes
    *  The two S must be on top of each other, as the sector will
       behave strangely otherwise. I've had gears rotating around
       an arbitrary midpoint causing a HOM when moving over you.
    *  M is usually placed on the pivot point, too.
    *  A gear will pick you up if it sweeps towards you. To make
       pushing/squashing gears, raise the floor of the rotating
       sector all the way up to the ceiling.
7.26  Doors
Ignoring simple doorways, real doors come in several flavours,
consisting of one or more moving sectors, sector tags and some
controllers.
Note that all controllers must be inside the door sector(s), not
right on the edge (turn off grid locking ond place it real close
to the edge, if necessary).
7.26.1  Standard hinged
A hinged door opens by rotating 90 degrees sideways.
The door sector [0,23] contains three special sprites:
S              [Channel,11]
               The location of the sector effector defines the
               rotation axis, the direction the rotation
               direction:
               up
               counterclockwise turn
               down
               clockwise turn
Sp             [0,Speed]
               Speed ranges from 8 (very slow) to over 1000 (real
               fast). ## I think you can leave this away for a
               default speed, but I'm not sure about this.
M              [Sound2,Sound1]
               Sound1 is the sound number to play when the door
               is opened, Sound2 when it's closed. Usually, these
               sounds will be the same.
7.26.1.1  Notes
    *  Take care to set the ceiling texture to 'not relative'
       using [R], otherwise it'll rotate with the door.
    *  Make sure that the door doesn't rotate out of its original
       sector (for example, into a room with a higher ceiling) as
       the graphics will mess up. Thus the sector containing the
       door sector has to be large enough.
    *  You can open/close several doors simultaneously (building
       double doors, for example) by allocating each door the
       same channel.
    *  Do not attatch any part of the door to any other sector,
       the whole thing will twist (creating interesting effects,
       btw).
    *  Turn off grid locking [L] to position the S as close as
       possible to the edge of the door.
7.26.2  DOOM-type door, remote control
A DOOM-type door is actually a thin sector of its own. It closes
by lowering its ceiling down onto the floor.
This door opens by remote control (a switch) by raising the
ceiling from the floor, delays a moment, and lowers the ceiling
onto the floor again, closing the passageway.
7.26.2.1  Setup
    *  Switches (132) [0,Channel] can be placed anywhere. Must be
       sprites.
    *  The door sector [0,20] contains 4 controllers:
       M  [ClosedSound,MovingSound] (eg 0,167)
       Sp [0,Speed] (eg 0,88)
       S  [OpenDelayTime,Channel]
       A  [0,Channel]
7.26.2.2  Notes
    *  Switches can be hidden by letting the sprites face the
       wall and adding another sprite facing the player on top of
       it (as done in the toilet of E1L2 with the blowdryer).
    *  If the door is half-open at game start, it will close
       automatically.
    *  Don't make OpenDelayTime (the time to wait after closing
       the door again) too short! A door with a value of 128 will
       close real quick. If the time passes before the door has
       fully opened, it will malfunction (could be used by
       design, though).
    *  Make sure the orientation of the door texture is set right
       (use [O]) as the door will otherwise appear to grow
       instead or rising properly.
7.26.3  DOOM-type door, local control
These work in the exact same way as the remote-controlled
version, but you don't need a switch to open them - just press on
the door itself.
Simply build the door as above, leaving the S and A controllers
out.
7.26.4  Sliding sideways
While most doors simply move the floor or ceiling (aka DOOM-type
doors) or moving/rotating a sector, the sliding door is made up
of one-sided walls which are shrunk by a sector wrapped around
them.
A perfect example can be found in E1L3, just to the right of your
starting point.
Since I found that I'm no good at explaining this in words, allow
me to use some cheapo ASCII graphics to guide you through a
step-by-step design :)
We have a doorway where we want to insert a sliding door. It
shall slide into the left wall:
---------------*................*-----------------
               |                |
               |                |    Key: * Point
               |                |         . 2-sided wall
               |                |         | 1-sided wall
               |                |
               |                |
               |                |
---------------*................*-----------------
We start by adding a sector inside the doorway sector:
---------------*................*-----------------
               |                |
               *...............*|
               |               .|
               |               .|
               |               .|
               *...............*|
               |                |
---------------*................*-----------------
Note that the new sector goes nearly all the way across. I
usually try to avoid overlaying unrelated lines, as they can
cause ugly graphics glitches.
Give the new sector a tag of [0,25].
Next we simply extend the inner part of the left wall across,
forming the door itself:
---------------*................*-----------------
               |                |
            P1 *...............*|
            P2 *-------------\ .|
                              *.|
            P3 *-------------/ .|
            P4 *...............*|
               |                |
---------------*................*-----------------
The door has a triangular endpoint, you'll see why as we shift
points 2 and 3 (marked as P2 and P3 above) onto the points 1 and
4 (marked as P1 and P4 in the sketch):
---------------*................*-----------------
               | L1             |
         P1/P2 *------------ ..*|
                             \ .|
                              *.|
                             / .|
         P3/P4 *------------...*|
               | L2             |
---------------*................*-----------------
And here's why it's triangular: so we still see a bit of the
sector below; we now insert some sector effectors into it:
    *  S[Channel,15]
    *  M[DoneSound,MovingSound]
    *  Sp[0,DistanceToOpen]
If you open the door now, the lines L1 and L2 (on the left) will
twist backwards. To avoid this, move P1/P2 and P3/P4 a bit to the
left, insert a point in L1 and L2 and move this point down (or in
P2s case, up) onto the line so you get this:
---------------*................*-----------------
               | L1             |
      P1/P2 *--*------------ ..*|
                             \ .|
                              *.|
                             / .|
      P3/P4 *--*------------...*|
               | L2             |
---------------*................*-----------------
Voila! Press against the door to open it.
Sorry about the ugly sketches, but the above is a lot easier to
understand than the gamboozle that was here in v0.4 of the FAQ :)
7.26.4.1  Notes
    *  A typical sliding door texture is 447.
    *  Changing the heading of the sector effector produces
       interesting (and usually, buggy) results.
7.26.5  Star Trek door
This door slides sideways, compressing its texture as it does so.
The door is activated by pressing against it.
7.26.5.1  Setup
This door is very similar to the sliding door.
Let's assume your doorway goes from north to south and the star
trek door thus slides east/west:
* Create the sector containing the doorway.
* Using horizontal lines, split this sector into three sectors.
* Extend the doorway sectors walls into the middle sector of the
doorway, forming the doors themselves. Let the doors (almost)
meet in the middle.
* Now tag the middle sector: [0,9]
* Add two sprites to the middle sector:
     M[0,Sound] (eg. [0,259])
     Sp[0,OpeningSpeed] (eg. [0,64])
And that's all!
7.26.5.2  Notes
    *  If you extend the middle sector straight to the east and
       west (like the sliding door), the door texture will be
       longer although part of it will be hidden. This will make
       sure that you can hardly see the compressing effect while
       the door opens.
    *  The door sound is played twice (bug). Thus my Star trek
       doors are always totally silent.
7.26.6  Four-way door
These doors open in both directions (up/down and left/right) at
the same time when activated.
Simply build a star trek as above, but let the floor and ceiling
of the middle sector meet in the middle and give the middle
sector a tag of [0,26].
These doors look very nice indeed :)
7.26.6.1  Notes
    *  It is possible to get these doors to misbehave: try
       triggering a low, long door again while it is already
       opening. The roof will start to close again while the
       walls are still opening.
       Now the door will be difficult to navigate: as the roof
       opens, the walls close and vise versa.
       Of course, this can be fixed by triggering the door again
       in quick succession, but it interesting to know.
    *  The above bug can be used for special doors - simply
       design the walls to be open at the start, and the door
       will react as above.
       You can get through it if you run, though.
7.26.7  Clamshell doors
Clamshell doors split horizontally when opening - the top half
disappears into the ceiling, the bottom half into the floor.
Just build a DOOM-style door, but tag the door sector [0,22] and
make sure the floor and ceiling meet in the middle.
7.26.8  Teeth doors
## I've found some info on building teeth doors, but I didn't get
them to work. The BUILD docs say that teeth doors weren't tested
in the game and might make trouble in multi-play.
7.26.9  Auto-closing doors
Simply add an S[DelayTime,10] in the door to auto-close.
7.26.10  Switch-controlled doors
Every door can be opened via a switch as well:
Simply add a switch somewhere and tag it [ActivationSound,
Channel].
Inside the door, place two effectors:
S  [OpenDelayTime,Channel]
A  [0,Channel]
7.26.10.1  Notes
You can also use sector tags (T[0,Channel]) to open a door when
the player enters a sector.
7.27  Shrinking sector (remote control)
This will shrink a sector (for example a curtain) on the flick of
a switch. Pressing the switch again will regrow the sector.
7.27.1  Setup
    *  Place one or more switches anywhere
       [ActivationSound,Channel].
    *  Inside the sector to shrink [0,27], place three
       controllers:
       S  [Channel,20] facing the movement direction.
       A  [0,Channel]
       Sp [0,OpeningDistance]
7.27.2  Notes
    *  Don't open the sector too wide - it will move through the
       wall, creating ugly HOM effects.
    *  Have a look at the floor if a hanging sector moves - it
       looks strange. Use [R] to get rid of the effect.
7.28  Spawning monsters
You can have monsters appear anywhere when the player walks onto
a certain sector.
7.28.1  Setup
    *  Place a T[0,Channel] in the activating sector.
    *  Place one or more R[TileToSpawn,Channel] anywhere.
7.28.2  Notes
    *  The pig cop has TileToSpawn of 2000.
    *  I don't know what T's hitag means. Perhaps the delay time?
       ##
    *  You can also use a switch with a tag of [0,Channel] to
       spawn monsters.
    *  You can spawn other things than just monsters (like
       weapons or medipacks).
7.29  Difficulty settings
To have an object or monster only appear in a certain difficulty
level, just give it a lo-tag:
Lotag     Appears in difficulty level
0         1,2,3,4
1         1,2,3,4
2         2,3,4
3         3,4
4         4
7.30  Automatic cannon
An automatic cannon will fire an object every 5 seconds in a
certain direction as soon as it's been activated by a
masterswitch.
7.30.1  Setup
Place an S with [0,36], marking the shot spawn shot. Aim it
whereever you please.
Add an Sp[0,ObjectNumber] in the same sector. ObjectNumber is the
tile number of the object to fire from S.
Add a D[0,TriggerChannel] in the same sector. You can hook, for
example, a T[0,TriggerChannel] anywhere to start the gun up.
7.30.2  Notes
    *  I've found the following objects to be possible ammo:
       1360          Psionic blast.
                     Aimed slightly down, and has a limited
                     range.
       1625          Laser.
       1636          Spit.
                     Aimed slightly down, and has a very limited
                     range. Makes no noise at all.
       1641          Freeze blast.
                     Always aimed at player, but has no effect on
                     him. Looks cool, though :)
       1650          Mortar.
                     The mortar ball drops down at a steep angle
                     and explodes on impact.
       2556          Shrink ray.
       2605          RPG.
                     Will always aim at player, regardless of aim
                     or LOS.
7.31  Lethal sectors
To make a sector instantly lethal to the player (even in God
mode), parallax BIGORBIT as the ceiling.
7.32  Earthquakes
Earthquakes have three effects:
    *  The screen shakes for about 4 seconds and the earthquake
       sound is played.
    *  Sectors can tilt.
    *  All SE[0,33] on the whole map spawn rocks and debris.
7.32.1  Setup
Place an S[0,2] on every sector to tilt.
Place an D[0,TriggerChannel] in the same sector.
If you want, place S[0,33] anywhere on the map.
Earthquakes have to be triggered, for example with a
T[0,TriggerChannel] anywhere.
7.32.2  Notes
    *  To tilt sectors, they have to be tilted on the map by a
       maximum of 4 clicks (you can tilt more, but it won't have
       any effect). Such sectors are shown flat at startup.
    *  You can put S[0,33] anywhere - they are triggered by any
       earthquake on the map. Try putting them slightly under the
       floor, or high in the air for special effects.
    *  The build docs claim that a sector will move in the S[0,2]
       direction during an earthquake, but I've never seen that.
7.33  Elevators
Elevators come in two kinds: those where just the floor moves
(open elevator) and those where the ceiling moves as well (closed
elevator).
Both rely totally on sector tags: except for the sound, no
controllers are used.
7.33.1  Setup
An elevator is simply a sector that moves from the nearest low
floor to the nearest high floor. Thus the only important thing
really is setting the floor heights of the adjacent sectors
properly.
Tag the sector according to the desired elevator type:
[0,16]         Open elevator
[0,18]         Closed elevator
7.33.2  Notes
    *  You can set an elevator at the top or the bottom to start
       with, it doesn't make a difference. You can even set it at
       half-way.
    *  Elevators must be the right size. If the elevator seems to
       go on forever, the ceiling of the first room is too high -
       try fiddling with this or pressing [SpaceBar] in the game
       to reverse the elevators direction.
    *  There are two more sector tags available to elevators:
       [0,17] (open elevator) and [0,19] (closed elevator).
       They're supposed to control the starting position of the
       elevator, but _you_ do that already simply by placing the
       elevator at the desired starting height.
       ## Anybody know what's going on?
7.34  Remote-controlled Elevators
Remote-controlled elevators are just like ordinary elevators,
except that they're operated via a switch somewhere (or several
switches, of course).
7.34.1  Setup
To turn an ordinary elevator into a remote-controlled one, just
add an A[Channel,0] in the elevator sector and place switches
tagged [Channel,0] anywhere.
7.35  #Teleporters#
Teleporters move players instantly between any two points. Beware
that they have quite a few quirks, as they are tailor-made for
3DRealms levels ;)
7.35.1  #Setup#
Teleporters are not sectors, just sector effectors.
S [Channel,7], facing is the same the arriving player should
face.
7.35.2  #Notes#
    *  To make a one-way teleporter, give the landing sector a
       hightag of anything except 0,1 or 2. 3 seems to work fine.
       Alternatively, you could make the destination sector a
       square with a side-length of less than 64.
    *  A single teleporter without a destination will kill the
       player.
    *  If the S is off the ground (6 clicks height seems to work
       well), the teleporter is silent - useful for transporting
       players around the map without telling them about it (see
       E1L1, falling down the airduct, as an example).
    *  When using more than two teleporters on the same channel,
       you always land on the teleporter with the lowest sprite
       number. If teleporting from the lowest sprite number, you
       end up on the next-highest one.
    *  Teleporters don't work if you fly over them.
    *  It seems that off-the-ground teleporters only work if
       Dukes waist passes through them. Feel free to experiment
       :)
    *  Don't create a teleport sector with two of the walls being
       masked, blocked and hitable. It messes up.
    *  ## I've had strange effects when firing rockets into two
       teleporters set up in a line - the rocket reappeared
       _behind_ me, angled slightly to the right (thankfully :)
       Any ideas?
7.36  Swimming pools
Swimming pools allow the player to jump into the water and dive
around under the water surface.
7.36.1  Setup
A swimming pools consists of at least two sectors: one is the
room above the water, one is the room below it. An teleporter
secretly moves the player (and any other objects, like pipebombs)
between the levels as required.
The sectors sharing the water surface have to be the exact same
size and shape (of course).
The teleporter connecting them needs a unique channel number.
Above-water sector
               [0,1]
               S [Channel,7]
Below-water sector
               [0,2]
               S [Channel,7]
7.36.2  Notes
    *  The floor/ceiling types for the water surface don't matter
       - all objects will always be transported correctly, water
       will splash, etc.
       This allows you to generate hidden traps, mud, etc.
    *  If you split a pool into several sectors (for example in
       order to create a pool with a shallow and a deep end), you
       have to split the above-water sector as well and add a
       sector effector in each new sector, each with it's own
       channel.
    *  Interesting things happen if the S is not exactly on the
       floor (use [Ctrl]-[PgDn]).
    *  The S above and below the water must be in the exact same
       relative position and face in the same direction.
    *  Don't place a toilet underwater. While Duke can use it, he
       won't be able to surface anymore afterwards (bug).
    *  Beware of sloping pool floors. The SE has to be on the
       lowest point, and I don't know how stable it works.
7.36.3  Tips
    *  Nothing to stop you from adding sector to the below-water
       sector, forming an underwater tunnel leading somewhere
       else; perhaps even surfacing in a different pool.
7.37  The Grapplers
Grapplers are hooks descending from the ceiling which will pick
up objects (including players), transport them in a straight line
somewhere else and drop them off again.
7.37.1  Setup
    *  Add a crane pole [Channel,0] (1221) at the place where
       something is to be picked up. Place it in its own (small)
       sector, as the crane will pick up anything that moves into
       this sector.
    *  Place the crane itself [Channel,0] (1222) at the
       destination point.
7.37.2  Tips
    *  Grapplers don't pick up everything - I'm still fiddling
       around to try what is actually transported. Players are,
       as are monster corpses.
    *  As the crane move across the ciling, it's a good idea to
       place some kind of raised texture there (353 works well).
7.38  Overlapping sectors
While DOOM was 2.5D because of its strictly 2D map, Duke3D is
2.75D: while the data structure allows you to design several
sectors over each other, the graphic engine can't display more
than one ceiling and one floor over each other at a time.
This means you can't:
    *  Build a real bridge.
    *  Build two windows over each other.
    *  Build a house missing a wall, showing several floors over
       each other.
However, you can:
    *  Build a house where you can actually walk on the roof (as
       long as the house doesn't have windows).
    *  Build corridors crossing over and under each other.
    *  Build a house with two stories above each other, as long
       as the windows are on opposite sides of the house (and
       facing into different sectors).
Building overlapping sector is easy: Just draw the first sector,
move floor and ceiling where you want them, then draw another
sector overlapping the first one. Try it!
7.38.1  Notes
    *  Two overlapping sectors cannot share a double-sided wall,
       but you can connect them with a separate sector (for
       example, a sloping tunnel or an elevator).
    *  Don't use overlapping sectors unless you have to! Editing
       them is very little fun indeed, as the 2D editor has
       trouble differentating between the sectors and it's hard
       joining sectors, etc.
    *  Note that you can build real 3D floors (walkable above and
       below) by using sprites rotated flat as floor (set the
       'blocking' flag). It's hard work, though - see the section
       on bridges.
    *  Be careful when building overlapping sectors - monsters
       can get confused if there's somebody else in the
       overlapping room, and the sound will come from there as
       well. Use it sparingly.
7.39  Hiding switches
To hide a switch, simply turn its facing towards the wall.
It is advisable to place a different sprite facing the player
over it, so he knows where to press (unless you _really_ want to
hide it).
7.40  Bridges and Shelves
We actually cheat a bit in order to build a bridge: it's made up
of sprites!
Take the sprite, rotate it flat to the floor, mark it as 'blocks
movement' and then raise it into the air - you'll be able to walk
on and underneath it.
So far, I have found two typical bridge sprites, but any sprite
will work:
513            Stone bridge, as found in E1L1.
609            Metal bridge with holes in it, found in E1L6.
7.40.1  Notes
    *  Building a solid-looking bridge (one having width)
       actually takes some time, as you have to mess around with
       the side and bottom walls too (they're also sprites, of
       course) which can take ages.
    *  It's possible to make a bridge droppable (try using a
       pipebomb on the bridge in E1L1) by tagging the sprites
       [Channel,0].
       Bridges with the same channel with collapse
       simultaneously. I've tried channels 254 and 255 with good
       results.
    *  Keep in mind that the visible overlapping of sprites is
       calculated by looking at the sprite center. Thus if you
       place several small sprites (bottles) on a single large
       sprite (a wooden board), the board will overlap some
       bottles when viewed diagonally.
       Thus you should build larger objects of several small
       sprites.
    *  Especially bridges often suffer from the above problem.
       One way to (partly) fix this is to make all the sprites
       single-sided, with the sprites only visible from outside
       (press [1] and use [F],[<] and [>] to rotate them until it
       looks right).
    *  It's perfectly possible to create a multilevel building
       out of nothing but sprites. It's a hell of a job, however.
7.41  Minibosses
In episodes two and three, the boss from episode one makes a
comeback, but in a 'light' version: he's smaller, more easily
killed and the level doesn't end when he's dead.
To create such a boss, just give him (2630) the palette number
21.
7.41.1  Notes
    *  To spawn minibosses, set the palete of the respawn
       effector to 21.
    *  No other minibosses are defined in the .CON files, thus
       this trick works poorly on the other two bosses: they die
       after taking a single hit.
7.42  Crashing car/helicopter
These are easy: just place their sprite (car is 2491, helicopter
is 1386) anywhere high enough, point them in the direction you
want them to go and that's all.
7.42.1  Notes
Make sure the sprites have enough space to fly all the way before
they (automatically) crash: if they hit a wall first, they will
slide down it.
7.43  Pulsing lights
Pulsing lights are made up of several sectors which light up in
sequence, causing a 'running light' effect. This can be used
nicely to point a player towards an emergency exit, for example.
7.43.1  Setup
You'll need several sectors in a line. Each of these sectors
should contain a C[0,LightTime] and an Sp[0,LightSpeed].
The sectors themselves should be dark and the C's light.
LightTime is the sequence in which the sectors light up (higher
ones first). A typical sequence would be 0,256,512,768,1024,...
This also controls how many sectors are lit at the same time.
With a difference of 200, the light pulse is about 4 sectors
long. With 400, it's 2 sectors (not as smooth).
LightSpeed is the speed at which the light pulse travels along
the sectors.
7.43.2  #Notes#
    *  Nowhere is it written that the sectors have to be in a
       straight line or, indeed, any line at all.
    *  The C and Sp effectors have to face in the same direction
       or they won't work.
    *  The shade of the effectors has to be a positive number.
       Shade values over 127 might wrap around, causing negative
       numbers - and your pulsing won't work.
7.44  Vehicles
Vehicles (simply a sector with a raised floor, a lowered roof or
both) can be set up to travel from their original position to a
pre-determined closed path, which they will follow.
7.44.1  Setup
    *  The vehicle sector requires an S
       [LocatorNumberToStartAt,6]. The position of this
       controller determines the rotation center when turning,
       and its direction the facing of the vehicle.
       LocatorNumberToStartAt is usually 0 if you have only one
       vehicle on the route.
    *  All vehicle sectors need to be tagged [0,1].
    *  Mark the route with several L+ [Pause,VisitingOrder].
       A Pause of 0 means smooth movement, a 1 means a short
       pause at the _next_ L+.
       The controllers are visited in their VisitingOrder,
       starting from 0.
    *  Use [R] on the vehicles floor texture to make it move with
       the vehicle.
7.44.2  #Notes#
    *  The vehicle must start in the same sector as its route, as
       the game will refuse to run otherwise. Thus you can't, for
       example, cause a car to come out of a low garage and
       circle around outside afterwards.
    *  You can have several vehicles following the same route.
    *  You can also design a vehicle using several sectors, but
       they will rotate individually at each L+. Rather use a
       'bounding' sector, containing the S - see the attacking
       spaceship in E2L1 for an example.
       Note that all vehicles sectors must share at least one
       wall with the bounding sector. I think there's a minimum
       length, too.
    *  The whole route must be in one sector - you cannot move a
       vehicle through several sectors.
    *  You can only have one route defined per map.
    *  To have sprites move with the vehicle, they must be in the
       same sector as the S[0,6].
    *  Vehicles can't move up or down slopes.
7.45  Attacking Vehicles
To make a vehicle attack any visible player with rockets (like
the space fighter at the start of E2L1), just parallax the
ceiling of the vehicle.
7.45.1  #Notes#
    *  Giving the parallaxed ceiling a palette of 3 will stop the
       vehicle engine from shooting at you. As far as I know,
       trailing cars (SE14) will always shoot at you, no matter
       what palette you give the sky.
7.46  Two-way Vehicles
A two way vehicle moves back and forth between two points when
activated (for example, with a key).
7.46.1  #Setup#
    *  The vehicle needs a tag of [0,31], an S[Channel,30] and an
       A[0,Channel].
       S points in the direction of vehicle movement.
    *  Two locaters L+[0,0] and L+[1,1] need to be placed to mark
       the stopping points of the vehicle. L[1,1] is the locator
       visited first by the vehicle.
    *  Place one or more switches [0,Channel] anywhere, including
       on the vehicle.
7.46.2  #Notes#
    *  The vehicle moves off in the direction of its S. If it
       doesn't find an L+, it will keep moving forever, passing
       straight through any walls on the way out.
    *  The vehicle has to start out between the two L+ locators.
    *  On both locators, channels are triggered which can be used
       to automatically open dors, switch on lights, etc. The
       channels are Channel+1 for the L+[1,1] and Channel+2 for
       the L+[0,0].
       Thus if you used channel 6 for a two-way train, channel 7
       would be triggered when the train reaches the first stop.
7.47  #Echoing rooms#
To make a room echo (as in a sewer, for example), simply add an
MusicAndSfx Effector into the sector and tag it
[SoundDistance,1000+AmountOfEcho].
AmountOfEcho ranges from 0 to 255.
7.48  #Rising floors#
You can cause a sectors floor to rise to a certain height when a
touchplate, switch, etc, when activated.
7.48.1  #Setup#
    *  Lower the floor of the rising sector an add two effectors:
       S[0,31] at the height you want the floor to rise to.
       A[0,Channel]
    *  Place a T[1,Channel] in the activator sector.
7.49  Water waves
It's possible to have the floor of a sector move up and down.
Several of these sectors in series can give the effect of a
travelling water wave.
7.49.1  Setup
A wave sector actually changes its floor tilt value.
Thus, simply define several 4-walled sector in a row, adding a
single S [WaveShape,29] in each.
You can add an Sp[0,WaveHeight] in the sector as well.
7.49.2  Notes
    *  Wave sectors must be four-sided.
    *  The floor tilts along the first line of each sector, so
       make sure you've set it properly (use [Alt]-[F]).
    *  WaveShape/WaveHeight range from 0 to 2048.
    *  If you tag the wave sectors [0,2], you'll be able to swim
       underneath the water (see Swimming Pools for details).
       Duke won't be able to stay afloat if the wave is too high,
       though.
7.50  Engine piston
In designing machines, you often want a piston moving up and
down, squashing anything wandering underneath.
7.50.1  Setup
Simply add an S [0,25] in the sector.
7.50.2  Notes
    *  This effector moves the ceiling down to the height of the
       S and back up.
    *  You can add an Sp or M to taste.
7.51  Edge walls
The edge of the playing map in an outdoors setting is always a
problem - how to avoid simply using a very tall building and
instead closing off with an (impassable) low wall?
7.51.1  Setup
    *  Build a low wall around your world.
       Use any texture you like.
    *  Set the ceiling texture of the wall to the same as your
       main ceiling.
       Usually, this will be 89 (LA).
    *  Parallax it.
       If your main ceiling is already parallaxed, the upper part
       of the wall will disappear.
    *  Lower the ceiling of the low wall to its floor.
7.52  Code switches
Code switches are buttons which have to be pressed in a certain
way before activating something. An example is the 3-way dip
switch used to unlock the red gate in E1L2.
7.52.1  Setup
Set up the switches anywhere, tagging them [Status,Channel].
Status         is the required state for activation: 0 (off) or 1
               (on).
Channel        is the same for all code switches belonging
               together, and is used as the lo-tag of the A or L
               tags activating whatever is supposed to happen.
7.52.2  Notes
    *  Personally, I find these boring. I just cycle through them
       in order and the door or whatever opens real quick.
    *  You can place the switches all over the level, if you
       like. Not a nice thing to do :)
7.53  The pool table
Everybody (myself included) was very impressed with the pool
table in E1L2. It's easy to make your own, and perhaps you can
use this to design other toys.
Reading this, I also realize why 3DRealms didn't answer our
request for a reset button :)
7.53.1  Setup
The table itself is just a table with a raised wall around it.
The trick is in the sprites used: just add balls (901 and 902)
and (flat) pockets (903).
7.53.2  Notes
    *  The balls will move nicely when pushed. They will remain
       at the same height, floating through the air if necessary.
    *  Use different palettes on the balls to create different
       colors.
7.54  Once-only sound effects
Often, you'll want a sound effect to be played only once when a
player enters a sector. An example is Duke talking at the
beginning of E1L1.
7.54.0.1  Setup
Give the sector a lotag of 10000+SoundNumber.
7.55  #Ambience sounds#
Simply place an M[SoundsFrom,Range] anywhere. Every now and then,
an ambience sound will be played.
SoundsFrom is the number of the lowest sound to play, Range is
the number of sounds to look at for random selection of the sound
to play.
For example: M[231,3] would randomly select a sound from the
sound numbers 231,232,233,234.
Sadly, not all sounds can be used as ambience sounds (see the
list in the reference section).
7.56  #Tips and tricks: New and interesting effects#
It is often the case that users find new and interesting effects
for sector functions that the designers never thought of. If
anybody finds something like that, please let me know and I'll
put it here.
Also in here are generally good ideas which I couldn't fit
anywhere else :)
7.56.1  Ghosts
You can make enemies transparent or even rotated (2D or messed-up
flat things). They'll still attack normally.
Transparent enemies are particularily effective in dark places.
7.56.2  Unfreezable monsters
If you give a monster a palette of 1 (blue), it can't be frozen.
7.56.3  Falling to your death?
Scaring the player is high on anybodies list for levels.
So let the player fall down a deep shaft (aaaaarrrggh) with a
teleporter hanging in the air at the bottom, transporting him
somewhere else (causing a safe landing).
7.56.4  Malfunctioning doors
Doors malfunction if the closing time is too short (see the
section on doors). This can cause a nice paranoia effect when the
door keeps opening and closing all the time.
7.56.5  Mines
It's possible to take a trip mine, shrink it real small and put
it in it's very own sector somewhere on the floor. Done properly,
you can create a proximity mine which can only be seen if the
player is paying attention >:)
7.56.6  The shrinking player
Called the Alice In Wonderland effect, this requires you to take
a long hallway and gradually make everything bigger - the floor
gets wider, the walls higher, the sprites bigger...
The opposite works as well, of course.
Problems:
    *  Enemies can't be resized (they're animated).
    *  The map will show it all.
7.56.7  #Timing devices#
Long two-way trains can be used as timing devices, to set off an
effect (open/close doors, etc) after a delay.
7.56.8  Even more textures
Remember to only add your own graphics into your maps if you
really have to - they make your final package large and unwieldy
and, after all, Duke3D already contains LOTS of textures.
You can also cleverly resuse old textures by resizing them - if
you elongate a texure until it breaks into streaks and then make
the streaks wider, you get a nice metallic effect.
7.56.9  #One-way mirrors#
The cops often use a one-way mirror: from the victims side, it
looks like an ordinary mirror, but from the other side it's as
transparent as a glass pane.
This is also possible in Duke: Build a normal mirror, but make
the mirror room as thin as possible (minimum grid size works ok).
Then build another room right behind it, big enough to hold the
mirror image:
              *-----------------------------*
               \                           /
                 \                        /   <-  Second mirror
sector
                   \                     /
                    *-------------------*     <-  First mirror
sector
                    *---------A---------*         (real thin)
                    |                   |
                    |                   |     <-  Normal room
                    *-------------------*
>From the normal room, place a standard mirror (one-sided wall,
remember?) on line A, flagging it 'hittable' but not 'blocking'
(if you want the player to walk through the mirror).
Now you can walk around in the second mirror sector, peering into
the normal room, while the normal room just sees an ordinary
mirror.
Imagine the players shock in DukeMatch when his mirror image
steps out and attacks him (in the form of another player) >:)
The only problem are explosives, which will smash the mirror,
turning it into the standard wooden backing.
7.56.10  #Rain#
You can simulate rain with the drop generator (sprite number
660). Create water puddles on the floor by building sectors with
a water surface and a low tag of 1.
7.56.11  #Invisible bridges#
To make Duke walk on air, just use the GSPEED sprite. Make it
parallel to the floor, stretch it, make it blocking, and raise it
up to the required height.
Even though the sprite won't show up in the game itself, the
player will be able to walk on it.
7.56.12  #One-way elevators#
If BUILD finds the player occupying the same place as a blocking
sprite, it will try to move Duke upwards, on top of the sprite.
If there's a ceiling in the way, Duke will get squashed.
But if you place several one-sided blocking flat sprites over
each other (3 clicks seems a good distance), Duke would be moved
up, find himself occupying the place of another sprite, be moved
up again...all the way to the top of the elevator shaft.
And as the sprites are one-sided, he can't move back down.
Using invisible sprites, this could also be used to build a
ladder.
7.56.13  #Moving cameras#
It's a great idea to place a camera on a moving vehicle, the view
from the viewscreen is very nice indeed. Don't set up the camera
to swing from side to side, though :)
7.56.14  #Lethal cameras#
Picture Duke walking up to a viewscreen. He looks into it and -
gets splatted.
Just place a camera into a subway with a low ceiling (less than
14 ticks above the ground) and hook it up to the viewscreen.
This is a mean trick as the player can't defend against it...
7.56.15  #Minigolf#
Cristopher Clark had the bright idea of using the cue ball sprite
(902), setting the palette to 12 to make it white. Add a (level)
minigolf course, add a pocket sprite (903) to sink the ball in
and bingo!
To stop the que ball from breaking randomly, turn off the 'blocks
movement' flag.
7.56.16  #Message screens#
An obvious trick. But since I've overlooked it, I keep hoping
that there are others Out There who could use a reminder: you can
build a message screen by placing a camera in a tiny room
somewhere off the map, facing a text or some graphics. Just hook
a viewscreen up to it and voila!
Don't forget to make the view channel unique, so it doesn't show
up in the other camera views.
7.56.17  #Scrolling messages#
You can have a message (credits, authors name, whatever) scroll
up in front of you, triggered by walking along a narrow passage
or somesuch:
    *  Create a very narrow sector across the hallway. Let's call
       it the message sector.
    *  Place your text in the air above it.
    *  When you lower the message sector, the sprites get lowered
       with it (sprites always align to the floor height of a
       sector). Keep lowering it until the message is hidden.
    *  To make it things look neater, you can hide the narrow gap
       left by the message sector with flat sprites on the floor.
    *  Finally, use a touchplate together with a sector effector
       31 to raise the floor of the message sector as you
       approach it.
It's up to you wether you want the message to stay visible after
appearing or if it should scroll into the ceiling (just lower the
message sector a bit before writing). Experiment at will :)
7.56.18  #Oversized levels#
While keeping in mind that Duke worlds are of much smaller scale
than the real world (realistically scaled levels are too large
and empty to be fun), it is still possible to run out of space on
the map grid.
It _is_ possible, however, to build a part of the map on the
grid, and then move it *off* the grid! Make sure that part of the
map is *really* finished, as it can't be edited afterwards. Also,
all player start points must be on the grid.
Keep in mind that a huge map might be slow to unplayable on
slower PCs (anything < p133).





                            Chapter 8
                   Programming the .CON files
In this chapter I'll attempt to explain just what the .CON files
are about and how they work.
8.1  #The language of the .CON files#
Here's just some stuff I wrote up when I still only had the
shareware version - in the next version of this FAQ I'll expand
on this:
state <name>   Defines a subroutine. Called via state <name>. See
               state rats for an example.
ends           Ends a subroutine.
include <filename>
               Includes <filename> in the code.
/* <text> */   Comment block (can be several lines)
// <text>      Comment to end of line
spawn <object> Creates <object> on nearest floor. See also
               ifspawnedby.
ifrnd <x> <action>
               If x is smaller than Random(255) then <action>.
               See state rats for an example.
debris <a> <b> Creates an exploding debris shower.
               <a> is the debris graphic:
               Normally SCRAPn:
               SCRAP1 : Metal barrel pieces
               SCRAP2 : Edged metal barrel pieces
               SCRAP3 : White fluff
               SCRAP4 : Gray/brown boxes
               SCRAP5 : Gray/brown squashed boxes
               SCRAP6 : Pottery shards
               <b> is the amount*3 of debris to show.
               Typical values are 2,3,4,5 or 12.
guts <a> <b>   Similar to debris, but throws guts about, which
               cause a blood splat on the ground.
               <a> is guts graphics: JIBS1..JIBS6
hitradius <r> <1 2 3 4>
               Causes damage in radius <r> (always 1024).
               Damage is normally WEAKEST WEAK MEDIUMSTRENGTH
               TOUGH (see USER.CON).
addweapon <x> <y>
               Add weapon <x> with ammo <y> to players inventory.
addammo <x> <y>
               Add <y> amount of ammo for weapon <x> in
               inventory.
killit         Remove current actor.
sizeto <a> <b> Resizes an actor.
palfrom <a> <b>
               Changes actor palette.
sound <x>      Play sound <x> locally.
globalsound <x>
               Like sound, but heard in whole map.
ifhitweapon <action>
               Execute <action> if hit by weapon.
ifhitspace     TRUE if player is pressing the spacebar.
ifcansee       TRUE if player can see this object.
ifwasweapon <x> <action>
               Checks to see what weapon hit the actor:
               THROWFLAME       Flamethrower
               RADIUSEXPLOSION  Exploding device
               RPG              Rocket launcher
               FIREEXT          Fire extinguisher
               SHRINKSPARK      Shrinker beam
               SHOTSPARK1       Bullet
               COOLEXPLOSION1   ?
               KNEE             The Mighty Foot
               FIRELASER        Laser
ifspawnedby <x>
               TRUE if actor was spawned by object <x>.
ifsquished     TRUE if actor was squished.
ifpdistg <x>   TRUE if distance to player > x.
ifpdistl <x>   TRUE if distance to player < x.
addphealth <x> Add <x> to players health (can be < 0).
resetplayer    Player resets in DM mode.
Some fun objects to spawn:
(see DEFS.CON as well)
AMMO           Pistol ammo.
BURNING        Starts fire on nearest floor, burns out soon.
               Doesn't start if no player near.
COLA           Small first-aid box.
EXPLOSION2     Nuke explosion. Image only - no damage...
EXPLOSION2BOT  Top part of explosion. Image only
FIRE           Small flame, burns out soon.
FIRE2          Shorter fatter flame, permanent, can be stamped
               out.
OOZ            Slime stretching to the ceiling.
PIGCOP         Pig Cop (can be spawned!).
RAT            Squeak!
SHIELD         Armor
SHRINKEREXPLOSION
               Green oval shrinker impact - image only.
STEAM          Hissing steam, causes damage, horizontal.
8.2  #Actors#
In v1.3d of duke, you can't add new actors, although it has been
promised for v1.4.
So you'll have to redefine existing actors (like the shark).
Easily done by changing the actor code and (if you've defined
different animations), the 'action' command:
action ACTIONNAME #1 #2 #3 #4 #5
ACTIONNAME     Just a name defining the action, eg.
ASHARKCRUIZING
#1             Frame increment for the animation sequence start.
               For example, the shark sprites start at 1550. And
               1550 is the first tile in the ASHARKCRUIZING
               animation, so #1 is 0.
#2             Number of frames in the animation.
#3             The number of different view directions for the
               actor.
#4             Animation cycle direction: 1 for forward, -1 for
               backwards.
#5             Animation delay.
8.3  Notes
Just some random notes - I'll planning to rewrite the whole of
this chapter anyway.
    *  The language is C - so if you can program in C, you won't
       need this chapter at all as you can work nearly everything
       out yourself.
    *  The commands are case-sensitive.
8.4  Cute tricks
Here are some nice tricks to do with your .CON files - if you
know of any other, let me know! ##
8.4.1  Picking up weapons
Don't you hate it when you have the RPG selected, are running
towards somebody, run over the shotgun and automatically pick it
up, selecting it as your current weapon?
With this patch you'll have to press [SpaceBar] to pick up any
weapon.
It's easy, too: look in GAME.CON at line 874. See all the
requirements that have to be true before Duke will pick up the
shotgun? Well, just add the word 'ifhitspace' (must be in
lowercase) to the end of that line and you're done!
Of course, you'll have to do this with all other weapons as well,
but I'm sure you're able to handle that.
The disadvantage? Unless you hack around a bit yourself, you'll
have to press spacebar to pick up an existing weapon as ammo as
well.
8.4.2  Explosive ammunition
Lots of fun can be had with the SHOTSPARK1 actor (the spark
created by a bullet striking anything).
After line 1404 in GAME.CON, add the following lines:
ifactioncount 3
{
 hitradius 1024 WEAKEST WEAK MEDIUMSTRENGTH TOUGH
 spawn EXPLOSION2
 debris SCRAP2 2
 sound PIPEBOMB_EXPLODE
}
What does this do?
ifactioncount  is probably the animation frame number; we use it
               to make sure the code is only executed once per
               shotspark.
hitradius      causes damage in a 1024 unit radius, with the most
               damage in the middle of the circle.
spawn          spawns an object named EXPLOSION2 at the actors
               spot. In this case, the actor is SHOTSPARK1. This
               line makes sure the explosion animation is shown.
debris         throws some debris around, but not much (try
               "SCRAP1 10").
sound          plays the proper sound for the explosion.
{ }            are the begin/end delimiters of the "if" command.
So your bullets now cause more pain and suffering and more fun
for you. However, even the lowly pigcops are suddenly really
dangerous.
Because, you see, the monster bullets generate SHOTSPARK1's as
well...
8.4.3  Splat!
Lots more fun can be had with SHOTSPARK1.
Try adding this line just after line number 1404 in GAME.CON:
ifactioncount 3 { spawn PIGCOP }
This will cause a pigcop to appear every time you fire a shot. As
soon as he shoots at you, eight more pigcops warp in. And then 72
more. And then...
Soon your system will hang itself...
Thus rather don't shoot. Take the jetpack, fly high up the street
in E1M1 and shoot and the wall. The pigcops appear and
immediately fall to a messy death many stories below >:)
8.4.4  #Footsteps#
How about adding footsteps to Dukes walking and running (but not
crawling)?
Modify the following lines in these files:
DEFINE.CON     add the line 'define DUKE_STEPS' to define a
               variable.
USER.CON       add the line 'definesound DUKE_STEPS knuckle.voc
               -1024 -924 2 4 -1024' to define a new noise type
               using the above variable. Of course, you could use
               a different sound or even create your own VOC
               file.
GAME.CON       Change line 1326 to: 'else ifaction PWALK ifrnd 50
               sound DUKE_STEPS ' to cause every player to emit
               footstep sounds while he walks.




                            Chapter 9
                      Utilities and add-ons
9.1  Editing utilities
This section contains all programs which can be used in editing
somehow.
9.1.1  BUILD
The BUILD program is currently the only Duke3D .MAP editor in
existence. Personally, I don't think that it will be replaced
anytime soon :)
Documentation to it are in the file BUILDHLP.EXE (press [F2]
while viewing and give a filename to create an ASCII file instead
of printing all that stuff) and in this FAQ.
I hear somebody is working on a new .MAP editor, but it's for
Windoze95 (ugh).
9.1.2  EditArt
EditArt is also included on the Duke3D CD and allows you to
change the graphics included in Duke3D. If effect, it allows you
to extract/import graphics (use something else to actually edit
the graphics).
You'll first have to extract the .ART files using the command
KEXTRACT DUKE3D.GRP *.ART
Watch out, though: this will create the files TILES000.ART to
TILES014.ART, taking up nearly 15MB of space on your drive. If
you just want to change part of the graphics, try extracting a
single .ART file:
KEXTRACT DUKE3D.GRP TILES000.ART
Documentation to EditArt are in the Build Docs; here are just
some notes:
9.1.2.1  Changing graphics
To extract a tile from a .ART file to a .PCX file, use [PgUp] and
[PgDn] to select the tile. You can also use [V] or [G] (Goto).
Press [F12] to create a CAPT0000.PCX file in your directory,
containing just the tile.
Edit this tile with your favourite graphic tool. While EditArt
can also edit graphics (as the name suggests), I prefere to use
something like NeoPaint or somesuch. The guys at 3DRealms used
Dpaint, so make sure you save as an 8-bit 256 color PCX,
preferably in 320x200 format.
Then go back into EditArt, select the tile again and press [U] to
import the .PCX file. After selecting the image, use the mouse to
drag the rectangle over the whole image (grabbing all of it) and
press [Enter].
Voila! Now all you have to do is keep the changed .ART file in
your Duke3D directory, and the game will load the new graphics
automatically on starting.
9.1.2.2  Adding new graphics
Adding new graphics is fun and easy: simply modify the
TILES0014.ART file.
It contains only a single tile, called 'user art'. You can
replace this and all others in the .ART file using the above
method.
User art starts at tile number 3584.
Now you can access the graphics like any other tiles in BUILD.
9.1.2.3  Using DOOM I graphics
Adding DOOM graphics is less easy - here's a step-by-step account
on how to do it (there's probably an easier way, but I haven't
found it yet):
    *  Extract TILES0014.ART from DUKE3D.GRP, as explained above.
    *  Back up your PALETTE.DAT and NAMES.H files, preferably by
       copying them in their own directory (I use the same one I
       backup my .CON files into).
    *  Convert the DOOM graphics (you'll need the original
       DOOM.WAD):
       WAD2ART D:\GAMES\DOOM\DOOM.WAD
       (You'll find WAD2ART in the \GOODIES\WAD2MAP directory on
       your Duke3D CD)
       This'll take a while, but you only need to do it once.
    *  You now have three new files in your directory: NAMES.H,
       PALETTE.DAT and TILES000.ART.
    *  Call up EditArt and select the graphics you want to
       convert (tiles start at number 462). Press [F12] to make a
       screendump of each.
    *  Rename TILES000.ART to something else in case you want to
       convert more DOOM art later. Best to place it in its own
       directory, together with the new NAMES.H and PALETTE.DAT.
    *  Restore your original NAMES.H and PALETTE.DAT files.
    *  Call up EditArt, select an empty tile and import the DOOM
       .PCX screens as explained in 'Adding New Graphics' above.
    *  The sprites are going to need a fair amount of retouching.
       For example, I replaced all octabrains with cacodemons
       only to find that they shade real poorly when moving into
       a lowlight sector :(
9.1.2.4  General notes
    *  All files must be 320x200x256. So even if you have an
       64x64 tile, you'll have to stamp it into a 320x200 image
       to import it properly.
    *  If one graphics format doesn't work for you, try another
       one. Personally, I have the least problems using BMP.
    *  Tiles with a 2^n size (like 16, 32, 64, 128, 256) seem to
       make the least problems when importing.
    *  Note possible palette problems. While EditArt can convert
       a palette for you, it usually sucks, so do it yourself
       before loading the image.
9.1.3  Wad2Map utilities
The Wad2Map programs (included on the Duke3D CD) allows you to
convert your DOOM .WAD pages to .MAP format, as well as
converting the graphics.
You will need the original DOOM.WAD file (called an IWAD file).
I very highly recommend copying the WAD2EXE directory into its
own subdirectory on your hard drive, as you'll be overwriting
some of your files (PALETTE.DAT and NAMES.H) from Duke3D
otherwise.
In any case, make a backup of your original PALETTE.DAT and
NAMES.H files.
Also, don't forget to remove line 733 from DUKE.TXT as the
conversion won't work well with it (the cautious amongst you can
just comment it out - put a semicolon (;) before it).
The utilities consist of two parts:
9.1.3.1  WAD2ART
Converts the DOOM textures (I've only tried this with DOOM I so
far) to TILE*.ART format.
Usage:
WAD2ART D:\GAMES\DOOM\DOOM.WAD
(or wherever your DOOM.WAD file is).
This will create three files in your current directory:
TILES000.ART   A huge file containing all the DOOM graphics.
NAMES.H        The names of all the new tiles.
PALETTE.DAT    The original DOOM palette.
9.1.3.2  WAD2MAP
Here's what we all want: a program to automatically convert the
DOOM maps to Duke3D maps!
Unfortunately, the system crashes when trying to convert a PWAD
(add-on WAD file) for DOOM. We get around this by using DEU (Doom
Editing Utility) or a similar tool to change the first level of
the original DOOM (the IWAD) to the PWAD. To find out how to do
this, read the DEU docs.
There are two ways to make a .MAP from a .WAD: with conversion
(trying to convert the DOOM walls and objects to Duke3D walls and
objects - the recommended method) or without conversion (for
those brave souls who want to try to run everything on DOOM
graphics and can face reprogramming every single sprite).
With conversion:
WAD2MAP D:\GAMES\DOOM\DOOM.WAD E1M1 DUKE.TXT
Without conversion:
WAD2MAP D:\GAMES\DOOM\DOOM.WAD E1M1
The DUKE.TXT file is an ASCII file listing the things to be
converted. You're very welcome to mess around in it and try to
improve it. If you create a perfect one, let me know!
Note that there's still plenty of work to be done on a fully
converted .WAD. You'll have to load it into BUILD and check every
single object, sector, texture (the HOM is back!) and wall.
I've had some walls crash on me after conversion, and I haven't
yet found out why - seems to be caused by sprites hanging about
in midair.
If you did the WAD->MAP without conversion, you'll have to use
DOOMs PALETTE.DAT (automagically created for you) _and_ you'll
have a lot of work in front of you: not only do none of the doors
etc work, but you'll have to shift the graphics for the sprites
as well.
But you'll be able to play DOOM maps with DOOM textures in Duke3D
(wheeee).
9.2  Future add-ons
This section contains a list of vapour-ware :)
Both software users are wishing for and projects currently in the
making are listed here.
9.2.1  Add-on software wish list
Attention programmers! Here is a wish list, created by the DN3D
players, of add-on software that should be made for DN3D. If you
would like to make an addition to this list, please send me E-
mail.
Additionally, if you are planning on creating one of these
utilities, tell me, and I'll move it to the "Add-on software in
the making" chapter.
    *  A DEU-like pre-editor for the rough work (to be fine-tuned
       later by BUILD.EXE). Ideally, this preeditor would be
       network-capable to allow several people to work on a level
       simultaneously.
    *  Automatic .CON file patcher to allow easy inclusion of
       .CON modifications.
    *  Lots of additional graphics, allowing the building of
       realistic 'normal' street and house maps.
    *  A program to organize and keep track of additional .MAP
       files. Ideally, this would allow us to enter a description
       to each map, find a map quickly and launch it straight
       into Duke3D.
9.2.2  Add-on software in the making
This chapter tells about add-on software which is being currently
worked on.
If you are working on something that is not in here, please send
me E-mail so I can put it in.
In this section, you can also request help on creating some add-
on software.
9.2.3  #Finished add-on software#
## Anybody wrote a useful utility for Duke Nukem 3D, please tell
me about it and I'll include it here.
9.2.3.1  #The Level Manager#
Organizes and keeps track of additional .MAP files. Written by
Rob Sandow, it can be found at:
http://ourworld.compuserve.com/homepages/RCS1/





                           Chapter 10
                         Troubleshooting
10.1  Common questions
This section contains some of the most common questions seen on
the net.
10.1.1  My 3D mode messes up
A common lament.
You've forgotten that the contents of the entire \GOODIES\BUILD
directory have to be copied into your Duke3D directory. The 3D
mode requires the DUKE3D.GRP or the TILESxxx.ART files to work
properly.
So, assuming that your CD-ROM is drive E:
CD C:\GAMES\DUKE3D
COPY E:\GOODIES\BUILD\*.*
ATTRIB -R *.*
10.1.2  How do I copy sectors?
Copying sectors is non-trivial. If done normally, all red lines
turn white and the copy is messed up.
To copy a sector, you'll have to create a holding shell for it
first. This shell must be the exact same size and shape as the
sector to copy and must consist of white lines (single-sided).
Now select the original sector using RAlt-Mouse. Press [Ins]
before moving the mouse. Move the sector onto the holding shell
and press [Ins].
Voila!
You might ask why bother if you have to build the holding shell
anyway? Well, the sector being copied can _contain_ plenty other
sectors. And it's copied perfectly, complete with textures,
shading, tags...
10.1.3  #What's a tag?#
A tag is simply a number. Walls, sectors and sprites can have
both a high and a low tag. So, if a sprite is tagged [5,7], the
low tag would be 5 and the high tag 7.
These tags usually define how an object behaves (for example,
which door(s) to open when a certain switch is pressed). See the
BUILD reference above for info on how to set tags.
10.1.4  #My switches only work once!#
Try a different sprite for the switches. Look slike some switches
are one-way only.
10.1.5  #I'm suddenly getting HOMs all over my map!#
Sorry; this usually means that your map is corrupted beyond
repair - hope you saved often under different names! It is
usually caused if you delete sectors by collapsing them instead
of joining them with existing sectors (by far the safest way).
10.1.6  #My doors look weird when they open#
If you're using DOOM-type doors, make sure you've set the texture
orientation right ([O]). With swinging doors, make sure that they
stay inside their original sector.
10.1.7  #The sprites are much too big!#
The sprites in Duke are usually much too large, yes. Happily,
they can be easily scaled using the cursor keys.
To get a nice size, scale it three times horizontally and
vertically while pressing [Num5].
10.1.8  I'm using Windoze/Win95, and...
Tough luck; I don't have any pity for people who can't exit
Windoze to play DOS games.
10.1.9  I can't select sprites
If you can't seem to select a sprite, there are two possible
reasons:
    *  Two sprites are overlapping each other.
       In this case, the sprite _is_ blinking, but you aren't
       seeing it. Try to move the sprite anyway.
    *  You've switched the grid off.
       Sprites can only be selected if a grid is shown on the
       screen.
10.1.10  How do I make a flat sprite double-sided?
Point at it in 3D mode and press [1].
10.1.11  #I used an animated windows, and the wall messes up#
If you cover a hole with an animated sprite (such as the force
field, 663), the whole wall will be moving about.
To solve this, don't put the field directly on the hole (flush
against the wall), but recess it slightly into the hole.
The same thing goes for breakable glass, by the way.
10.1.12  How do I view the original maps?
Extract them from the DUKE3D.GRP file:
KEXTRACT DUKE3D.GRP *.MAP
10.1.13  How do I use new maps?
Start Duke3d with
DUKE3D -map mapname.map
Don't use DUKE3D /map mapname.map, it'll turn off your monsters.
10.1.14  No monsters in new maps?
This can have two reasons:
    *  Most user maps are for DukeMatch only, and thus don't
       contain any monsters.
    *  You've started the map like this: DUKE3D /map mapname.map
       Try DUKE3D -map mapname.map
10.1.15  How do I use the new .VOC and .MIDs?
If you get new .VOC and .MID files with a new level, simply copy
them into your Duke3D directory. Duke3D has a list of all sounds
(VOC) and music fies (MID) in the DEFS.CON - if it finds a file
with the same name in its main directory, it will use this one
instead.
Press [F5] and [Shift-F5] during the game to select different
songs.
10.1.16  How do I show the wall data?
If lots of sprites are real close to a wall, it can be difficult
showing the wall data with [Alt]-[TAB].
Press [G] several times to turn off the grid - now you'll only be
able to select walls.
10.1.17  I can't save the changes in BSetup
That's because you didn't remove the read-only attribute from
your files after copying them from the CD-ROM. Try this:
ATTRIB -R *.*
10.1.18  The game ends with 'MAP E1L9.MAP not found!'
Yes, user maps loaded via the '-map' parameter are loaded as
E1L8. If you end the level, the program automatically looks for
the next level, E1L9 and dies if it doesn't find it.
Thus if you want to play several levels behind each other, call
the others E1L9.MAP (or E1L10/E1L11.MAP) and copy them into your
Duke3d directory.
10.1.19  Can the subway speeds be changed?
No - Todd Replogle confirmed that the subways run at a fixed
speed.
10.1.20  How do I place active tripmines?
Use tile number 2566 instead of 27 (ammo).
10.1.21  How can I make a mirror shootable?
Create it as a one-sided wall instead of a masked wall (press [1]
instead of [M]). Don't forget to make it hittable [H] and
blocking [B].
10.1.22  How do I shade a whole room at once?
First select the sectors to shade using RAlt-Mouse in 2D mode.
Then switch in 3D mode, point at any wall and shade away!
Afterwards, press RAlt in 2D mode again to deselect the sectors.
This trick works with visibility setting as well.
10.1.23  The parallaxed sky looks messed up!
When you parallax a sky, it can look strange in BUILD - the stars
texture spilling over into the hollywood texture is an example.
Don't worry about it - it looks fine in Duke3D itself.
10.1.24  I've parallaxed the sky and now Duke dies!
Parallaxing a BIGORBIT texture will kill Duke immediately upon
entering that sector, even in God mode.
However, it you set the sky palette to anything except 0 (3 works
fine), Duke won't be killed.
10.1.25  How do I set the par time?
You can't set a par time in your .map file - the times are stored
in USER.CON, line 329 ff.
We'll have to wait until somebody writes a simple .CON patcher
(hint, hint).
10.1.26  #What format are the .ANM files in?#
The Duke animations are in files ending with .ANM. These are
produced by the program 'Deluxe Paint Animator', related to
'Deluxe Paint', by Electronic Arts.
It's an old (but extremely good) MS-DOS program, and not easy to
find.
10.2  Bugs in the game
The game itself contains some interesting bugs, none of them
serious.
10.2.1  #Low ceilings#
10.2.1.1  #Bug#
Don't make ceilings too low, they can cause problems: for
example, the graphics can mess up if the roof is angled nearly
all the way to the floor and Duke walks into it. Also, a small
low sector can kill Duke upon entering it (SQUISH).
10.2.1.2  #Workaround#
Don't Do This.
10.2.2  Holodukes
10.2.2.1  Bug
Not sure if this is a bug or not, but holodukes can be
distinguished from Real Men easily:
    *  They don't cast shadows.
    *  They don't glow in night vision.
10.2.2.2  Workaround
None known.
10.2.3  The shrinker
10.2.3.1  Bug
If you shrink something (a monster or a dancer) and then freeze
it, it will stay small when it thaws.
10.2.3.2  Workaround
Don't allow shrinkers and freezers in the same level if this bugs
you.
10.2.4  Endless ammo
10.2.4.1  Bug
If you freeze, for example, a pig cop, it might drop a weapon.
If you then allow it to thaw and freeze it again (easy, because
it's already severely weakened), it might drop another weapon.
Repeat until you're sick of it.
10.2.4.2  Workaround
None known. If you want to keep ammo away from the players (for
shame!), don't add the freezer.
10.2.5  Remote switch triggering
10.2.5.1  Bug
If a switch is placed on a thin wall, you can trigger it from the
other side of the wall.
10.2.5.2  Workaround
Place switches on thicker or even outside walls.
10.2.6  Underwater toilets
10.2.6.1  Bug
Somebody actually had the idea of placing a toilet underwater...
But when Duke uses it, he's unable to surface again.
10.2.6.2  Workaround
None - drown the bastard ;)
10.2.7  Explosions
10.2.7.1  Bug
Explosions are often clipped incorrectly, and you can see a part
of a wall or sprite overlapping it.
10.2.7.2  Workaround
None - this seems to be caused by the fact that the clipping for
a sprite is worked out from its midpoint - if the sprite is big
and unhappily placed, the clipping can fail.
Not terribly serious, though.
10.2.8  Crash on shattering objects
10.2.8.1  Bug
If you break too many objects at the same time (I shot an RPG
into a very well-stocked bar) the game will crash.
10.2.8.2  Workaround
Don't place too many breakable objects near each other while
designing a map. ## Anybody found out the limit? 32? 64?
10.2.9  Breaking unbreakable glass
10.2.9.1  Bug
Glass marked as unbreakable can still be shattered by an
explosion (bomb) nearby.
10.2.9.2  Workaround
None known. ##
10.2.10  Trip mines
10.2.10.1  Bug
Trip mines don't work well with mirrors or moving sectors: They
don't reflect in the mirror (looking completely wrong), and the
beam breaks up in a moving sector, creating a rather strange
effect.
All this grief is because the beam is actually a collection of
sprites.
10.2.10.2  Workaround
None known. Just don't place trip mines in such a way that the
beam hits a mirror.
10.2.11  Phantom bullet-holes
10.2.11.1  Bug
If you design a one-sided glass wall and shoot at it from the
wrong side, bullet-holes will appear in the glass. If you then
shatter if from the right side, the bullet holes will stay in
mid-air.
10.2.11.2  Workaround
Who cares?
10.3  Bugs in BUILD
Like any complex CAD software, BUILD has some bugs as well. Some
of them we have to be aware of, most are just weird.
10.3.1  Using a Busmouse
10.3.1.1  Bug
Using a busmouse, BUILD can crash after displaying the disclaimer
page.
10.3.1.2  Workaround
Try different mouse drivers, one of them works (anybody know
which one?) ##
10.3.2  #Very long lines#
10.3.2.1  Bug
If a line is too long, you can't select it anymore by moving the
cursor near it. Thus you also can't insert new points on it, for
example.
Also note that clipping on extremely long lines works poorly, and
the player could walk through it (and die in nonspace).
10.3.2.2  Workaround
Keep the lines short by inserting points on too long lines:
shorten the line, insert a point, lengthen the line again, move
the newly inserted point into the middle of the line.
10.3.3  Splitting a sector
10.3.3.1  Bug
Splitting a sector containing another sector (like a door) is
often a bad idea. I've had lots of sectors disappear on me
already.
10.3.3.2  Workaround
None known so far. Save your work first.
10.3.4  Selecting sprites
10.3.4.1  Bug
If several sprites are exactly over each other, they don't start
to flicker as they are selected.
10.3.4.2  Workaround
Be aware of this, try to move the sprite anyway.
10.3.5  Autoaligning textures
10.3.5.1  Bug
When pressing [.] in 3D mode to autoalign textures, the system
hangs at times.
10.3.5.2  Workaround
I don't know of any workaround to this.
Save before your press [.], and don't use it needlessly.
10.3.6  Displaying memory info
10.3.6.1  Bug
When pressing [']-[M] to display the memory info, the system will
be unstable, crashing when returning to 3D mode.
10.3.6.2  Workaround
None known. Don't use this function, you don't need it anyway.
10.3.7  Function keys in 3D mode
10.3.7.1  Bug
In 3D mode, the function keys [F5], [F6], [F7] and [F8]
evidentially try to display the same help screens as they do in
2D, messing up the graphics in the process.
10.3.7.2  Workaround
Simply press [NumEnter] twice to jump to 2D mode and straight
back into 3D.
10.3.8  Deleting sectors
10.3.8.1  Bug
You can run into LOTS of trouble when deleting sectors.
10.3.8.2  #Workaround#
Here are some general tips on deleting sectors:
    *  Remove all sprites (including sector tags, etc) from the
       sector before deleting it.
    *  Don't delete a sector by collapsing it (moving all points
       over each other).
    *  To delete a two-sided sector, join it with the sector
       around it (by far the best way of deleting sectors, always
       try changing a white sector into a red one and joining it
       with its surroundings).
    *  Sometimes deleting a white sector will change random
       sector tags. It is much preferable to move the sector
       aside and use it later when you need a new
       sector.
10.3.9  Copying sectors
10.3.9.1  Bug
Copying sectors doesn't work properly - the copied sectors can't
be inserted into existing sectors (the lines turn one-sided).
10.3.9.2  Workaround
The problem is because red lines are two-sided and only the one
side (the inner one) is copied, producing a white one-sided line.
Thus we have to give the system a line first: Build a 'shell'
sector made up of white lines where you want to copy your sector.
This sector must have the exact same size and shape as the sector
to be copied.
Now just copy your old sector over the shell sector and -voila!-
the outer lines are now red.
The advantage: the sector to be copied can contain plenty other
sectors. Thus it might be a good idea to build a library of
complex objects, encase them in simple rectanglular sectors and
just copy these.
10.3.10  FPU reliance
10.3.10.1  Bug
It would seem that BUILD runs somewhat unstable on a system
without an FPU (like an 486SX).
This is not a terribly serious bug IMO, as most people are using
486DXs or Pentium CPUs these days.
10.3.10.2  Workaround
Download a good emulator. ## Anybody know any exact ftp
locations?
10.4  BUILD wishlist
Here's a wishlist for features in BUILD - most of them are pretty
simple and could be fixed with a simple patch (hint, hint).
If some hero out there decides to create a BUILD replacement,
please keep these in mind :)
    *  Fix the bugs mentioned above.
       Especially the one about copying sectors.
    *  Auto-repeat the '[' and ']' keys in 3D mode.
       It's real irritating to press these buttons 101 times to
       get the tilt just right.
    *  Reach normal player height in float mode at the touch of a
       button.
       I often find myself switching to Game Mode just to set the
       height above ground correctly.
    *  Center view button.
       If case you've looked up and down and now need to see the
       world as the player will.
    *  User-buildable help screens.
       These would allow you to create your own help screens.
    *  Allow us to change sprite numbers in 2D mode. It's
       terribly irritating to change sector effectors inside
       doors with the ceiling already lowered to the floor...
    *  Control the grid spacing via the number keys on the top of
       the keyboard.
    *  Have a Grid on/off toggle key.
       It's irritating switching through the grid resolutions all
       the time.
    *  Allow us to scale selected sectors.
    *  Allow circle drawing via midpoint and radius selection
       (creating a new sector).
    *  Allow us to tag several objects to change at the same
       time.
    *  Allow us to set most values directly.
       This especially applies to the Wall->Sector pointers, but
       is also good for flags, room heights, etc.
    *  Allow us to change both the floor/roof of a sector at once
       (enabling us to shift a door down without changing its
       height, for example).
    *  Toggle the data windows on and off, enabling more of the
       map to be displayed.
    *  Perhaps use BSetups Screen resolution for 2D mode as well?
       Using 1024x768 in editing would be great.
    *  3D option to copy a sprite with _all_ settings (tags,
       shade, scale, direction...everything).
    *  Allow us to use [F7] in Build like we can in the game
       itself, to make sure we can get the scaling right.
    *  Allow us to insert pre-built library objects (hinged doors
       spring to mind, or stairs) easily.




                           Chapter 11
                         Reference lists
This chapter contains useful reference material which you might
even want to print out and keep handy while designing levels.
11.1  #List of original levels#
I very very often refer to the original levels ("Now just how did
they achieve this neat effect?") but don't know the names and
level numbers by heart.
More info (like par times, etc) can be found in USER.CON, line
325ff).
This list now also contains the name of the default .MID file
played in the level (grabbag.mid is played at the title screen).
11.1.1  L.A. Meltdown
E1L1           Hollywood Holocaust (stalker.mid)
E1L2           Red Light District (dethtoll.mid)
E1L3           Death Row (streets.mid)
E1L4           Toxic Dump (watrwrl1.mid)
E1L5           The Abyss (snake1.mid)
E1L6           Launch Facility (secret) (thecall.mid)
E1L7           Faces Of Death (multiplayer) (ahgeez.mid)
E1L8           User Map (if your map isn't named ExLx.MAP, this
               is where it'll end up) (dethtoll.mid)
E1L9           Multiplayer 3 (like User Map)
E1L10          Multiplayer 4 (like User Map)
E1L11          Multiplayer 5 (like User Map)
11.1.2  Lunar Apocalypse
E2L1           Spaceport (futurmil.mid)
E2L2           Incubator (storm.mid)
E2L3           Warp Factor (gutwrnch.mid)
E2L4           Fusion Station (robocrep.mid)
E2L5           Occupied Territory (stalag.mid)
E2L6           Tiberius Station (pizzed.mid)
E2L7           Lunar Reactor (aliens.mid)
E2L8           Dark Side (xplasma.mid)
E2L9           Overlord (alfredh.mid)
E2L10          Spin Cycle (secret) (gloomy.mid)
E2L11          Lunatic Fringe (secret) (intents.mid)
11.1.3  Shrapnel City
E3L1           Raw Meat (inhiding.mid)
E3L2           Bank Roll (fatcmdr.mid)
E3L3           Flood Zone (names.mid)
E3L4           L.A. Rumble (subway.mid)
E3L5           Movie Set (invader.mid)
E3L6           Rabid Transit (gotham.mid)
E3L7           Fahrenheit (223c.mid)
E3L8           Hotel Hell (lordofla.mid)
E3L9           Stadium (urban.mid)
E3L10          Tier Drops (secret) (spook.mid)
E3L11          Freeway (secret) (whomp.mid)
11.2  List of tiles
This section contains a list of all tiles in the game, sometimes
with a short explanation.
A number like x,y or x..z denotes an animation sequence.
11.2.1  Control tiles
0              Ugly wall texture
               Default texture when creating new maps - is used
               as a marker to tell you to fix the textures.
1              Sector Effector
               Is invisible at game time, and is used to
               manipulate sectors and cause all kinds of special
               effects. Is usually placed inside the sector to
               effect. See list further on.
2              Activator
               Invisible at game time, use together with switches
               or touchplates to activate sector effectors in the
               same sector.
3              Touchplate
               Invisible at game time, it triggers an activator
               or masterswitch when a player enters the sector
               the touchplate is in.
4              ActivatorLocked
               Invisible at game time. It can be used to toggle a
               sectortag effect (meaning you can, for example,
               toggle the underwater flag of a sector by pressing
               a switch).
5              MusicAndSFX
               Invisible at game time, it handles music and sound
               play.
6              Locator
               Invisible at game time, it's used to define
               movement paths.
7              Cycler
               Invisible at game time, it pulses the light level
               in a sector.
8              MasterSwitch
               Invisible at game time. Triggered by a touchplate,
               it activates the sectortag function or a sector
               effector.
9              Respawn
               Invisible at runtime, it teleports in sprites when
               triggered by a touchplate.
10             GPSpeed
               Invisible at runtime, it sets movement speeds (for
               example, speed of closing doors).
11.2.2  Weapon sprites
21             The pistol.
22             The chaingun.
23             The RPG launcher.
24             The freezer.
25             The shrinker.
26             The pipebomb.
27             The tripbomb.
28             The shotgun.
29             The devastator.
11.2.3  Ammo sprites
37..39         Freezer ammo.
40             Pistol ammo.
41             Chaingun ammo.
42             Devastator ammo.
44             RPG ammo.
46             Shrinker ammo.
47             Box of pipebombs.
49             Shotgun ammo.
11.2.4  Item sprites
51             Small medkit.
52             Large medkit.
53             Portable medkit.
54             Armor.
55             Steroids.
56             Scuba gear.
57             Jetpack.
58             Spacesuit.
               This was evidentially planned as an item, but now
               we can just use it as decoration.
59             Night vision goggles.
60             Access card.
               Change the palette to set the cards color.
61             Protective boots.
100..115 Atomic health.
11.2.5  Special sprites
513            Bridge sprite
               Used to create a walkable bridge like in E1L1 near
               the exit.
11.2.6  Parallax (sky) textures
Note that parallaxed space textures will make the relevant sector
lethal to the player.
80,82,83       Moon surface.
               Can also be used as plain wall texture.
81             Moon surface with earth.
               Can also be used as plain wall texture.
84             Stars.
               Can also be used as plain wall texture.
85..87         Earth from space.
               Can also be used as plain wall texture.
88             Bright star with moon.
               Can also be used as plain wall texture.
89             Dark city scape.
90             Dark city scape, red windows.
91             City scape, lots of lit windows.
92             City scape with advertising (?) sign.
93             Just like 90.
               (Anybody know why? ##)
94             Solid red color.
95             Stars, like those over a desert.
96             City scape with many many lit windows.
               This texture seems messed up - some pink stripes
               are seen.
11.2.7  #Lights#
62             Red traffic light
63             Yellow traffic light
64             Green traffic light
120            Vertical oval technical light, shootable.
121            Broken version of 120.
122            Horizontal oval technical light, shootable.
123            Broken version of 122.
124            Horizontal rectangular light (two neo tubes),
               shootable.
125            Shot version of 124.
126            Square technical light in four sectors.
127            Wavy technical light.
128            Rectangual technical light, consisting of 3 lamps.
225            Long narrow blue light (up/down), used in windows
               of space station.
229            Like 225, but left/right.
256            Thin horizontal light on gray metal wall.
260...262      Three small, blue, wildly flickering lights.
276            Small blue rectangular light in dark background.
310            Large circular blue light on dark background.
326            Large circular yellow light, fits 325.
11.2.8  Switches
130            Locked access switch (requiring card).
131            Open access switch.
132,133        Horizontal slot switch.
134,135        Vertical slot switch.
136,137        Rotating switch.
138,129        90 degree switch.
140,141        Massive power switch.
142..145       Endlevel switch with animation.
146..149       Multiswitch.
161,163        Red button switch.
164,165        Flat square switch.
166,167        Rotating lit switch.
168,169        Circular lit switch.
170,171        Access switch
11.2.9  Doors
Doors consisting of two tiles are usually splitting doors.
11.2.9.1  Technical doors
150            Rising door with red panel.
151            Door side wall, fits 150.
152,153        Dark door, light row at top and bottom.
154,155        Door with circular pattern.
156            Modern dark blue door.
               Nice multipurpose tile.
157            Sliding door with nuke pattern on it.
158            Solid metal door with cross on it.
159            Narrow steel door with blue grip.
226            Locker door with space logo on it.
227            Locker door like 226, but plain.
242            Standard rising door with yellow/black tracks and
               cross-pattern.
243            Garage door in poor condition, good wall texture
               as well.
11.2.9.2  Normal
245            Light hotel door with small label.
11.2.10  Floors
Most of these tiles can be used for walls as well, of course.
181            Smooth modern stone with circle pattern on it.
182            Dark gray tile.
               Useful for kitchen walls.
183            Dark gray tile with grid pattern.
184            Gray modern lined, looks like columns behind bars.
191            Scruffy rectangular tiles.
200..202       Animated green slime.
210            Many light ovals on dark background. Can probably
               be usefully resized.
211            Patterned square stone tiles (gray).
216            Square gray stone tile.
220            Square gray stone tile with rounded edges.
228            Square metal tiles with thin dark border.
315            Dark stone with propeller-pattern grate in it.
               Fits 312.
324            Dark dirty stone with lighter square pattern on
               it.
328            Fancy light/dark patterned stone.
336..338       Animated water.
11.2.11  Walls
While these textures can be creatively used for anything, they
sure look like walls to me.
11.2.11.1  Machines
185            Four gray machines with an indirect light above
               them.
186..190       Green pipes on tiles.
               Use 191 for same background without the pipes.
192            Like the tiles from 186, but lit by a single lamp.
222            Technical panel in green machine.
247            Fuse panel (?) set in gray wall. Fits 251.
293            Large monitor.
294...296      Computer side with blinking lights.
297            Computer front with CRT and disk drive.
301            Small monitor.
305            Computer front with red IR camera (?).
309            Black/Yellow striped acces panel, 'DANGER'
               underneath.
327            The movie projector.
345            Metal cut-out with three pipes. Usable as door as
               well.
346            Metal cut-out, fits 345.
347            Metal cut-out with several pipes, fits 345.
11.2.11.2  Space ship hull
233            Light tech wall with green stripe.
234            Manoeuvre thrusters.
235            Solar panels.
236            Triangular pattern.
237            Thick stripe.
248            More hull.
11.2.11.3  Organics
329            Empty white holder in green evil-looking wall.
330            Filled version of 329 (corpse in space suit).
333            Green goo growing on gray stone wall (fits 344).
334            Edge of 333.
11.2.11.4  Air ducts
341            Hole in air duct wall.
342            Air duct wall.
343            Like 342, with lichens.
11.2.11.5  Modern
204            Dark rounded edge on light gray, use with 205.
205            Two parallel dark stripes on light gray, use with
               204 to create a special wall/door/sign.
207            Gray technical-looking wall with patterned stripe.
209            Similar to 207, but without the stripe.
212..215       Similar to 209.
217            Gray technical wall with two baby-blue (!) stripes
               on it.
223            Dark blue wall with metal rivets and light pipes
               lenghtwise.
224            Barred panel (?) for wall 223.
246            Light wall with embossed arrow pattern.
249,250        Like 246, but overgrown with slime.
251            Light wall with blue strip, lit from small lamps.
               Fits 247.
252            Like 251, but without the lamps.
11.2.11.6  Metal
193            Black metal, lit from the upper right.
194            Narrow metal strips, belonging to 193.
244            Dark corrugated metal, lit from lamp above.
255            Light gray wall edge, with a light strip.
257            Gray wall with light strips, fits 255.
286            Dark corrugated metal with x-shaped grid (like
               285).
317            Dark corrugated metal held by horizontal bars.
318            Like 317, but tilted 90 degrees.
322            Horizontal slabs held by fat vertical bars.
323            Outside of trash container.
324            Inside of trash container.
11.2.11.7  Concrete
195            Heavy concrete, like inside of factory.
196            Reinforced concrete, fits to 195.
197            Reinforced concrete with lights, fits to 195.
254            Long thin heavy-looking concrete with lichens.
283            Heavily textured concrete with high blue stripe.
284            Heavily textured concrete with low blue stripe.
288            Concrete with vertical iron bars all the way down.
289            Like 288, but with the bars in the lower half
               only.
290            Joins 289 and 291.
291            Like 288, but with blue strip lower.
331            Unstructured red.
335            Rough I-shaped light gray.
340            Horizontal slabs held by vertical stripes.
11.2.11.8  Stone
231            Heavy tiled dark stone, with lichen on it.
232            Similar to 232, but patterned.
241            Smooth white stone (marble?).
258            Dark heavy wall with blue light strip on the
               bottom.
259            Plain gray wall in need of cleaning.
278            Heavy gray stone wall, rectangularily textured.
279            Small gray stone texture, fits 278.
280            Small green stone texture, fits 278.
281            Gray stone with A-frame patterns.
282            Gray stone with 279 patterns near the top.
287            Gray stone with column texture, suitable for low
               walls.
292            Dark gray rock held by vertical dark stone
               stripes.
311            Striped gray stone, heavy lichens on it.
312            Like 311, with metal X-grate on it.
313            Like 312, with light in middle of X.
314            Like 312, with light at the top.
319            Gray stone with tulip pattern.
320            Dark wall with fancy pattern in light stone.
321            Similar to 320, looks slightly damaged.
332            Red tiles.
344            Plain gray stone, fits 333.
11.2.11.9  Rock
238            Light rock with vertical dark fissures.
239            Light rock with stones in it, fits 238.
240            Irregular gray rock, could be used as blasted
               stone.
11.2.11.10  Decoration
277            Earth Defense Forces logo on gray stone wall.
11.2.12  Grids
285            X-shaped modern metal, like 286.
11.2.13  Technical-looking items
11,12          The floating demo recording camera.
203            Computer module with chips on it.
11.2.14  Monitors
As far as I know, all monitors flicker somewhat and are
breakable.
263            Cityscape with skyscrapers.
264            White map, showing labelled building.
265            Radio dish.
266            The earth.
267            The moon.
268..270       White noise.
271            Computer subway map.
272            Computer floorplan showing 4 circles.
273            Computer floorplan - zoomed version of 274.
274            Computer floorplan.
275            Computer map with target points.
11.2.15  #Often-used special textures#
70             Broken mirror.
               This texture is set automatically when a mirror is
               broken.
160            Door pistons which squish automatically in a
               DOOM-door sector.
161            Dark door tracks.
198            Milk glass.
230            Invisible forcefield.
               Doesn't hurt you if touched, can be dimmed to
               invisibility.
852            Broken concrete
               Typically used inside blasted holes or damaged
               walls.
11.2.16  Diverse
20             A hollow frame, used in the status bar of the
               game.
30             The health box from the status bar.
31             The ammo box from the status bar.
33             The inventory box from the status bar.
218            Long thin gray metal plate with a rivet in the
               top.
219            Tree trunk.
221            Metal cover with space logo embossed on it.
11.2.17  Unclassified (please assist!)
199            Solid light blue.
206            Wall edge?
208            Wall edge? (similar to 206).
253            Long thin texture, door track?
11.3  List of Palettes
Textures and sprites can be set to their own palette via
[Alt]-[P]. The palette info (together with distance shading and
translucence effects) is stored in PALETTE.DAT.
Here's a list of all useful palettes found so far:
0              Default
               The standard palette. Used on a key, it defines a
               blue keycard.
1              Blue
               A sprite with this palette will only appear in
               multi-player mode.
2              Red
3              Normal
               Use this on the floor or ceiling to create non-
               attacking vehicles under parallaxed skies.
4              Special
               Makes sprites solid black - usful for turning
               forcefields invisible, for example.
6              Night-vision
7              Yellow
8              Green
               Changes water to green slime.
10             Red clothing
11             Light green clothing
12             Light gray clothing
13             Dark grey clothing
14             Dark green clothing.
               Set the nukebutton palette to 14 to have it show
               up in the proper 'secret level button' color.
15             Brown clothing.
16             Dark blue clothing.
17             Blue skin, green clothes.
               Nice trooper palette - gives them a blue, alien
               skin.
18             Light gray clothing.
19             Red skin, grey clothes.
20             Blue skin, grey clothes.
21             Red card
               Defines a red keycard. Causes red clothes, too.
               A miniboss is created by setting a BOSS1 to this
               palette.
22             Light gray clothes.
23             Yellow card
               Defines a yellow keycard.
24             Nice trooper palette - gives them a red and blue
               uniform.
25             Turns accessories red (like money from a
               stripper).
26+            Seems to cause trouble, sometimes the sprite can't
               be changed back.
11.4  List of sounds
Except for some typos and formatting, I took this section
straight from Shane King aka Scatt Man (scattman@bssc.edu.au).
Thanks loads!
11.4.1  Format of this list
Sound Number   Used in BUILD.
Sound Name     This is the name that Duke Nukem uses internally
               to reference the sound.
.VOC file name The .voc files are stored in the duke3d.grp file.
Min/Max frequency adjustment
               A random value between these two limits is chosen
               each time the sound is played.
Priority       If there are too many sounds to be played at once
               the higher (I think) priority sounds get played.
Attributes
                   *  Bit 0 (%) Repeat
                      This sound will be played over and over.
                   *  Bit 1 ($) Ambient Sound
                      This sound can be used as an ambient sound.
                   *  Bit 2 (#) Duke Talk
                      This sound will follow the player.
                   *  Bit 3 (@) Adult Mode
                      This sound will only be played if adult
                      mode is on.
                   *  Bit 4 (!) Random Ambient Sound
                      This sound can be used as a random ambient
                      sound.
Volume adjustment
               Used to make the sound louder or softer.
Sample rate (Khz)
               Multi means the .voc file has multiple blocks.
Description of sound
A + in any section denotes that the section is not defined, hence
following sections are also not defined
11.4.2  The sounds themselves
  + SLIM_PAIN           slimpn        0    0   3 -----    0       +
  0 KICK_HIT            kickhit       0    0   4 -----    0   5.988
    Duke's Mighty foot hits
  1 PISTOL_RICOCHET     ricochet      0    0   0 ----- 4096   5.988
    Pistol ricochet of solid object
  2 PISTOL_BODYHIT      bulithit      0    0   0 -----    0   5.988
    A bullet hits somebody
  3 PISTOL_FIRE         pistol      -64    0 254 -----    0   5.988
    Pistol firing
  4 EJECT_CLIP          clipout       0    0   3 -----    0   5.988
    Duke ejects a used clip
  5 INSERT_CLIP         clipin      512  512   3 -----    0   5.988
    Duke inserts a new clip
  6 CHAINGUN_FIRE       chaingun   -204 -204 254 -----  512  10.989
    Chaingun firing
  7 RPG_SHOOT           rpgfire     -32    0   4 -----    0   5.988
    RPG Firing
  8 POOLBALLHIT         poolbal1      0    0   0 -----    0       8
    A poolball is hit
  9 RPG_EXPLODE         bombexpl  -1024 1024 254 -----    0   multi
    A RPG rocket explodes
 10 CAT_FIRE            catfire     512  768   4 -----    0   5.988
    Freeze Ray Firing
 11 SHRINKER_FIRE       shrinker   -512    0   4 -----    0       8
    Shrinker Ray Firing
 12 ACTOR_SHRINKING     shrink        0    0   2 -----    0       8
    Somebody being shrunk
 13 PIPEBOMB_BOUNCE     pbombbnc      0    0   2 ----- 6144   5.988
    Tink of a pipe bomb bouncing
 14 PIPEBOMB_EXPLODE    bombexpl   -512    0 128 -----    0   multi
    A pipe bomb being detonated
 15 LASERTRIP_ONWALL    lsrbmbpt      0    0   3 -----    0   5.988
    A laser trip bomb being placed on a wall
 16 LASERTRIP_ARMING    lsrbmbwn      0    0   3 -----    0   5.988
    Beeping of a laser trip bomb about to explode
 17 LASERTRIP_EXPLODE   bombexpl   -512    0   4 -----    0   multi
    A laser trip bomb exploding
 18 VENT_BUST           ventbust    -32   32   2 -----    0   5.988
    Breaking a vent or fan
 19 GLASS_BREAKING      glass      -412    0   3 ----- 8192       8
    Glass window being smashed
 20 GLASS_HEAVYBREAK    glashevy   -412    0   3 ----- 8192  11.025
    Glass items being broken
 21 SHORT_CIRCUIT       shorted       0    0   0 ----- 6500       8
    Duke gets an electric shock
 22 ITEM_SPLASH         splash        0    0   2 -----    0   multi
    Item dropped into water
 23 DUKE_BREATHING      hlminhal      0    0 255 --#--    0       +
 24 DUKE_EXHALING       hlmexhal      0    0 255 --#--    0       +
 25 DUKE_GASP           gasp          0    0 255 --#--    0       8
    Duke catching breath after being under water
 26 SLIM_RECOG          slirec06      0    0   3 -----    0  11.025
    Green slime sights Duke
 27 ENDSEQVOL3SND1      KICKHEAD      0    0 254 -----    0  11.025
    Duke kicks bosses head at goal
 28 DUKE_URINATE        pissing       0    0   4 -----    0   5.988
    Duke going to the toilet
 29 ENDSEQVOL3SND2      GMEOVR05      0    0 254 -----    0       8
    Duke "Game over"
 30 ENDSEQVOL3SND3      CHEER         0    0 254 -----    0  11.025
    The crowd cheering Duke
 31 +
 32 DUKE_PASSWIND       +
 33 DUKE_CRACK          WAITIN03      0    0 255 --#--    0       8
    Duke "What are you waiting for, Christmas?"
 34 SLIM_ATTACK         slimat        0    0   3 -----    0  11.025
    Green Slime Attacking
 35 SOMETHINGHITFORCE   teleport      0    0   2 ----- 8192   5.988
    Something hitting a force field
 36 DUKE_DRINKING       drink18    -128  128   2 --#--    0  11.025
    Duke drinking water
 37 DUKE_KILLED1        damn03        0    0 255 -@#--    0       8
    Duke "Damn"
 38 DUKE_GRUNT          exert         0    0   2 --#--    0  11.025
    Duke - Uuugh
 39 DUKE_HARTBEAT       hartbeat      0    0   0 -----    0   5.988
    Duke's heart beating
 40 DUKE_ONWATER        wetfeet       0    0   4 -----    0  11.025
    Duke splashing through water
 41 DUKE_DEAD           DMDEATH     -64   64 255 --#--    0       8
    Duke's death scream
 42 DUKE_LAND           land02        0    0   2 -----    0       8
    Duke Landing on the ground (Not hurt)
 43 DUKE_WALKINDUCTS    ductwlk     -64  128   2 -----    0   multi
    Duke walking in air ducts
 44 DUKE_GLAD           +
 45 DUKE_YES            yes           0    0 255 --#--    0       +
 46 DUKE_HEHE           +
 47 DUKE_SHUCKS         +
 48 DUKE_UNDERWATER     scuba         0    0   2 -----    0   multi
    Duke underwater with scuba
 49 DUKE_JETPACK_ON     jetpakon      0    0   4 -----    0       8
    Duke turning jet pack on
 50 DUKE_JETPACK_IDLE   jetpaki       0    0   1 -----    0       8
    Duke with jet pack on
 51 DUKE_JETPACK_OFF    jetpakof      0    0   2 -----    0       8
    Duke turning jet pack off
 52 LIZTROOP_GROWL      +
 53 LIZTROOP_TALK1      +
 54 LIZTROOP_TALK2      +
 55 LIZTROOP_TALK3      +
 56 DUKETALKTOBOSS      duknuk14      0    0 255 -@#--    0       8
    Duke "I'm Duke Nukem and I'm coming to get the rest of you alien
bastards"
 57 LIZCAPT_GROWL       +
 58 LIZCAPT_TALK1       +
 59 LIZCAPT_TALK2       +
 60 LIZCAPT_TALK3       +
 61 LIZARD_BEG          chokn12       0    0   3 -----    0   multi
    Alien shaking head when not quite dead
 62 LIZARD_PAIN         +
 63 LIZARD_DEATH        +
 64 LIZARD_SPIT         lizspit       0    0   0 -----    0       8
    Lizard spitting at Duke
 65 DRONE1_HISSRATTLE   +
 66 DRONE1_HISSSCREECH  +
 67 DUKE_TIP2           shake2a       0    0 255 --#--    0       8
    Duke "Shake it baby"
 68 FLESH_BURNING       fire09     -256    0   0 ----- 6100   multi
    Fire crackling
 69 SQUISHED            squish        0    0   3 -----    0       8
    Someone is squished
 70 TELEPORTER          teleport      0    0   0 -----    0   5.988
    A teleporter is used
 71 ELEVATOR_ON         gbelev01      0    0   0 -----    0       8
    Elevator is used
 72 DUKE_KILLED3        thsuk13a      0    0 255 -@#--    0       8
    Duke "Uugh, this sucks"
 73 ELEVATOR_OFF        gbelev02      0    0   0 -----    0       8
    Elevator stopping
 74 DOOR_OPERATE1       slidoor    -256    0   0 -----    0  11.025
    Metalic Sliding Door
 75 SUBWAY              subway        0    0   0 -----    0   multi
    A subway train
 76 SWITCH_ON           switch        0    0   0 -----    0   multi
    Click of a switch being used
 77 FAN                 fan           0    0   0 -----    0       +
 78 DUKE_GETWEAPON3     groovy02      0    0 255 --#--    0       8
    Duke "Groovy"
 79 FLUSH_TOILET        flush         0    0   3 ---$-    0   multi
    Toilet being flushed
 80 HOVER_CRAFT         hover         0    0   0 -----    0       +
 81 EARTHQUAKE          quake         0    0   0 -----    0   multi
    Earthquake rumble
 82 INTRUDER_ALERT      alert         0    0   0 -----    0   5.988
    Warning alarm
 83 END_OF_LEVEL_WARN   monitor       0    0   0 -----    0       8
    End of level warning
 84 ENGINE_OPERATING    onboard       0    0   0 ---$-    0   multi
    Low pitched grind of engine operation
 85 REACTOR_ON          reactor       0    0   0 ---$-    0   multi
    High pitched hum of reactor
 86 COMPUTER_AMBIENCE   compamb       0    0   0 ---$-    0  11.025
    Computer operation sound
 87 GEARS_GRINDING      geargrnd      0    0   0 ---$-    0   5.988
    Turning gears grinding together
 88 BUBBLE_AMBIENCE     bubblamb   -256    0   0 ---$-    0   multi
    Water bubbling
 89 MACHINE_AMBIENCE    machamb       0    0   0 ---$-    0  11.025
    Thumping of machine operating
 90 SEWER_AMBIENCE      drip3         0    0   0 -----    0  11.025
    Drip into water
 91 WIND_AMBIENCE       wind54        0    0   0 ---$-    0   multi
    Gust of wind
 92 SOMETHING_DRIPPING  drip3         0    0   0 ----- 9000  11.025
    Loud drip
 93 STEAM_HISSING       steamhis      0    0   0 ----% 8192       8
    Steam hissing from pipe or pot
 94 THEATER_BREATH      +
 95 BAR_MUSIC           barmusic      0    0 254 ---$%    0  11.025
    Dance music in bar (as in bar in e1l2)
 96 BOS1_ROAM           bos1rm        0    0   3 -----    0  11.025
    Boss 1 screaming
 97 BOS1_RECOG          bos1rg        0    0   5 -----    0       8
    Boss 1 sees Duke
 98 BOS1_ATTACK1        chaingun      0    0   3 -----    0  10.989
    Boss 1 using chaingun
 99 BOS1_PAIN           bos1pn        0    0   3 -----    0       8
    Boss 1 in pain
100 BOS1_DYING          bos1dy        0    0   3 -----    0       8
    Boss 1 biting the dust
101 BOS2_ROAM           b2atk01       0    0   3 -----    0  11.025
    Boss 2 screaming
102 BOS2_RECOG          b2rec03       0    0   3 -----    0  11.025
    Boss 2 sees Duke
103 BOS2_ATTACK         b2atk02       0    0   3 -----    0  11.025
    High pitched scream as boss 2 attacks
104 BOS2_PAIN           b2pain03      0    0   3 -----    0  11.025
    Boss 2 in pain
105 BOS2_DYING          b2die03       0    0   3 -----    0  11.025
    Boss 2 dying
106 GETATOMICHEALTH     teleport   2048 2048 255 -----    0   5.988
    Sound when Duke picks up a health atom
107 DUKE_GETWEAPON2     getsom1a      0    0 255 --#--    0       8
    Duke "Come get some"
108 BOS3_DYING          b3die03g      0    0   3 -----    0  11.025
    Boss 3 Dying
109 SHOTGUN_FIRE        shotgun7      0  512 254 -----    0  11.025
16bit
    Shotgun blast
110 PRED_ROAM           roam06        0    0   3 -----    0   multi
    Trooper sees Duke
111 PRED_RECOG          predrg        0    0   3 -----    0   multi
    Trooper sees Duke
112 PRED_ATTACK         gblasr01    256  256   3 ----- 7680       8
    Trooper fires at Duke
113 PRED_PAIN           predpn      200  500   3 -----    0       8
    Trooper screaming in pain
114 PRED_DYING          preddy        0  400   3 -----    0   multi
    Trooper dying
115 CAPT_ROAM           predrm        0  200   3 -----    0   multi
    Lizard Captain roaming
116 CAPT_ATTACK         chaingun      0    0   3 ----- -200  10.989
    Lizard Captain attacking with chaingun
117 CAPT_RECOG          predrg     -400    0   3 -----    0   multi
    Lizard Captain sees player
118 CAPT_PAIN           predpn     -200  100   3 -----    0       8
    Lizard Captain in pain
119 CAPT_DYING          preddy     -200  100   3 -----    0   multi
    Lizard Captain dies
120 PIG_ROAM            roam29     -200  400   3 -----    0   multi
    Pig Cop roaming
121 PIG_RECOG           pigrg      -200  400   3 -----    0       8
    Pig Cop sees Duke
122 PIG_ATTACK          shotgun7   -256  256   4 -----    0  11.025
16bit
    Pig Cop fires shotgun
123 PIG_PAIN            pigpn       100  800   3 -----    0       8
    Pig Cop grunts in pain
124 PIG_DYING           pigdy      -800  100   3 -----    0       8
    Pig Cop death squeal
125 RECO_ROAM           jetpaki       0    0   3 -----    0       8
    Recon Car Moving
126 RECO_RECOG          pigrg         0    0   3 -----    0       8
    Recon Car sees Duke
127 RECO_ATTACK         gblasr01    256  256   3 ----- 7680       8
    Recon Car firing at Duke
128 RECO_PAIN           pigpn         0    0   3 -----    0       8
    Recon car grunts in pain
129 RECO_DYING          pigdy         0    0   3 -----    0       8
    Recon Car Dies
130 DRON_ROAM           snakrm        0    0   3 -----    0   multi
    Drone roaming
131 DRON_RECOG          snakrg        0    0   3 -----    0  11.025
    Drone sees Duke
132 DRON_ATTACK1        snakatA       0    0   3 -----    0  11.025
    High pitches zzzzz when drone attacks Duke
133 DRON_PAIN           snakpn        0    0   3 -----    0  11.025
    Drone in Pain
134 DRON_DYING          snakdy        0    0   3 -----    0  11.025
    Growl when Drone dies
135 COMM_ROAM           commrm        0    0   3 -----    0  11.025
    Fat commander roaming
136 COMM_RECOG          commrg        0    0   3 -----    0  11.025
    Fat Commander sees Duke and says "Die, Human"
137 COMM_ATTACK         commat        0    0   3 -----    0  11.025
    Fat Commander attacking and says "Suck it down"
138 COMM_PAIN           commpn        0    0   3 -----    0  11.025
    Fat Commander in pain
139 COMM_DYING          commdy        0    0   3 -----    0  11.025
    Extended scream of commander dying
140 OCTA_ROAM           octarm     -200    0   3 -----    0       8
    Octobrain roaming
141 OCTA_RECOG          octarg        0    0   3 -----    0       8
    Octobrain sees Duke
142 OCTA_ATTACK1        octaat1       0    0   3 -----    0       8
    Octobrain firing at Duke
143 OCTA_PAIN           octapn     -400    0   3 -----    0       8
    Octobrain screaming in pain
144 OCTA_DYING          octady     -400 -100   3 -----    0       8
    Octobrain dying
145 TURR_ROAM           turrrm        0    0   3 -----    0       +
146 TURR_RECOG          turrrg        0    0   3 -----    0       +
147 TURR_ATTACK         turrat        0    0   3 -----    0       +
148 DUMPSTER_MOVE       grind         0    0   0 -----    0  11.025
    Grinding wheels of dumpster
149 SLIM_DYING          slidie03      0    0   3 -----    0  11.025
    Green Slime dying
150 BOS3_ROAM           b3roam01      0    0   3 -----    0  11.025
    Boss 3 roaming
151 BOS3_RECOG          b3pain04      0    0   3 -----    0  11.025
    Boss 3 sees Duke
152 BOS3_ATTACK1        b3atk01       0    0   3 -----    0       +
153 BOS3_PAIN           b3rec03g      0    0   3 -----    0  11.025
    Boss 3 in pain
154 BOS1_ATTACK2        rpgfire       0    0   3 -----    0       +
155 COMM_SPIN           commsp        0    0   3 -----    0  11.025
    Fat Commander spinning
156 BOS1_WALK           thud          0    0   3 -----    0   multi
    Thump as Boss 1 walks
157 DRON_ATTACK2        snakatB       0    0   3 -----    0  11.025
    Drone attacking
158 THUD                thud          0    0   0 -----    0   multi
    THUD!
159 OCTA_ATTACK2        octaat2       0  600   3 -----    0   multi
    Octobrain attacking with teeth
160 WIERDSHOT_FLY       octaat1       0    0   3 -----    0       8
    Octobrain firing
161 TURR_PAIN           turrpn        0    0   3 -----    0       +
162 TURR_DYING          turrdy        0    0   3 -----    0       +
163 SLIM_ROAM           sliroa02      0    0   3 -----    0  11.025
    Green Slime roaming
164 LADY_SCREAM         FSCRM10    -256    0 254 -@---    0       8
    Woman screaming when hit
165 DOOR_OPERATE2       opendoor   -256    0   0 -----    0  11.025
    Swinging door
166 DOOR_OPERATE3       edoor10    -256    0   0 -----    0  11.025
    Sliding door
167 DOOR_OPERATE4       edoor11    -256    0   0 -----    0  11.025
    Sliding door
168 BORNTOBEWILDSND     2bwild        0    0 254 ---$-    0  11.025
    Born to be wild music
169 SHOTGUN_COCK        shotgnck     96  192   3 -----    0  11.025
    Shot gun being cocked
170 GENERIC_AMBIENCE1   grind         0    0   0 ----%    0  11.025
    Grinding Sound
171 GENERIC_AMBIENCE2   enghum        0    0   0 ---$-    0   multi
    Engine humming
172 GENERIC_AMBIENCE3   lava06        0    0   0 ---$-    0       8
    Lava
173 GENERIC_AMBIENCE4   bubblamb   -256    0   0 ---$-    0   multi
    Water bubbling
174 GENERIC_AMBIENCE5   phonbusy      0    0   0 -----    0  11.025
    Phone Engaged
175 GENERIC_AMBIENCE6   roam22        0    0   0 ---$-    0   multi
    Octobrain like sound
176 BOS3_ATTACK2        +
177 GENERIC_AMBIENCE17  myself3a      0    0 255 --#--    0       8
    Duke "Hmmm, don't have time to play with myself"
178 GENERIC_AMBIENCE18  monolith      0    0   0 ---$-    0  11.025
    Wierd alien ambience
179 GENERIC_AMBIENCE19  hydro50       0    0   0 ---$-    0  11.025
    Water ambience
180 GENERIC_AMBIENCE20  con03         0    0   0 --#--    0  11.025
    Duke "Hmmm, looks like I have the con"
181 GENERIC_AMBIENCE21  !prison       0    0 255 --#--    0   multi
    "Ha Ha Ha, too late Nukem, we're in control now"
182 GENERIC_AMBIENCE22  vpiss2        0    0 255 --#--    0       +
183 SECRETLEVELSND      secret        0    0 255 -----    0  11.025
    Secret Level
184 GENERIC_AMBIENCE8   amb81b        0    0   0 ---$-    0       8
    Far off alien ambience
185 GENERIC_AMBIENCE9   roam98b       0    0   0 ---$-    0   multi
    Muffled voice
186 GENERIC_AMBIENCE10  h2orush2      0    0   0 ---$%    0       8
    Water flowing
187 GENERIC_AMBIENCE11  projrun       0    0   0 ---$%    0       8
    Movie Projector
188 GENERIC_AMBIENCE12  blank         0    0   0 -----    0   5.988
    A blank .voc file
189 GENERIC_AMBIENCE13  pay02         0    0 255 -@#--    0       8
    Duke "Damn, those alien bastards are going to pay for shooting up my
ride"
190 GENERIC_AMBIENCE14  onlyon03      0    0 255 --#--    0       8
    Duke "What, there's only one of you?"
191 +
192 GENERIC_AMBIENCE15  rides09       0    0 255 --#--    0       8
    Duke "I think I'll climb aboard"
193 GENERIC_AMBIENCE16  doomed16      0    0 255 --#--    0   multi
    Duke "That's one doomed space marine"
194 FIRE_CRACKLE        fire09        0    0 254 ---$-    0   multi
    Fire crackling
195 BONUS_SPEECH1       letsrk03      0    0 255 --#--    0       8
    Duke "Let's rock"
196 BONUS_SPEECH2       ready2a       0    0 255 --#--    0       8
    Duke "Ready for action"
197 BONUS_SPEECH3       ripem08       0    0 255 --#--    0       8
    Duke "Rip 'em a new one"
198 PIG_CAPTURE_DUKE    !pig          0    0 255 -@---    0   multi
    "Got you now, you bastard, and we're gonna fry your arse"
199 BONUS_SPEECH4       rockin02      0    0 255 --#--    0       8
    Duke "Rockin'"
200 DUKE_LAND_HURT      pain39        0    0 255 --#--    0       8
    Duke landing from a height and hurting himself
201 DUKE_HIT_STRIPPER1  damnit04      0    0 255 -@#--    0       8
    Duke "Damn it"
202 DUKE_TIP1           dance01       0    0 255 --#--    0       8
    Duke "You wanna dance?"
203 DUKE_KILLED2        damnit04      0    0 255 -@#--    0       8
    Duke "Damn it"
204 PRED_ROAM2          roam58        0    0   3 -----    0   multi
    Trooper roaming
205 PIG_ROAM2           roam67     -200  400   3 -----    0       8
    Pig Cop roaming
206 DUKE_GETWEAPON1     cool01        0    0 255 --#--    0       8
    Duke "Cool"
207 DUKE_SEARCH2        whrsit05      0    0 255 --#--    0       8
    Duke "Where is it?"
208 DUKE_CRACK2         COMEON02      0    0 255 --#--    0       8
    Duke "Come on"
209 DUKE_SEARCH         pain87        0    0   2 --#--    0       8
    Umph, Duke pressing on walls
210 DUKE_GET            getitm19    -64   64 255 -----    0       8
    Beep when Duke picks up an item
211 DUKE_LONGTERM_PAIN  gasps07    -192    0 255 --#--    0       8
    Duke gasping
212 MONITOR_ACTIVE      monitor       0    0   0 -----    0       8
    Monitor beeping when changing camera
213 NITEVISION_ONOFF    goggle12      0    0   0 -----    0   multi
    Turn on or turn off night vision googles
214 DUKE_HIT_STRIPPER2  damn03        0    0 255 -@#--    0       8
    Duke "Damn"
215 DUKE_CRACK_FIRST    knuckle       0    0   3 -----    0   multi
    Duke cracking his knuckles
216 DUKE_USEMEDKIT      ahh04         0    0 255 --#--    0       8
    Ahhh
217 DUKE_TAKEPILLS      gulp01        0    0 255 --#--    0       8
    Gulp when Duke uses steroids
218 DUKE_PISSRELIEF     ahmuch03      0    0 255 --#--    0       8
    Duke "Ahhh, much better"
219 SELECT_WEAPON       WPNSEL21    128  128   3 -----    0       8
    Changing weapon sound
220 WATER_GURGLE        h2ogrgl2      0    0   1 ---$- 9000   multi
    Water trickling
221 DUKE_GETWEAPON4     wansom4a      0    0 255 --#--    0       8
    Duke "Who wants some?"
222 JIBBED_ACTOR1       AMESS06       0    0 255 --#--    0       8
    Duke "What a mess"
223 JIBBED_ACTOR2       BITCHN04      0    0 255 -@#--    0       8
    Duke "Bitchin'"
224 JIBBED_ACTOR3       HOLYCW01      0    0 255 --#--    0       8
    Duke "Holy Cow"
225 JIBBED_ACTOR4       HOLYSH02      0    0 255 -@#--    0       8
    Duke "Holy Shit"
226 JIBBED_ACTOR5       IMGOOD12      0    0 255 -@#--    0       8
    Duke "Damn I'm good"
227 JIBBED_ACTOR6       PIECE02       0    0 255 --#--    0       8
    Duke "Piece of cake"
228 JIBBED_ACTOR7       GOTHRT01      0    0 255 --#--    0       8
    Duke "Ooow, that's gotta hurt"
229 DUKE_GOTHEALTHATLOW needed03      0    0 255 --#--    0       8
    Duke "Oooh, I needed that"
230 BOSSTALKTODUKE      !boss         0    0 255 -----    0   multi
    "Who the hell are you?"
231 WAR_AMBIENCE1       WARAMB13   -512    0 255 !----    0   5.988
    Plane fly past
232 WAR_AMBIENCE2       WARAMB21   -512    0 254 !----    0   5.988
    Plane Crash
233 WAR_AMBIENCE3       WARAMB23   -512    0 254 !----    0   5.988
    Plane fly past
234 WAR_AMBIENCE4       WARAMB29   -512    0 254 !----    0   5.988
    Plane fly and alien scream
235 WAR_AMBIENCE5       FORCE01       0    0   0 --#--    0  11.025
    Duke "Now, this is a force to be reckoned with"
236 WAR_AMBIENCE6       QUAKE06       0    0   0 --#--    0  11.025
    Duke "I ain't afraid of no Quake"
237 WAR_AMBIENCE7       TERMIN01      0    0   0 --#--    0  11.025
    Duke "Hmhm, terminated"
238 WAR_AMBIENCE8       BORN01        0    0 254 !--$-    0  11.025
    Duke "Born to be wild"
239 WAR_AMBIENCE9       NOBODY01      0    0   0 --#--    0  11.025
    Duke "Nobody steals our chicks - and lives"
240 WAR_AMBIENCE10      CHEW05        0    0   0 -@#--    0  11.025
    Duke "Its time to kick arse and chew bubble gum, and I'm all out of
gum"
241 ALIEN_TALK1         MUSTDIE       0    0 255 -@#--    0  11.025
    "Duke Nukem must die"
242 ALIEN_TALK2         DEFEATED      0    0 255 -@#--    0  11.025
    "Earth attack force defeated"
243 EXITMENUSOUND       item15        0    0   0 -----    0       8
    Exit menus
244 FLY_BY              flyby      -256  256   3 -----    0   multi
    Startup sound (at nuke symbol)
245 DUKE_SCREAM         DSCREM04      0    0 255 -----    0       8
    Duke scream when he falls from a great height
246 SHRINKER_HIT        thud          0    0   3 -----    0   multi
    Shrinker ray hit wall
247 RATTY               mice3         0    0   0 -----    0  11.025
    Mice squeeking
248 INTO_MENU           bulithit   1024 1024   0 -----    0   5.988
    Enter menus
249 BONUSMUSIC          bonus         0    0 255 ----%    0  22.050
    Music at end of level screen
250 DUKE_BOOBY          BOOBY04       0    0 255 --#--    0       8
    Duke "I should have known that those alien maggots booby trapped the
sub"
251 DUKE_TALKTOBOSSFALL DIESOB03      0    0 255 -@#--    0   multi
    Duke "Die, you son of a bitch"
252 DUKE_LOOKINTOMIRROR lookin01      0    0 255 -@#--    0       8
    Duke "Damn, I'm lookin' good"
253 PIG_ROAM3           pigrm      -200  400   3 -----    0       8
    Pig Cop roaming
254 KILLME              killme     -128    0   0 -----    0  11.025
    Pod-female saying "Kill me"
255 DRON_JETSND         ENGHUM     1300 1300   0 -----    0   multi
    Engine humming
256 SPACE_DOOR1         hydro22       0    0   0 ----- 8192  11.025
    Space door/elevator open/up
257 SPACE_DOOR2         hydro24       0    0   0 -----    0  11.025
    Space door/elevator close/down
258 SPACE_DOOR3         hydro27       0    0   0 ----- 8192  11.025
    Space door/elevator open/up with stop
259 SPACE_DOOR4         hydro34       0    0   0 -----    0  11.025
    Space door open/close
260 SPACE_DOOR5         hydro40       0    0   0 -----    0  11.025
    Pressure release
261 ALIEN_ELEVATOR1     hydro43       0    0   0 -----    0  11.025
    Noisy elevator
262 VAULT_DOOR          vault04       0    0   0 -----    0  11.025
    Slow moving door
263 JIBBED_ACTOR13      LETGOD01      0    0 255 --#--    0  11.025
    Duke "Let God sort 'em out"
264 DUKE_GETWEAPON6     HAIL01        0    0 255 --#--    0  11.025
    Duke "Hail to the King, baby"
265 JIBBED_ACTOR8       BLOWIT01      0    0 255 -@#--    0  11.025
    Duke "Blow it out your arse"
266 JIBBED_ACTOR9       EATSHT01      0    0 255 -@#--    0  11.025
    Duke "Eat shit and die"
267 JIBBED_ACTOR10      FACE01        0    0 255 -@#--    0  11.025
    Duke "Your face, your arse, what's the difference?"
268 JIBBED_ACTOR11      INHELL01      0    0 255 -@#--    0  11.025
    Duke "See you in hell"
269 JIBBED_ACTOR12      SUKIT01       0    0 255 --#--    0  11.025
    Duke "Suck it down"
270 DUKE_KILLED4        dscrem18      0    0 255 --#--    0       8
    Duke strained scream
271 DUKE_KILLED5        pisses01      0    0 255 -@#--    0  11.025
    Duke "This really pisses me off"
272 ALIEN_SWITCH1       aswtch23      0    0   0 -----    0  11.025
    Splat switch
273 DUKE_STEPONFECES    happen01      0    0   0 -@#--    0  11.025
    Duke "Shit happens"
274 DUKE_LONGTERM_PAIN2 dscrem15      0    0 255 --#--    0       8
    Medium length scream
275 DUKE_LONGTERM_PAIN3 dscrem16      0    0 255 --#--    0  11.025
    Short scream
276 DUKE_LONGTERM_PAIN4 dscrem17      0    0 255 --#--    0  11.025
    Even shorter scream
277 COMPANB2            CTRLRM25      0    0   0 ---$-    0  11.025
    Oscillating alien sound
278 KTIT                ktitx         0    0 254 ---$-    0       8
    Duke "This is KTIT, K tit. Bringing you the breast, er, the best
    tunes in town"
279 HELICOP_IDLE        hlidle03      0    0 255 ---$%    0   5.988
    Helicopter blades spinning
280 STEPNIT             LIZSHIT3      0    0 254 -@#--    0  11.025
    Splat as Duke steps in it
281 SPACE_AMBIENCE1     monolith      0    0   0 !----    0  11.025
    Wierd alien ambience
282 SPACE_AMBIENCE2     hydro50       0    0   0 !----    0  11.025
    Grinding moving sound
283 SLIM_HATCH          slhtch01      0    0   3 -----    0  11.025
    Green slime hatching
284 RIPHEADNECK         rip01         0    0 254 -@#--    0  11.025
    Duke "I'll rip your head off and shit down your neck"
285 FOUNDJONES          jones04       0    0   0 --#--    0  11.025
    Duke "We meet again, Dr Jones"
286 ALIEN_DOOR1         adoor1        0    0   0 -----    0  11.025
    Very noisy door
287 ALIEN_DOOR2         adoor2        0    0   0 -----    0  11.025
    Splatty door
288 ENDSEQVOL3SND4      GRABBAG       0    0 254 ----%    0  11.025
    Duke Nukem Title music
289 ENDSEQVOL3SND5      name01        0    0 250 -----    0       8
    Duke "My name's Duke Nukem"
290 ENDSEQVOL3SND6      r&r01         0    0 251 -----    0       8
    Duke "After a few days of R & R, I'll be ready for more action"
291 ENDSEQVOL3SND7      lani05        0    0 252 -----    0       8
    Lani "Ohh, come back to bed Duke"
292 ENDSEQVOL3SND8      lani08        0    0 253 -----    0       8
    Lani "I'm ready for some action now"
293 ENDSEQVOL3SND9      laniduk2      0    0 254 -----    0       8
    Lani & Duke make love
294 WHIPYOURASS         WHIPYU01      0    0 255 --#--    0       8
    Duke "It's down to you and me, you one eyed freak"
295 ENDSEQVOL2SND1      gunhit2       0    0 249 -----    0  22.050
    Gun hit
296 ENDSEQVOL2SND2      headrip3      0    0 250 -----    0  11.025
16bit
    Head ripped off
297 ENDSEQVOL2SND3      buckle        0    0 251 -----    0  22.050
    Unbuckle jeans
298 ENDSEQVOL2SND4      jetp2         0    0 252 -----    0  11.050
    Throw off jetpack
299 ENDSEQVOL2SND5      zipper2       0    0 253 -----    0  11.050
    Undo zipper
300 ENDSEQVOL2SND6      news          0    0 254 -----    0  11.050
    Open newspaper
301 ENDSEQVOL2SND7      whistle       0    0 255 -----    0  11.050
16bit
    Whistle Duke Nukem theme
302 GENERIC_AMBIENCE23  2ride06       0    0 255 --#--    0       8
    Freeze ray hit somebody
303 SOMETHINGFROZE      freeze        0    0   3 -----    0  22.050
    Duke "Damn, that's the second time those alien bastards shot up my
ride"
304 DUKE_LONGTERM_PAIN5 pain54        0    0 255 --#--    0       8
    Uww
305 DUKE_LONGTERM_PAIN6 pain75        0    0 255 --#--    0       8
    Ugh
306 DUKE_LONGTERM_PAIN7 pain93        0    0 255 --#--    0       8
    Oww
307 DUKE_LONGTERM_PAIN8 pain68        0    0 255 --#--    0       8
    Uuughh
308 WIND_REPEAT         wind54        0    0   0 ---$%    0   multi
    Repeating gust of wind
11.5  Dimensions
Here are some facts on the dimensions of Dukes world. Keep in
mind, though, that you'll want to scale down real-world places to
make them faster and better-looking in Duke.
11.5.1  #Time#
The tag of the Time (GPSPEED) Effector has an actual relation to
real-time:
32 units = 1s.
11.5.2  Units
All (x,y,z) coordinates are in units; irritatingly, it seems that
the (x,y) units are different to the (z) units.
At a rough estimate, I would say that 16 (z) units = 1 (x,y)
unit.
2 (x,y) units = 1 pixel (normal texture)
8 (x,y) units = 1 pixel (shrunk using [E])
128 (z) units = 1 pixel (normal texture)
Floors are raised by 1024 units every time [PgUp] or [PgDn] is
pressed.
Viewing Duke via [F7] in a narrow corridor, I would estimate 1024
units to be about 2.6m in the real world (meaning 1m is roughly
400 units).
If I remember the weirdo US units correctly, 1 foot would be
about 128 units.
11.5.3  The map
Maximum grid width is 1024 units.
In the following paragraphs, height values are shown as z-
coordinate difference, with the number of [PgUp]-keypresses in
square brackets behind it:
11.5.3.1  Walking about
3072 [3]       Max. height difference for stairs.
6144 [6]       Min. sector height to enter while ducked.
10240 [10]     Min. sector height to enter (will duck
               automatically for 10).
16384 [16]     Height of standard sector created.
20480 [20]     Max. jumpable height.
11.5.3.2  Weapons
Numbers in brackets mean that only some of the shots will make
it.
3072 [4096] (3 [4])
               Max. height of floor to shoot over while ducked.
4096 (4)       Min. height to place tripbomb on when ducked.
5192 [4096] (5 [4])
               Max. height of ceiling to shoot under while
               ducked.
6144 (6)       Max. height of ceiling to shoot RPG under while
               ducked.
8192 [9216] (8 [9])
               Max. height of floor to shoot over while standing.
10240 [9216] (10 [9])
               Max. height of ceiling to shoot under while
               standing.
1024 (10)      Min. height to place tripbomb on when standing.
11264 (11)     Max. height of ceiling to shoot RPG under while
               standing.




                           Chapter 12
                          Miscellaneous
12.1  MAP design contest
Joseph G. Geisler III is holding a MAP design contest - he's
setting up an HTML page (adress so far unknown to me) with MAP
ratings (good idea, _I_ wanted to do that! :). So send your maps
to him at dubljay@baltimore.net, you might even win something
(keyrings, T-shirts).
His announcement was dated 6th Jun 1996, so don't be surprised if
he got swamped and stopped his offer :)
12.2  PC Gaming's offer
PC Gaming is another page that makes your maps accessible to the
world. Submit the levels in .ZIP form and include a screenshot as
well.
http://www.compusmart.ab.ca/mknox/pcgaming.htm
12.3  Conclusion
Phew! Well, that is all I have! I hope this FAQ proves to provide
a good resource for DN3D Editing information. If you have any
suggestions, questions, additions, or comments for the FAQ, send
me e-mail at "sz0759@rzmail.uni-erlangen.de".
Thanks for reading the FAQ!  -Klaus Breuer
   SUPPORT YOUR SHAREWARE COMPANIES!  REGISTER YOUR SHAREWARE!
12.4  Revision history
(Um...anybody out there who actually READS revision histories?)
v0.1           First release of the DN3D EDITING FAQ as an RFC.
               (16. May 1996)
v0.2           RFC II, added how-tos and changed the format a
               bit. (20. May 1996)
v0.3           RFC III, added more how-tos, extended reference
               list. Released to the mailing list only. (24. May
               1996)
v0.4           First non-RFC release, added lots of info,
               including a beginners tutorial and BUILD
               reference. Plenty of typos fixed. (25. May 1996)
v1.0           First 'real' release of the FAQ. Lots more info,
               including thoughts on level design and more how-
               tos. Plenty of errors removed, first version of
               Museum included.
v1.1           Even more info, improved museum, sound list added.
               Better ASCII logo and (again?) some bugs stomped.
               (27. June 1996)
v1.2           Now here's where the confusion starts. Seems like
               several v1.2 FAQs were created.
               And there's a v1.3, too...
               Thus, a jump to v1.5:
v1.5           Several irritating errors nuked. Level list
               enhanced. New tips and tricks. Museum removed.
               Changes marked with #. Lots of changes, in fact.
               (1. Dec. 1996)