From Quake Wiki
In Quake map making, an entity is any object defined in the .map file of a level, and are used to define the position and parameters of all the things that will appear in the level, such as monsters, items, doors, teleporters, lights and sounds.
Entities can be broadly defined as belonging to one of two different types, point entities and solid entities (also known as brush entities).
A point entity is an entity that can be thought of as being at a specific point in the level, and its geometry (if any) is predefined. For example, a monster is a point entity. A level author might place many ogres in their level, but each ogre will be the same shape and behave the same way because they are defined by the game already.
Solid entities, on the other hand, are entities which are made by the level author out of brushes and can take any shape the author wishes. A door, for example, is something that the level author needs to be able to make out of brushes in order to fit into different level_theme, different sized holes etc.
The static level geometry itself is also defined as a worldspawn entity, but it is a special entity that is treated differently by the compilers, and depending on the level editor being used, its settings might be accessed from a different place to that of other entities. The worldspawn is always the first entity defined in a .map file.
In order to change their behaviour, appearance etc. all entities have settings that can be modfied by the level author. The following section contains general information about these settings. For specific entity setting information, see Entities.
A key/value pair is the name given to a single entity parameter; The key is the name of the parameter and the value is what it is set to. For example, a func_door entity has a parameter that sets how fast it moves. The key is named "speed" and it's value can be set by the user to alter the speed of the door. For the purposes of this wiki, we will use the format (key : value) as notation for key/value pairs in text passages. (speed : 100) means the speed parameter of the door is set to 100 units per second.
Note that sometimes the naming of keys is not particularly intuitive, so some editors hide the real key name and show the user something more easily understood. The names used in the wiki are the actual key names used by Quake, and are correct.
Origin and Angle
Origin and angle are keys supported by every single entity with the exception of the worldspawn, since it does not ever move and does not need them. Origin is used to define the position of an entity in the level, and angle is a value between 0 and 360 that sets its rotation. Both of these keys are usually hidden from direct editing by level editors; origin is almost always set only by moving the object around in the editor, and some editors (such as TrenchBroom) allow direct rotation of the entity to set the angle, wheras others (such as Worldcraft) have some kind of visual representation in their entity property editing tool as well as the ability to manually set the angle numerically.
Some entities may support setting angle to up or down by using the values -1 for up and -2 for down. Other entities, such is info_intermission might require a more complex angle. This can often be specified with a mangle key.
Targetname, Target and Killtarget
Quake features a very basic form of event scripting via triggers that can be placed in levels and used to activate other entities. For example, the func_button entity is used to make a usable button object in a level which will trigger a targeted event when when pressed. This event system is not limited to the obvious trigger entities and buttons - monsters can fire events when they are killed, and items when they are picked up. In order to use this system, the keys targetname and target must be understood.
The targetname key is used to establish a name for an entity so that it can be linked to triggers that are targeting it. The value of targetname needn't be unique, though multiple entities using the same targetname will all be activated at once by anything that triggers them.
The value of target should be set to the targetname of the entity that needs to be activated. For example. a func_door with (targetname : door1) can be activated by a func_button with (target : door1).
killtarget is a key used in a similar way to target, but instead of activating the target, the targeted entity will be removed from the level when the killtarget event is fired.
In vanilla Quake, a single trigger cannot target multiple entities another at the same time. This is true even if one entity is targeted and another is killtargeted. In order to do this, multiple triggers (see trigger_relay) must be used for each different target or killtarget. Some mods, such as Quoth support multi-targeting, which allows multiple targets to be set for a single trigger, and also enables targets and killtargets to both be fired when the trigger is triggered.
Spawnflags is the name given to a particular key that all entities support and is used to store multiple boolean parameters (flags) in a single key/value pair. The value of spawnflags is a number typically between 0 and 4096 (although a bit value up to 8388608 is allowed)and is calculated by adding the values given to each flag together. The value for any single flag is always a power of two. This is so that when loading a level, Quake can understand from the value of spawnflags which flags were set and which were not.
One of the uses of spawnflags is to tell Quake whether or not to spawn entities into the level on level load. These flags are listed below:
|256||Not on Easy|
|512||Not on Normal|
|1024||Not on Hard|
|2048||Not in Deathmatch|
Other flags are only valid when used with certain entities, but these four are universal and work with every entity.
Most level editors have a simple visual representation of spawnflags with checkboxes for each flag, so that the user does not need to calculate its value manually.