                      ---===  QUAKEMAP  ===---        for Windows 95

Version 2.0  (beta 4)

This is the documentation for the QuakeMap Editor only.
See EXPLORER.TXT for documentation about the QuakeMap Explorer.

QuakeMap Editor is a basic level editor for the game Quake from id
Software. It provides for full 3D editing of .map files, allowing
you to build levels by using polyhedrons with any number of sides
with any angle: you are not restricted to cubes.


What's new (non-exhaustive list) :
- Entities now displayed with a cross on the map.
- Entity list is now hierarchical.  Entities can be arranged by
  groups.
- Grouping of brushes.
- Clipboard operations (copy, cut and paste).
- Brush rotation and scaling.
- Streamlined interface with new buttons.
- Brush substraction.
- Unlimited UNDO/REDO.


 * Introduction *

The screen you see when you first open Quake Map is this Quake
Map Explorer.  If you open a .qme file, the left portion of the
screen will display the items (such as text descriptions,
patches, etc.) that are included.  From here, you can open the
map to work on the level.  You can also directly open a .map file
and work on it.

When you open a map, you see the QuakeMap Editor. The main screen 
is divided into 3 regions. The two regions at the right shows you
the level you are currently editing. The bottom window has a yellow
background and is a top view of the level.The top region, which is
green, is a front view (this "side" view can be rotated throughout
360 degrees, not limiting you to just XY or XZ views). The
level is drawn in wireframe. The left region shows you various
parameters, such as the view scale, the grid, some editing
icons, the compass, and the currently selected object.

To understand basic Quake editing principles, open an already
existing .map or .qme file, like the included sample Test.qme.
Use the "file" menu to open the desired map. Note that the file
Models.qme is used internally by QuakeMap, to hold, among other,
the list of standard entities, and contains no real map itself.

To play a level, choose "GO!" in the "Quake" menu. There are other
options, but the first one is a summary of the next ones : it extracts
the necessary textures in a wad file, launches QBSP and then Quake.
You will be asked where the QBSP/VIS/LIGHT utilities are on your hard
disk.

As long as no object (entity or polyhedron) is selected, the bottom
left region of the screen lists all of the entities of the map. An
entity is either a particular Quake item, enemy, light spot, etc, or a
solid object like a door, a switch, or the map itself. The former
are shown beside a sphere, and the latter are shown beside a cube.
Independant entities are associated with a particular spot in the
level, which is the starting point of the item or monster. These
entities are shown on the map as a cross, or +.  If you click on
one of these entities, the spot will be shown on both views
of the map as a sphere. You can drag it elsewhere with the mouse.
Moveable entities, i.e. those associated with solid objects like
doors and platforms, are not associated with a starting point, but
with some of the polyhedrons that constitute the level ("brushes").
If you click on one of these entities, the corresponding polyhedrons
will be highlighted. The first entity in a Quake level is always
"worldspawn", and it owns all the polyhedrons of the level except
the ones owned by doors and buttons.

The entities may be organized in a hierarchical design, to help you
work on the level. You can group polyhedrons and/or entities together.
These are called "groups" and are displayed with a "cube in a folder"
icon. Groups do not correspond to anything for Quake; they are only
useful for you while you are making your maps.

Although some effort will be made here to educate the user on Quake
editing, that is not the real purpose.  For current information
regarding the types of entities, and the variables associated with
them, please refer to a site such as Quake Map Specifications,
http://www.infi.net/~nichd/qmapspec.html.  In addition, you may want
to look at the maps included in sqeam.zip and qtricks.zip at
ftp.cdrom.com for some examples to learn by.


  * Working with polyhedrons *

Here lies the real "basics" of creating a Quake level.  Before your
level can be populated with monsters, weapons and powerups, there has
to be a "world" for these items to exist in.  In id's terms, these
polyhedrons, coupled with textures make a "brush".  Throughout this
document, these terms may be used interchangably.


  -= Basics =-

In .map files, polyhedrons are represented by the definition of each
of their sides. Apart from the texture, a side is only defined by the
plane in which it lies. This program uses the same concept. This mean
you cannot manipulate vertexes of the polyhedrons, but only sides, or
more exactly only the planes which define the sides. Only convex
polyhedrons are allowed and the whole polyhedron is determined by the
set of planes. You work by moving, resizing or rotating these planes,
and the program will compute the new vertexes and display the
resulting polyhedron.

A convex polyhedron is any multisided object, that does
not have any sides that fold toward itself.  The easiest way to
understand this is with a simple test.   If you draw a straight line
through a convex polyhedron, regardless of the angle or position of
the polyhedron, the line will only enter once, and exit once. 

