How are Quake maps made ?

back to the index page
previous : Description of the map editor

- Coordinates and polyhedrons
- Introduction to Entities
- Brush entities
- Common Specifics

## 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).

next : Tutorial
back to the top
back to the index page