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. New 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 white arrow 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 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.20 T Set the sector lo-tag. 6.1.3.21 H Set the sector hi-tag. 6.1.3.22 Alt-T Set the sprite or wall lo-tag. 6.1.3.23 Alt-H Set the sprite or wall hi-tag. 6.1.3.24 E Change a sprites status list number. ## Anybody know what this does, exactly? What's a status list number? 6.1.3.25 < and > Change the angle of a sprite or selected sector. Use [RightAlt] to select sectors. 6.1.3.26 Shift-< and Shift-> Change the angle of the sprite or selected sector in smaller increments. 6.1.3.27 [ ] 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.28 '-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? 6.1.3.29 '-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.30 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.31 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.32 F3 Decrements the players y-position by one unit. 6.1.3.33 F4 Increments the players y-position by one unit. 6.1.3.34 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.35 F6 If a sprite is selected, this will show a small help screen listing the numbers of all (?) sector effectors and their function. 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.36 F7 This shows a help screen listing all (?) sector tags with their function. 6.1.3.37 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.38 F9 As [F8], but you can search for a sector instead. 6.1.3.39 F10 Increments the angle of the player by one unit. Looks like a singularily useless function. 6.1.3.40 F11 Displays the message 'Grabbed wall sprite 0' - ?? ## 6.1.3.41 F12 Takes a .PCX screen shot. Turn off the Grid before you press [F12], as it isn't shown properly. 6.1.3.42 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 [Alt-F] (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.43 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.44 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.45 Ctrl-T Toggle tag box display on the sprites, walls and sectors. 6.1.3.46 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 Alt-F Determines whether the ceiling or floor texture aligns to the first wall. This is especially useful for tilted floors. 6.2.3.12 P Toggle parallaxing on floors or ceilings. This only works well on some textures (like 89..96, the cityscapes). 6.2.3.13 Ctrl-P Change the type of parallaxing used (three different types are available). 6.2.3.14 G This is supposed to give a floor height-mapping. ## Like [Alt]-[V], this doesn't seem to work for me. 6.2.3.15 E Toggles the tile size of floors/ceilings between normal and enlarged. 6.2.3.16 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.17 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.18 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.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. Whatever that is. 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. 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. Anybody know what a cstat is? 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.