To select a polyhedron, first click on the green side view at the
desired polyhedron's height. This set a red reference line across the
width of the view window. Next click on the yellow top view inside the
desired polyhedron. This click is converted into a 3D position: the
X and Y coordinates are those of the point where you clicked in the top
view, and the Z coordinate is the coordinate of the red reference line
in the side view. If this leads to a 3D point which is inside of an
existing polyhedron, then the polyhedron is selected and shown darker.
Once a polyhedron is selected, in addition to changing to a darker
color, a black handle is displayed in the center of the polyhedron,
and white handles are shown at the center of each face.

IMPORTANT: by clicking with the right mouse button on either an entity
in the entity list or on a polyhedron or on one of the handles, you
will bring up a context-sensitive menu. Not only are these right-button
menus very useful, but they also sometimes contains commands that are
not found in menus. So do not forget to right-click everywhere.

You can move a polyhedron by dragging the center black handle or by
changing the "center" value in the information area at the left of
the screen. This will not cause any distortion to the polyhedron.
To change the polyhedrons shape, you have to select one particular
side by clicking on one of the white handles. In addition to showing
a white handle, you will see a normal vector and yellow lines from
the handle to each vertex, defining the selected side. You can
move the plane defining that side by dragging the handle. This
will resize the polyhedron.  You can change the side's orientation
and angle by clicking on the end (gray circle) of the white normal
vector handle.  When a face of a polyhedron is selected, the side's
texture name and parameters are shown in the information area at
the left of the screen. For any side, you can choose any texture
and any texture offsets, texture rotation angle, and texture scaling
factors. You can also pick a texture from the texture browser;
see below.

You can always cancel what you have done by using the UNDO function.
It may be found either in the Edit menu, or by clicking on one of
the buttons at the left of the screen. You can UNDO and REDO the last
25 (by default) operations you made.


  -= Operations between polyhedrons =-

Adding a new side to a polyhedron allow you to have more than the
default 6-sides to your polyhedron.  IMPORTANT: altought the old
"split up this side" command is still available, I recommend not
using it any more. Here are the easier, alternate ways. Let's start
with this example. Let's say you have built a wall, and want to make
a hole in it. To do this, you use "brush substraction". You create a
cube, move it into the wall exactly where you want the hole to be,
and "subtract" the cube from the wall. To do this, click on the wall,
then hold down the Shift key and click on the cube. This operation
starts a group-selection. More on this later. For now, just see how
both the wall and the cube are selected. Then, choose "Substract" in
the Edit menu. This will split up the wall into as many convex
polyhedrons as required to make a wall with a hole. Don't forget to
remove the cube you used as substracter.

Let's come now to how to add a new side to a polyhedron. The easier
way is to pick up another polyhedron, move it over the previous one,
and do brush substraction. For example, if you want to cut one corner
of a cube, you will do this :

       +-----+/\
     A |     |  \
       |    /|   \           +-----+
       +-----+   /           |     +  resulting A
          /     /            |    /
          \    /  B          +---+
           \  /
            \/

Substracting polyhedron B from polyhedron A will leave polyhedron A
with one more side, as shown at the right.

You can also cut a polyhedron in two parts along a plane. This gives
you another way to do some operations like cutting just a corner
off of a cube, separating a wall in two parts for assigning them
different textures, etc.

To cut a polyhedron, you have to choose the plane you'll use as the
separation plane first. To do so, select a side of another
polyhedron and choose "tag this side" by right-clicking on its
handle. Then, select the polyhedron to cut and choose "Cut along
plane" in the menu or in the context-menu. With the example above,
you would select polyhedron B, right-click on the handle of the side
that goes through polyhedron A, and choose "Tag this side"; the
tagged handle is shown as a red square. Then, right-click on
polyhedron A a choose "Cut along plane".


  -= Other operations =-

Additional functions can be done through the use of the Tool Palette.
You can start the Tool Palette by clicking on the icon on the left
side of the screen.  This will provide you a selection of tools for
moving, resizing and rotating brushes.

Brush rotation is very simple.   With the desired brush selected,
just click on the appropriate rotation direction button.  The
default rotation increment is 15 degrees, but you may change the
rotation increment setting for all three axis. 

Once you have created a few brushes that form a single object, such
as stairs, a well, an arch, etc., you can select multiple brushes to
work with by clicking on each desired polyhedron while holding
either the shift or ctrl key.  This group will be displayed on screen
as highlighted with a dashed line in both map views and given the
temporary group name of "(selection)".  If you wish to save this
grouping, simply change the name from "(selection)" to your name
of choice.  This will save your group information in .qme files. 
Keep in mind, if you save or export your map into .map format, group
information WILL NOT be saved.

The use of the clipboard for cut, copy and paste operations can make
duplication of repetitive objects (pillars, arches, etc.) much easier.
These operations can be done on entities, polyhedrons, or a group.
To copy a brush or group, after selecting the desired items, press
ctrl-c.  If you want to cut, then press ctrl-x.  Both of these actions
places the selected information onto the Windows clipboard.  To paste
This information, center the two map views on where you want the items
placed, then press ctrl-v.  This can be very handy for making stairs,
for example.  After creating your first step, click once or twice on
the scroll bar arrows to offset in the appropriate direction, and
paste.  This method makes for very consistant spacing on stairs,
pillars, etc.

