How are Quake maps
made ?
Coordinates and polyhedrons
Quake uses a standard right-handed (X,Y,Z) coordinate system. If you're
not familiar with the reference of "right-handed" to a coordinate system,
it basically provides a tactile and visual discription of the mechanics
of the system. If you point your fingers towards the positive x-axis and
bend your fingers so that your knuckles face the positive y-axis, your
thumb will point towards the positive z-axis:

In QuArK, on the top-down view, the x axis is to the right, and
the y axis to the top. On the other view, the x axis is also
to the right, and the z axis is to the top. You should get used
to the two 2D views of your map. Try selecting and moving polyhedrons on
each view and see how it moves on the other view. If you prefer a more
traditionnal 4-views layout, with three side views and a perspective camera,
it is also available : in the Layouts menu, you can choose from a list
of various layout types.
As explained before, a map is first made out of polyhedrons in 3D space.
Polyhedrons are sometimes called brushes, too. Editing polyhedrons
is probably the most complicated operations you will face while making
maps, but QuArK tries to reduce these troubles to a minimum. In fact, you
already learned the most important operations for editing polyhedrons.
Introduction to Entities
The second primary components of a Quake map are the entities. Entities
are all the Quake objects that can move and interact together. The behaviour
of the entities is written in a Quake-specific language, the QuakeC (for
Quake 1), the HexenC (for Hexen II), or in pure C (for Quake 2). As a map
designer, the only thing you need to worry about is not how the entities
exactly behave, but mainly which are the available entities. You find in
QuArK all the entities available in Quake's original distribution; add-ons
and TCs usually add new entity types. The list of entities is available
from the New Items window (menu Commands, Insert map item).
Each entity is made of a list of parameters, which are called Specific/Arg
pairs. Each Specific is a parameter name, and the corresponding Arg is
the value for that parameter. This system allows for a lot of customization
: in an entity you can set as many parameters as you want, just by putting
Specific/Arg pairs in it. The list of which Specifics are actually recognized
depends on the kind of the entity. The only Specific that is always recognized,
and required, is "classname". Its Arg gives the generic type of the entity.
For example, monsters are created by setting "classname" to monster_dog,
monster_army, and so on.
Generally, you don't even have to worry about the classname, because
when you insert an entity in your map it already has the expected classname.
What you have to worry about is how you set other common Specifics. For
example, most entities have an "origin" Specific, whose Arg is the 3D position
where you want the entity to appear when your map starts. For each entity
with an "origin" Specific, QuArK displays a cross on the map, at this position.
You can simply move the entity with the mouse, but this simply modifies
the origin Specific for you. Other Specifics may be edited visually as
well, e.g. the entity start-up facing direction. Complex entities have
a lot of other Specifics which cannot be edited visually -- door opening
speed, button action, and so on. The page
2
displays all Specifics and let you change them. If you move the mouse over
a Specific and wait there, a small help text will appear, explaining what
this Specific is for (at least if QuArK knows that this kind of entity
can have this Specifics).
Try double-clicking on "info_player_start" on page
1
to see the Specifics and Args of this entity.
Brush entities
Some entities also accept attached polyhedrons. These entities are called
brush
entities. All the polyhedrons you attach to an entity become part of
that entity and define its 3D aspect. Exemple : doors and lifts. Not all
entities accept attached brushes : monsters, weapons, and items to pick
up, for example, do not, as their shape is not defined within your map.
For these, you just tell Quake where the entity should start, and not its
3D aspect. That is why all entities usually have either an "origin" Specific
or attached polyhedrons.
In QuArK, you see in the tree view of page
1
the polyhedrons that are attached to a brush entity : they are simply the
polyhedrons that appear "inside" the brush entity icon
.
Try inserting a door in your map (Commands menu, Insert map item, open
the folder "Doors & Lifts" or "func_ entities" for Quake 2, then double-click
on "func_door"). You see on page 1 the new entity "func_door" with a plus
sign at the left : click on it, and you will see that there is one polyhedron
attached to this entity. You can attach or detach polyhedrons simply by
moving them inside or outside "func_door" with the mouse.
All the polyhedrons that are not attached to any brush entity are part
of the map itself (as opposed to doors, lifts,...) But they are actually
attached to a special entity that must be present once in each map : the
top-level "worldspawn". You will notice on the top of the tree view that
"worldspawn" has the same icon as brush entities, because Quake actually
considers it as a special brush entity which holds all polyhedrons from
the map itself.
Common Specifics
While some Specifics are parameters specifically for one entity type, as
is the door opening speed for door entities, there are a few Specifics
that are likely to be present in a lot of entities.
-
classname : the generic entity type.
-
origin : the 3D position where the entity should appear when the
map is played in Quake.
-
angle : the start-up facing direction. For bad reasons this number
can only be a 2D angle, and not a true 3D angle. In QuArK, it is easier
to set the angle by dragging the red dot handle that appears when you select
the entity. Horizontal angles range from 0 to 360, in degrees, where 0
is towards +x, 90 is towards +y, 180 is towards -x and so on. The special
values -1 for up or -2 for down are also accepted. They are used for example
in buttons on the ground or on the ceiling.
-
spawnflags : set various "flags", i.e. activate or deactive some
given features of the entity. In QuArK, "spawnflags" appears as several
check boxes : check or uncheck them and don't worry about how this is stored
in the "spawnflags" Specific itself. You can also prevent some entities
from appearing at all in some difficulty modes (for example, a health box
could appear only in easy mode) : use the button "emhd" above the list
of Specifics to choose this. "emhd" means "easy-medium-hard-deathmatch".
-
target and targetname : these Specifics are used to tie two
entities together. For example, to make a button open a door when you click
on it, you set the door's targetname to any text you like, and set the
button's target to exactly the same text (warning, it's case-sensitive).
When the button is pressed it activates all entities whose targetname matches
its target. Both the action that causes activation and the action that
results from activation from another entity depends on the entity classname.
Buttons are activates when pressed, monsters when killed, etc. And when
activated, doors open, lifts lower, etc. Target and targetname are sometimes
used for other purposes than activation.
-
delay, message, killtarget : these Specifics can be
put in any entity instead of (or along with) the "target" Specific. "message"
is a text displayed to the player that activated the entity, if any (the
player that pushed the button or killed the monster - don't put important
texts in monsters, because they would never appear if the monster is killed
by another monster.) Use "\n" for line breaks. Note that it seems that
for some entities, they must have a "target" Specific, otherwise "message"
won't work at all. "killtarget" works like "target", except that the targeted
entity is not activated but simply removed. Finally, "delay" can set a
delay, in seconds, before the other entities are activated or killed and
before the message is displayed.
-
mangle, angles : not used very often, this is a true 3D angle.
It is set as three real numbers, like a 3D position, but here the first
number means pitch (0 : horizontal; positive : towards down), the second
number is the direction like in 2D angles, and the third number is the
yaw (0 : normal). QuArK lets you edit the pitch and direction visually
(the handle is then a blue dot instead of a red one to show that there
is something special : you can set a full 3D angle).