Moderator elections are being held. See Valve Developer Community:Moderator elections for more details.
Users who would like to run for moderator must be autoconfirmed and have at least 100 edits. Users can check their own edit count at Special:Preferences.
This article's documentation is for the "GoldSrc" engine. Click here for more information.
Quake1-16px.png

BSP flags (Quake and GoldSrc)

From Valve Developer Community
Jump to: navigation, search

Under construction icon-blue.png
This is a draft page. It is a work in progress open to editing by anyone.
Remember to check for any notes left by the tagger at this article's talk page.
Note.pngNote:These aren't actually flags, except for the surface flags; the page title is for consistency so that the tabs work.

Surface flags

Despite having a 32-bit integer available to be used, most flags go unused. Vanilla Quake engines and GoldSrc only use TEX_SPECIAL.

Bit Flag name Dev comment Notes
0x00000001 TEX_SPECIAL sky or slime, no lightmap or 256 subdivision Surface does not have a lightmap.

Used by Quake QBSP to tell LIGHT to not generate lightmaps for sky and liquid surfaces, which are not subdivided to account for maximum lightmap size (15x15 luxels, or 240x240 texels). ericw-tools additionally uses this on surfaces textured with TRIGGER. GoldSrc QCSG and HLCSG don't use this, instead always subdividing surfaces regardless of if they need ligthmaps. Therefore, QRAD and HLRAD will always lightmap all textured surfaces, unless they are flagged in some other manner, such as using newbspguy newbspguy.

0x00000002 TEX_MISSING johnfitz -- this texinfo does not have a texture Used by fitzquake and derivatives to indicate a missing texture
0x00000800 ??? N/A Used by VERTEXNORMALS BSPX lump to indicate a face that should have smooth shading based upon its vertex normals.

Contents types

Contents are stored as a signed 32-bit integer, and are always negative. Some entities, such as func_illusionary and func_water, allow using the skin KV to override the contents of the entity.

Clarify: Contents are stored in visleaves somehow, not directly in clipnodes.
Value Internal name Dev comment Notes
-1 CONTENTS_EMPTY Non-solid, and doesn't affect VIS.
-2 CONTENTS_SOLID Default.
-3 CONTENTS_WATER A liquid, usually water. Textures with the ! prefix are usually water when part of worldspawn, unless they are slime, lava, or a current.
-4 CONTENTS_SLIME Like water, deals damage to the player and some monsters when touched.
-5 CONTENTS_LAVA Like slime, but deals double the damage.
-6 CONTENTS_SKY
-7 CONTENTS_ORIGIN removed at csg time Replaces an entity's origin KV, then is removed by CSG (does not exist in compiled BSP).

In GoldSrc, if a brush has this contents at runtime, it will be treated like water (and is referred to in FGDs as "volumetric light").

-8 CONTENTS_CLIP changed to contents_solid
-9 CONTENTS_CURRENT_0 Acts like water combined with a trigger_push with a speed of 2048 in the given direction
-10 CONTENTS_CURRENT_90
-11 CONTENTS_CURRENT_180
-12 CONTENTS_CURRENT_270
-13 CONTENTS_UP
-14 CONTENTS_DOWN
-15 CONTENTS_TRANSLUCENT (not in Quake) Like water, but never solid. Despite this, it still affects VIS.
-16 CONTENTS_LADDER (not in Quake) Climbable. Usually set via the game code for the func_ladder entity.
-17 CONTENTS_FLYFIELD (not in Quake) Zero gravity
-18 CONTENTS_GRAVITY_FLYFIELD (not in Quake)
-19 CONTENTS_FOG (not in Quake)

Ambient Types

Ambients are stored as an array of 4 unsigned bytes, indicating volume. Only Quake uses them, and it only uses AMBIENT_SKY and AMBIENT_WATER, which are hardcoded in the engine to play specific sounds when a visleaf containing the given ambient type is in the current PVS.

Confirm.pngConfirm: Probably only affected by world brushes, so probably not cast by func_water.
Index Name Notes
0 AMBIENT_WATER Normally cast by any liquid (* prefix in Quake; ! prefix in GoldSrc), unless they are slime or lava.
1 AMBIENT_SKY Normally cast by sky brushes (sky prefix)
2 AMBIENT_SLIME Normally cast by slime brushes (*slime prefix in Quake; !slime prefix in GoldSrc)
3 AMBIENT_LAVA Normally cast by lava brushes (*lava prefix in Quake; !lava prefix in GoldSrc)

See also