The UnOfficial Duke Nukem 3D Editing FAQ is still in the 'beta'
stage, thus the version number 0.4. As soon as I can explain all
sector effectors and finally include the Museum (see below), I'll
bump the version number to v1.0.
Since it's quite certain that this project is to be continued,
we've now passed the RFC stage ;)
In v0.4, the following improvements can be found:
* Added 'Preliminary information'.
* Added 'Planning and designing a level'.
* Added 'A walkthrough to creating a simple level' .
* Added 'The Build Editor'.
* Added info on adding/converting DOOM maps and graphics.
* Added more how-tos.
* Lots more info included.
Plans for v0.5:
* Extending the reference section in chapter 10.
* Adding more how-tos.
* Release the first version of the Museum.
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.
Here 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.
* Anybody started some serious .CON file hacking or has any
other CON-info I could put into here?
* I'd especially appreciate it if anybody could point out
errors in this FAQ.
* 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 endresult would come in two parts:
1) This FAQ.
2) An uuencoded map called 'MUSEUM', demonstrating _all_ tips and
tricks explained in the FAQ as well as containing all textures,
sprites, etc for easy reference.
(Yes, I've started and, yes, it's a lot of work :)
The FAQ will be posted monthly (or bi-weekly, if you prefere) to
comp.sys.ibm.pc.games.action and alt.games.duke3d.
Ciao,
Klaus
So here's v0.4 of the FAQ:
THE UNOFFICIAL
DUKE NUKEM 3D
EDITING
FAQ
[need ASCII logo here - anyone?]
Release v0.4
Last Updated: May 20, 1996
Written by: Klaus Breuer (sz0759@rzmail.uni-erlangen.de)
Chapter 2 Introduction
2.1 *A word from Klaus Breuer*
2.2 *About the "UnOfficial" DUKE NUKEM 3D EDITING
FAQ*
2.3 [Getting the "UnOfficial" DN3DE FAQ]
2.4 (Adding to the FAQ)
2.5 (The DN3D EDITING mailing list)
2.6 (The DN3D EDITING ftp site)
2.7 (WWW sites)
2.8 (Acknowledgments)
2.9 Accurate information
2.10 [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 *Before starting*
4.2 *Pros and cons of using real-world maps*
4.2.1 *Advantages*
4.2.2 *Disadvantages*
4.3 *Using DOOM maps*
4.4 *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*
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, 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 v0.4 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!
A word of caution for those of you who'ld like to print this FAQ:
the table of contents alone takes up 6 pages on my printer.
You're probably better off reading the whole thing with an ASCII
editor. Personally, I use the most excellent LIST program from
Vernon Buerg (no, I'm not affiliated, just a happy user).
2.2 *About the "UnOfficial" DUKE NUKEM 3D EDITING FAQ*
Welcome to the release v0.4 of the "UnOfficial" DUKE NUKEM 3D
EDITING FAQ.
What does that mean? Version 0.4 is the fourth 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.
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."
Currently we're still in the 0.x stage, meaning a very
preliminary FAQ. As soon as we have amassed sufficient info in
here, I'll update the version number to 1.0.
You may be wondering why chapter headings are enclosed in either
{}'s, []'s, ()'s, or **'s. The definition of these is as follows:
{} Chapters enclosed in curly brackets haven't been
written yet.
[] Chapters enclosed in brackets mean that the
information contained in the chapter has not been
updated in this or the previous FAQ.
() Chapters enclosed in parenthesis mean that the
information contained in the chapter has not been
updated since the previous FAQ.
** Chapters enclosed in asterisks means that the
information contained in the chapter is new or has
been updated for the current version of the FAQ
you are reading.
Also, ##'s are at times found in the text - these denote
questions I urgently need help on, and any feedback is especially
appreciated.
2.3 [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 groups:
The "Subject:" line of the post will be "'UnOfficial' DN3D
EDITING FAQ v??.??" where "??.??" is the version number of the
FAQ.
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.4 (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.
2.5 (The DN3D EDITING mailing list)
Ginger (lattav@vnet.net) has set up a mailing list! Mail to
duke3d-edit@oozoo.vnet.net or duke3d-edit-digest@oozo.vnet.net to
get the 30k digested version.
2.6 (The DN3D EDITING ftp site)
We now have an ftp site where everything for editing duke maps
will be found. The address is ftp.vnet.net/pub/duke3d.
2.7 (WWW sites)
So far, I know of the following WWW sites which contain info
about map editing (in no particular order):
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:
Brett Gmoser (gmoser@gramercy.ios.com)
Wrote a long tutorial covering all kinds of
things.
Cho Yan Wong (aka Tempest) (pwong@pobox.leidenuniv.nl)
Wrote several very good tutorials.
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!
Jim (jek19@ios.orci.com)
Help on rotating doors.
Nigel Hughes (ngh94@aber.ac.uk)
Converting the FAQ to HTML format.
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.
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.9 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.10 [Help with new levels]
If you are building a new level and are experiencing trouble,
feel free to contact me about it. Chances are that you are not
the only one with this problem, and I can add it to the FAQ.
Also, your particular difficulty could be an interesting side-
effect of something else, and others might want to hear about it
as well.
However, *please* read the FAQ fully before asking me about
anything :)
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.
* 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.
* 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:
DNKROZ Toggle God mode.
DNUNLOCK Unlock all doors on the level.
DNWEAPONS Give all weapons but no items or keys.
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.
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:
_________________________
/ | _______________
/ .______. |
| * <- The player . . |
\ .------. |
\ | |_______________|
\________________________| (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-towall 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 yu -
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).
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 *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'ld
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?
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?
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.
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 travelling theme?). Don't include yet
another alien sitting on the toilet (it's only
funny the first time round). And so on.
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.
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.2 *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.2.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.
4.2.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.
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.3 *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, and it's easy to mess things up and even
forget textures.
4.4 *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?
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.
Jokes 3DRealms added lots of in-jokes: the doomed space
marine, Indiana Jones, the Terminator, the alien
on the toilet...
All these are jokes you can't use again: they're
old now. Invent your own!
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 'DUKE NUKEM BUILD V041996 BUILD by Ken Silverman'
(the version from April 1996).
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).
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 4.
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.
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 - it's the reason most outside areas are so high and
narrow in the game. Keep your eyes low for now :)
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 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]. Tis 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.
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 DEMP.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, by the
way.
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*
The last thing missing is the enemy.
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!
## I've taken most of the info in this chapter from the build
docs. I hope to extend this with lots of tips and tricks to the
individual commands - so if you know anything, let me know!
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 places 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 ractangular 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' (current version from April 1996).
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.
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. 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
stemp the old sectors into the new map.
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.
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 chages 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.
[C] draws the circle.
[Spacebar] 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.
## I haven't yet found out how to trigger the search yet, however
(and no, it isn't '[' and ']').
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 blastable wall
has triangular holes in it, this may be
why.
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)
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]
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 tis 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.
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 *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 *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.19 *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.20 *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.21 *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.22 *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.23 *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.24 *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.25 *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.26 *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.27 *Shift-Enter*
Copy the shade value only.
6.2.3.28 *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.29 *'-ENTER*
Pressing ['] and [Enter] copies the tile only, leaving everything
else (especially the shade!) as it is.
6.2.3.30 *'-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.31 *'-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.32 *'-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.33 *'-G*
This toggles the display of the selected texture (via [TAB]) on
and off.
6.2.3.34 *'-Y*
## Listed as 'Toggle purple background', I haven't found out what
it does yet.
6.2.3.35 *'-T*
Allows you to change the lo-tag of the selected object.
6.2.3.36 *-H*
Allows you to change the hi-tag of the selected object.
6.2.3.37 *'-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.38 *'-Y*
Changes the visibility of a sector (how fast it darkens with
distance).
6.2.3.39 *'-C*
Changes the global shade of a sector to the shade of the object
currently selected.
6.2.3.40 *'-Del*
## Sets the cstat to 0. Anybody know what a cstat is?
6.2.3.41 *F1*
Shows a short help menu, listing the less-commonly used commands.
Pres [F1] to remove it again.
6.2.3.42 *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.43 *F3*
Decrements the players y-position by one unit.
6.2.3.44 *F4*
Increments the players y-position by one unit.
6.2.3.45 *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.46 *F6*
Same as [F5].
6.2.3.47 *F7*
Same as [F5].
6.2.3.48 *F8*
Same as [F5].
6.2.3.49 *F9*
Rotates the players view left a bit.
6.2.3.50 *F10*
Rotates the players view right a bit.
6.2.3.51 *F11*
Changes the gamma correction (makes the screen lighter).
6.2.3.52 *F12*
Takes a .PCX screen shot.
6.3 Typical mistakes to avoid
This section contains, in no particular order, common errors
which you should avoid:
6.3.1 Crossed lines
By this I mean bounding lines from the same sector crossing each
other. While the game will aloow this, it usually looks bad.
6.3.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).
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 :)
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 A sprite with the tile number 1247 (yellow
gasbottle), 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 (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 *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.4.0.1 (Notes)
* You can make arching doorways by splitting the doorway
into several sectors and tilting the roof or even the
floor.
7.5 (Windows)
A window is simply a sector with a raised floor and a lowered
roof which has been inserted into a normal wall.
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.6 (Air ducts)
Air ducts work in the exact same way as glass panes, with two
differences:
* You need the air vent texture (407: rotating fan, 595:
metal grate) instead of glass.
* You'll have to connect the air duct itself behind the
wall, obviously :)
7.6.1 *Notes*
* 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.
7.7 (Angled surfaces)
To tilt a sector surface (roof or ceiling), point at it and press
the '[' and ']' keys.
7.7.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 [/].
7.8 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.9 (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.10 (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.10.1 (Notes)
* To get the secret-level color on the nukebutton, set its
palette to 14.
7.11 (Level-end sector)
Tag a sector [0,65535] to end the level when a player enters this
sector.
7.12 Cameras
You can place cameras around the map, which will relay an image
to one or more viewscreens.
7.12.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) [Channel,Mobility]
They have to be sprites, and can be placed
anywhere in a room, facing in any direction. Using
the lo-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.12.2 *Notes*
* 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 armored
glass (84 or 663), to cause the well-known purple circles
when it's being shot at.
7.13 Blastable walls (user control)
Such walls can be blown up by detonating something close to them
(a pipebomb, RPG, etc).
7.13.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.13.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.
* If you give the crack a palette number of 1, it can only
be blown in multiplayer games.
7.13.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.14 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.14.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.14.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.15 (Conveyor Belts)
Conveyor belts are sectors which will transport any sprite on
them in a certain direction.
7.15.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.15.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.16 (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.
A mirror is in effect a masked wall (created by pointing on the
floor in front of a two-sided wall and pressing [M]) with the
texture 560.
Then make the mirror single-sided by pointing at it and pressing
[1].
Finally, point at it and press [B] and [H] to set the 'block
movement' and 'hittable' flags.
7.16.1 (Notes)
* You can make the mirror unbreakable by now setting the
'block movement' and 'hittable' flags.
* If the 'mirror room' is too small, weird graphic glitches
can occur.
* 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.17 Light switches
Light switches turn the light in one or more sectors on and off
('on' is very bright, 'off' is the original light level).
7.17.1 Setup
* Place a switch (eg 164) [0,Channel] sprite anywhere.
* The sectors to light up need an S [Channel,12].
7.17.2
* 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?
7.18 *Permanently rotating sector (gears)*
You can set up a sector to keep rotating around a midpoint, like
the gears in E1L3.
7.18.1 *Setup*
First, build your sector. If the floor is to be visible, make
sure that you're 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.
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.18.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.19 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.19.1 Standard hinged
A hinged door opens by rotation 90 degrees sideways.
The door sector [0,23] contains three special sprites:
S [11,Channel]
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 sector 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.19.1.1 Notes
* The doors floor texture doesn't rotate, but the ceiling
one does.
* 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.
7.19.2 (DOOM-type door, remote control)
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.19.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.19.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).
7.19.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.19.4 (Sliding sideways)
This door works by moving/shrinking a sector sideways. A perfect
example of this can be found in E1L3 (Death Row), just to the
right of your starting point.
Building this door is easier to do than to explain, so bear with
me :) As soon as I have a better idea as to what exactly is
happening, I'll be able to explain this better...
Let's assume the door slides from the right into the left wall
when opening. We build the door in stages:
* The Entrance Sector, which contains the doorway.
First, we assign a sector (eg, connecting two rooms) which we'll
call the Entrance Sector. We're actually moving a sector
containing a one-sided wall, so the whole visible height will
move. This means that a sliding door is typically found in a low
passage, connecting two higher rooms.
* The Moving Sector.
Insode the Entrance Sector, insert two points below each other on
the left wall. From these, you now build a sector extending into
the Entrance Sector (in effect, the Entrance Sector will split
into an U-shaped Entrance Sector and a narrow moving sector)
[0,25].
* The door.
The door is actually made up of one-sided walls: insert two
points on the left wall inside the Moving Sector and pull them to
the right, creating the door itself.
You'll actually want to insert three points, creating a pointed
door which doesn't cover the Moving Sector completely but leaves
two wedge-shaped pieces open into which we'll add some tags:
* The tags.
S [Channel,15], facing right
M [DoneSound,MovingSound]
* The left wall
Insert two points on the left wall of the Entrance Sector: one
above the Moving Sector (call it P1) and one below it (call it
P2).
Now take the two inner points (the ones connecting the left wall
with the Moving Sector) a straight towards the left (not too
far), extending the Moving Sector in the process.
Finally, move P1 onto the upper line of the door and P2 ontoo the
lower one.
Phew! Looks weird, because so many unconnected lines and points
are overlaying each other (obviously, you should work with Grid
Lock on) but it should work.
(Notes)
* A typical sliding door texture is 447.
* So far, I've only gotten this door to open half-way ##.
Evidentially, there's an additional, flat sector involved
(see E1L3), but I haven't gotten it to work yet.
* Changing the heading of the sector effector produces
interesting (and usually, buggy) results.
7.19.5 (Star Trek door)
This door slides sideways, compressing its texture as it does so.
The door is activated by pressing against it.
7.19.5.1 (Setup)
This door works just like the sliding door above, except that it
opens all the way :)
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 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.19.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
haddly see the compressing effect while the door opens.
7.19.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.19.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.19.7 (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.19.8 (Auto-closing doors)
Simply add an S[DelayTime,10] in the door to auto-close.
7.20 Shrinking sector (remote control)
This will shrink a sector (for example a curtain) by on the press
of a button. ## I haven't gotten the sector to regrow, however.
7.20.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,Opening Speed]
7.21 (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.21.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 (yes, it sounds obvious that the floor z-coordinate of
the lower floor should be larger (lower) than the floor z-
coordinate of the upper level, but I've fallen for it already
while building overlapping sectors).
Tag the sector according to the desired elevator type:
[0,16] Open elevator
[0,18] Closed elevator
7.21.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.
* 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.22 Teleporters
Teleporters move players instantly between any two points.
7.22.1 Setup
Teleporters are not sectors, just sector effectors. They do need
the floor tile 626, though.
S [7,Channel], facing is the same the arriving player should
face.
7.22.2
* A teleporter without a floor tile 626 only act as
receivers.
* A single teleporter without a destination will kill the
player.
* When usgin 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 u on the next-highest one.
* Teleporters don't work if you fly over them.
* ## 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.23 Swimming pools
Swimming pools allow the player to jump into the water and dive
around under the water surface.
7.23.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.23.2
* 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.
7.23.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.24 {The Grapplers}
7.25 (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 wall 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.
* Build a house with two stories above each other, as long
as the windows are on opposite sides of the house.
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.
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.25.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.
7.26 *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.27 *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.27.1 *Notes*
* Building a solid-looking bridge (one having width)
actually takes some time, as you have to mess around with
the side walls too (also sprites) 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
[254,0].
* 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.
* It's perfectly possible to create a multilevel building
out of nothing but sprites. It's a hell of a job, however.
7.28 {Morphing ramps}
7.29 (Vehicles)
Vehicles (simply a sector with a raised floor) can be set up to
travel from their original position to a pre-determined closed
path, which they will follow.
7.29.1 Setup
* The vehicle sector requires an S [0,6]. The position of
this controller determines the rotation center when
turning, and its direction the facing of the vehicle.
* 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.29.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.
* You can only have one route defined per map.
7.30 (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.30.1 *Notes*
* Since a parallaxing ceiling makes a vehicle aggressive, we
can't have harmless cars driving around in open streets.
7.31 *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.31.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 [WaveHeight,29] in each.
7.31.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]).
* WaveHeight ranges from 0 to 2048.
7.32 *Engine piston*
In designing machines, you often want a piston moving up and
down, squashing anything wandering underneath.
7.32.1 *Setup*
Simply add an S [0,25] in the sector.
7.32.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.33 *Edge walls*
The end 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.33.1 *Setup*
* Build a low wall around your world.
Use any texture you like.
* Set the ceiling texture 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 to the floor.
7.34 *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.34.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.34.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.35 *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.35.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.35.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.36 *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.
Chapter 8
{Programming the .CON files}
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.
9.1.2 *EditArt*
EditArt is also included on the Duke3D CD and allows you to
change the graphics included in Duke3D.
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.
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.
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.
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.
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.
## Does anybody know how to renumber tiles? I would love to
simply rename TILES000.ART to TILES0014.ART and take it from
there - if I do that right now, all the textures at the beginning
are overwritten :(
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.
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
around, as they don't fit anymore either.
But you'll be able to play DOOM maps with DOOM textures in Duke3D
(wheeee).
9.2 {Data files}
9.2.1 {Graphics}
9.2.2 {VOC files (Sounds)}
9.2.3 {MID files (Music)}
9.2.4 {.CON hacks}
9.2.5 {Demos (Recordings)}
9.2.6 {New levels}
9.2.6.1 GRP Authoring Template v0.1
Note that I've simply taken and modified the v1.4 of the
"Official" WAD Authoring Template - ## any objections?
For all of you map authors out there, here is the "Official" GRP
Authoring Template v0.1. When you release your map, please fill
this form out and place it in the information file you create
about your new map. This way we'll easily be able to compare
submissions.
Thanks to Steve Bareman (bareman@hope.cit.hope.edu) for creating
a WAD about file standard.
GRP Authoring Template V0.1 (Clip this line)
================================================================
Title :
Filename : xxxx.MAP
Author : Your name here
Email Address :
Misc. Author Info :
Description : Set the mood here.
Additional Credits to :
================================================================
* Play Information *
Episode and Level # : ExMx (,ExMx,...)
Single Player : Yes/No
Cooperative 2-8 Player : Yes/No
Deathmatch 2-8 Player : Yes/No
Difficulty Settings : Yes/Not implemented
New Sounds : Yes/No
New Graphics : Yes/No
New Music : Yes/No
New Programming : Yes/No
Demos Replaced : None/1/2/All
* Construction *
Base : New level from scratch/Modified
ExMx/xxx.MAP
Editor(s) used :
Known Bugs :
* Where to get this map *
FTP sites:
BBS numbers:
Other:
9.3 *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.3.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.
* A program to renumber the tiles in the TILESxxx.ART files
(changing localtilestart and localtileend - see
ARTFORM.TXT for details). This one should be easy, but I
haven't got the time for it.
* 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.
9.3.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.
Chapter 10
*Troubleshooting*
10.1 *Common questions*
10.1.1 *My 3D mode messes up*
A common lament.
You've forgotten that the entire \GOODIES\BUILD directory has to
be copied into your Duke3D directory. The 3D mode requires the
DUKE3D.GRP or the TILESxxx.ART files to work properly.
10.1.2 *I'm using Windoze/Win95, and...*
Tough luck.
Use DOS.
10.1.3 *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.4 *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.2 *Bugs in the game*
The game itself contains some interesting bugs, none of them
serious.
10.2.1 Remote switch triggering
10.2.1.1 (Bug)
If a switch is placed on a thin wall, you can trigger it from the
other side of the wall.
10.2.1.2 (Workaround)
Place switches on thicker or even outside walls.
10.2.2 *Crash on shattering objects*
10.2.2.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.2.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.3 *Phantom bullet-holes*
10.2.3.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.3.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 Selecting long lines
10.3.1.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.
10.3.1.2 Workaround
Keep the lines short by inserting points on too long olines:
shorten the line, insert a point, lengthen the line again, move
the newly inserted point into the middle of the line.
10.3.2 *Splitting a sector*
10.3.2.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.2.2 *Workaround*
None known so far. Save your work first.
10.3.3 *Selecting sprites*
10.3.3.1 *Bug*
If several sprites are exactly over each other, they don't start
to flicker as they are selected.
10.3.3.2 *Workaround*
Be aware of this, try to move the sprite anyway.
10.3.4 (Autoaligning textures)
10.3.4.1 (Bug)
When pressing [.] in 3D mode to autoalign textures, the system
hangs at times.
10.3.4.2 (Workaround)
I don't know of any workaround to this.
Save before your press [.], and don't use it needlessly.
10.3.5 *Displaying memory info*
10.3.5.1 *Bug*
When pressing [']-[M] to display the memory info, the system will
be unstable, crashing when returning to 3D mode.
10.3.5.2 *Workaround*
None known. Don't use this function, you don't need it anyway.
10.3.6 *Function keys in 3D mode*
10.3.6.1 *Bug*
In 3D mode, the function keys [F5], F[6], F[7] and F[8]
evidentially try to display the same help screens as they do in
2D, messing up the graphics in the process.
10.3.6.2 *Workaround*
Simply press [NumEnter] twice to jump to 2D mode and straight
back into 3D.
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 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.1.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.1.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.1.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.1.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.1.5 *Special sprites*
513 Bridge sprite
Used to create a walkable bridge like in E1L1 near
the exit.
11.1.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.
128 Rectangual technical light, consisting of 3 lamps.
11.1.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.1.9 *Doors*
Doors consisting of two tiles are usually splitting doors.
11.1.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.
11.1.10 *Floors*
Obviously, these textures can be used for ceilings, walls and
even sprites, but they _look_ like floors.
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 ractangular tiles.
11.1.11 *Walls*
While these textures can be creatively used for anything, they
sure look like walls to me.
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.
11.1.12 *Technical-looking items*
11,12 The floating demo recording camera.
160 Steel pistons with green slime.
11.1.13 *Often-used special textures*
70 Broken mirror.
This texture is set automatically when a mirror is
broken.
161 Dark door tracks.
852 Broken concrete
Typically used inside blasted holes or damaged
walls.
11.1.14 *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.
11.1.15 *Unclassified (please assist!)* ##
62 Small red sphere.
63 Small yellow sphere.
64 Small green sphere.
11.2 *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
7 Yellow
8 Green
Changes water to green slime.
14 Secret level
Set the nukebutton palette to 14 to have it show
up in the proper 'secret level button' color.
21 Red card
Defines a red keycard.
22 Yellow card
Defines a yellow keycard.
11.3 {List of Sector Effectors}
This section will explain all sector effectors in detail.
11.4 {List of sounds}
This section will list all sounds, together with info whether
they can be used as ambient sounds.
11.5 *Dimensions*
Here are some facts on the dimensions of Dukes world:
11.5.1 *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.2 *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.2.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.2.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 (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.2 *Revision history*
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. (27. May 1996)
---
Klaus Breuer, Rudelsweiher Str. 6b, 91054 Erlangen, Germany
"Geez, I need a *reason* for everything?" -- Calvin
"Should I or shouldn't I? Too late, I did!" -- Hobbes