Although Quake Map does not support multiple maps open at one time, you
can still cut and paste between maps.  Simply select the items to copy
and press ctrl-c.  Then open the destination map, and press ctrl-v to
paste.  This is possible since the operation uses the Windows clipboard.


  -= Textures =-

Using textures has been made easier than ever.  You no longer need to
have a texture .wad file to hold your textures.  The first time you
access the texture list, Quake Map will ask you to specify where
Quake resides on your hard drive.  It will then directly access the
textures from within Quake's .pak files.  The texture browser has also
been improved to allow you to view multiple textures at one time.
These textures are grouped by type, for easier use.  In the future,
you will also be able to work with user-specific texture wads.

To directly apply a texture from the texture browser to the side of a
polyhedron, right-click on the handle of the side, and choose
"Texture..." in the context-menu, or click on the small "..." button
near the Texture Edit box. You can also click on one of the buttons at
the left of the screen. The Textures dialog box appears, and if you
select a texture by double-clicking on it, will be applied to the
selected side. Note that you can also apply a texture to a whole
polyhedron; this assigns the same texture to each of its sides. You can
even apply a texture to a whole group, or even to "worldspawn" itself,
but be careful ! This replaces every texture in the group by the choosen
texture. Anyway, don't forget that you can always UNDO a wrong
operation.


  * Working with entities *

If you double-click on one of the entities in the list, you'll be
shown the list of parameters associated with this entity. Parameters
are pairs of Spec-Arg: a Specific is a parameter name, and an
Argument is this parameter's value. Double-click on a Specific to
edit the associated Arg's value. For example, every entity must have
a "classname" Specific, whose Argument specifies the type of entity,
like "light" or "weapon_rocketlauncher"; and most entities have an
"origin" Specific, whose Arg specifies the coordinates of the
starting point or location of the entity. This is the Specific which
is used to show the cross on the map.  If you move the cross, it
will modify the associated Arg. 

Some entities may have Specifics whose meaning depends on the
classname. For example, lights can have a "light" Specific, whose Arg
specifies the light power. For more information about which Specifics
are meaningful with which classnames, look for other sources, like
the QuakeSpecs (see QMAP20.TXT). Parts of these informations may also
be included in future versions of QuakeMap.


  -= Groups =-

A group is a particular item in the hierarchical list that is used to
hold other entities. If you select several polyhedrons and/or entities,
by holding down the Ctrl or the Shift key while clicking on them, you
will create a temporary "(selection)" group. If you rename this group
to something else, you will create a non-temporary group. Such a group
is only used to hold other entities, unlike "brush items" like doors
and lifts. Doors and lifts are made of an entity containing moving
polyhedrons, so they are "groups" in the sense that they can contain
sub-items. Every polyhedron owner by a door of lift entity is
considered to be part of the door or the lift, and will move with it.
Note that you may also use doors and lifts entities like true groups
and put other entities or sub-groups into them, as well as polyhedrons.

You can move entities, polyhedrons and even sub-groups into or outside
groups by dragging their icon in the entity list. This should be
intuitive enough. The only delicate point is that polyhedrons are not
represented by icons in this list, so they can't be dragged like
entities and sub-groups. You need to either click on the "group" button
or use the Shift key to select the polyhedron(s) as "(selection)". When
this is done, you have something to drag elsewhere : the (selection)
group itself.

When you create a new polyhedron or a new entity, it is created as
sub-item of the currently selected group. That is, you have two ways to
associate polyhedrons with doors or lifts, i.e. to build doors and
lifts : either you click on the icon of the said door and then choose
the "new" button, which will create the new polyhedron directly
associated with the door; or, to change associations later, you first
have to select the polyhedron(s) in a "multi-selection" manner. This
would lead to a "(selection)" temporary group in the hierarchical list.
From there, you simply drag the icon "(selection)" and drop it onto the
door icon.

By clicking on the icon of group, all the associated polyhedrons and
entities are shown highlighter, which is a good way to check which
polyhedrons are in with which groups. You can also know where a
particular polyhedron is by clicking on it and looking what "Owner by"
says.


 * Conclusion *

This documentation could be much longer, but I prefer stopping here !
Discover by yourself everything that QuakeMap allows. And don't forget
to have a look at the QuakeMap Explorer, in file EXPLORER.TXT !


Thanks to Mike Melzer who wrote and updated many parts of this
documentation.


NO WARRANTIES, either expressed or implied. This software is
provided "as is". Use at your own risk. The author cannot be held
responsible for any damage caused to your computer or its data.
Quake and all associated logo's and textures are the property of
id Software.


Author : Armin Rigo, armin.rigo@p22.gnothi.fn.alphanet.ch
Comments/bug reports are welcome and encouraged.
