Throughout your mapping career, you're guaranteed to encounter numerous error messages generated by the SDK compiler. However, these messages can often be cryptic, and they offer little as to how to troubleshoot the problem. That's why I have compiled a comprehensive list of error messages so you can resolve these issues and get on with your life.
This tutorial is not really meant to be read from beginning to end. Instead, it serves as a troubleshooting reference when you encounter problems with your map. Each section is dedicated to a particular type of error, and you should use the Ctrl-F
search feature of your browser to locate your error message.
Each entry below is followed by a brief description of the error and a way to resolve it. Good luck.
**** leaked ****
Please read the »Fixing Leaks
on fixing leaks.
Entity <entity_name> (x y z-coordinates) leaked!
You have an entity outside of the sealed map area. Refer to the »Fixing Leaks
on fixing leaks.
Memory leak: mempool blocks left in memory: ##
This is really not an error, but it sure sounds ominous. It has nothing to do with a true leaking issue. So just ignore it. Most complex maps tend to get them, but it never causes any problem with your map in-game.
Brush ###: WARNING, microbrush
One of your brushes is smaller than the smallest allowable brush-size. Find the brush using "View" and "'Go to brush number" and enter the specified brush number. You can delete the brush or edit the size again.
Error loading studio model ""!
You have a prop/model entity without its model specified. To resolve the issue, simply assign a model in its "Object Properties" field. Alternatively, you may delete the entire entity and start over.
Occluder "some_name" straddles multiple areas. This is invalid!
This error means you have a func_occluder (by the name of "some_name") that is touching an areaportal or is inside a brush that's touching two area's. Change the position of the occluder brush.
Entity ##: func_areaportal can only be a single brush
Pretty obvious, an func_areaportal(window) can only consist of one brush. Make multiple brushes multiple func_areaportal(window)s, or make different windows in a wall the same areaportal(window) (they can go through walls)
Error! prop_static using model "some/model.mdl", which must be used on a dynamic entity (i.e. prop_physics). Deleted.
you have used the wrong model with the wrong entity. Either change the model, or the entity (eg. like it says in the error, use a prop_physics, prop_dynamic or prop_physics_multiplayer) or whatever the compiler tells you you should use.
Error loading studio model "some/model.mdl"!
you have used the wrong model with the wrong entity. Either change the model, or the entity (to another type of prop entity). Just as a thumb rule:
-anything that can be picked up is prop_dynamic or prop_physics(_multiplayer)
-anything thats completely static is prop_static (you may alsop recognise these with invisible backsides)
-anything with dynamic shapes (eg. bodies, matrasses) is prop_ragdoll
there are exceptions, as allways.
Leaf (portal ####) with too many portals. Use vbsp -glview to compile, then glview -portal -portalhighlight X to view the problem.
One of your leafs is neighbouring too many other leafs. (the "doorways" between leafs are called "portals").
e.g. in the example picture, the center leaf would have 12 portals, and all other ones only one.
find your leaf, and see if you can reduce the number of neighbouring leafs by adding world brushes or turning existing ones into func_detail (or clever placements of hints). Big leafs in the sky should also be avoided.
As the error says, open your map in glview to find the exact location of the portal.
Contrary to what the error says, you need to use a different syntax for starting glview:
Drive:\path\glview.exe -portal X -portalhighlight $patj\$file.gl
Error! To use model "some/model.mdl" with static_prop, it must be compiled with $staticprop!
You have used a prop_static with a model that's not supposed to be static. Either replace the entity, the model or (re)compile the model(the model itself, not the map) with $staticprop. If you want a physics prop to be static, check it's "motion disabled"-flag. If you dont know how to (re)compile a model, check the model resize tutorial to get the QC file, and add the $staticprop command in there and compile it
material "" not found
You probably have an overlay or decal with no material (texture) specified. May also be caused by brush-faces with no texture, but thats pretty impossible to accomplish AFAIK (unless Hammer crashes). I hope you have some time left, cause this can take a long time to find. try to use visgroups or cordon tools to find it.
Error: displacement found on a(n) some_entity entity - not supported
displacements aren't supposed to be entities. Find the displacement and bring it back "to world" to de-entify it.
The easiest method to find it in a big map is to select all displacements at once (select the "displacements" visgroup (in the visgroup-window to the right in Hammer), then press "mark") in the ignore group mode (button "IG") then tie all of the displacements to an entity, and "to world" them again right after that while they are still selected.
HashVec: point outside valid range
Your map is too big (you have brush(es) too near to the edge of the grid) or you have invalid brushes. If the problem checker in hammer doesn't find any offending brush(es), and you can't see brushes near the edge of the grid, you should use the cordon tools or visgroups to find them.
make_triangles:calc_triangle_representation: Cannot convert
usually preceded by some coordinates. The best explanation I can give at the moment is that this is caused by certain models valve made. In particular the "/wasteland/InteriorFence002d.mdl"-model. I've also heard small panes of glass and some other models can cause this error to occour. You can look for ages to find the model causing the problem, after hiding all your models first and see if that is causing your problem. If so, you have a long way ahead of you to find the specific model if it isnt the afore mentioned one...
In other words, leave it be, it won't hurt you. Unless you bite first! I haven't seen any bad stuff caused by this ingame.
Error: material some_texture doesn't have a $bottommaterial
You've tried to use a water texture which should only be placed in the map automatically by the compiler, or the water-texture you did use has an invalid bottom-texture. Invalid materials usually end in _beneath or _bottom or _dx* . There will be a matching texture without those suffixes which you can use instead. Try another water texture. For working examples check WiseMx's list of water examples
Face List Count >= OVERLAY_BSP_FACE_COUNT
One of your info_overlays is spanning more faces than the maximum of 64. This number is based on the faces after bsp cutting, so it might look allright in hammer but doesnt work in hl2.
Check each overlay in your map, and make sure it doesn't cover more than 64 faces. Allthough easier said than done, you must try to find the overlay in Hammer (where you can only guess where your faces are cut) so its best to check big (stretched) overlays first, and also make sure you have no world brushes cutting each other up near these overlays (eg. near stairs). The use of func_detail will stop that.
Brush ###: FloatPlane: bad normal Side # Texture: some_texture
one of your brushes has a face with a bad normal. Find it and fix it (usually it's best to delete it and start all over) or select the brush and "align to face" it in the texture-tool.
Brush ### : no visible sides on brush
One of your brushes has no visible sides. My best guess is that this is caused by an invalid brush. Try Hammer's problemchecker (alt+p) to find and fix it, otherwise you'll have to find the brush and use vertex manipulation or a good ole delete.
brush ### : bounds out of range
This error means your brush is bigger than your map. This can be caused by two things:
-your brush is outside (or very near to the edge of) the grid.
-you have an invalid brush.
just look up the brush number and see if you can fix the brush. The error checker in Hammer (alt+p) should find these brushes too.
Check if the brush is invalid.
brush ### , side #: duplicate plane
This error means you have a brush with coplanar planes (AKA an invalid brush). simply put, two planes of the same brush should NEVER be on the same line. The fix is to repair the brush, by either merging the two faces or moving them so they aren't at the same plane anymore.
As an example, the brush to the right has two coplanar planes at the top (marked with arrows) One can fix it either by deleting the middle vertex (by moving it onto one of the other top two) or moving the middle vertex upwards. NOT downwards, as that will cause a convex brush!
(followed by three sets of coordinates)
A degenerate triangle is a triangle with no area. for instance, when two of its points are at the same place or all three on one line.
I believe this error only affects displacements, but i am not entirely sure. It also seems to be used in collision data (for the displacements?)
to fix, find the triangle (using the coordinates, each set represents a vertex) and see if you can fix it (e.g. by moving one of the vertices, or deleting it. For displacements, you may need to destroy the displacement and start all over if you can't seem to fix it. It wont harm you if you leave it, but make sure the area doesn't look weird because of it. (holes in the displacements, overly stretched textures)
Warning: node without a volume
Your map has a node without a volume. (a node is what a clipnode was in hl1, in other words a volume denoting where the player can get to and where not.)
Unless you just did some vertex-manipulation or placed static props in a wall, or added a funky new displacement, you shouldn't hunt this error down, as it may take you ages to find, unless you get strange effects in your map. Just fix (simplify) the awkward gemetry if you find it. May also be the sign of an invalid brush, or simply vertices offgrid (unlikely?).
Warning: node with unbounded volume
Your map has a node with an infinite size. (a node is what a clipnode was in hl1, in other words a volume denoting where the player can get to and where not.)
Unless you just did some vertex-manipulation or placed static props in a wall, or added a funky new displacement, you shouldn't hunt this error down, as it may take you ages to find, unless you get strange effects in your map. Just fix (simplify) the awkward gemetry if you find it. May be caused by invalid brushes, or simply vertices offgrid (unlikely?).
brush ###: origin brushes not allowed in world
You have used the ORIGIN texture on a brush that isn't allowed to have the ORIGIN texture. ORIGIN is only allowed on parts of brushbased-entities, and only on brushes that have all sides with ORIGIN. Simply replace the offending ORIGIN textures.(there's a replace option in the texture browser menu)
On a side note, if you turn on helpers (the diamond shaped button in the right, top bar) you can specify an origin without the use of origin-brushes. much easier and safer. The origin-brush is just there for compatibility with hl1 maps, you shouldn't use it for hl2 maps.
Multiple references for cubemap on texture some_texture!!!
You can specify for each cubemap which faces should be using it. However, each face can only have one cubemap attached to itself this way. If you want the face to use multiple cubemaps you shouldn't tie them statically to cubemaps this way, but split the face (multiple brushes)
I hope you can find out by the name of the texture which face vbsp is talking about, because that's the only reference you have. No nifty stuff will help you find the problem, you have to check each texture or cubemap individually to find it. Or just leave it, as far as i know it defaults to one of the two env_cubemaps anyway, so it wont harm you one bit if you leave it.
NODRAW on terrain surface!
you aren't allowed to have the "tools/nodraw" texture one a displacement. So find this displacement (can be hard, you might want to use the divide and conquer method, or just checking each displacement in your map).
Another strategy is to select all displacements at once (select the "displacements" visgroup (in the visgroup-window to the right in Hammer), then press "mark") in the ignore group mode (button "IG"), then use the texture browser to replace every instance of the nodraw texture to another one (with the "only in marked solids" button checked).
Static prop some/model.mdl outside the map (x,y,z-coordinates)
You have a prop_static outside the map, or you have a big leak. find it using the coordinates, and delete it, or fix any leaks you have. See also here and the Hl2 WIKI
Map has too many texinfos (has ##, can have at most 12288)
Brush ###: MAX_MAP_BRUSHSIDES
You have gone over the limit of the amount of faces in a map. The mentioned brush is not the cause, it is simply the first one that didn't fit into the buffer. You really should trim down on brush-faces (see also "max_map_brushsides")
Too many T-juncs to fix up!
(from Jeff Lane, Valve) "VBSP does cleanup of edges where func_detail geometry meets world geometry to avoid getting visual cracks. One of the ways it does is this by elminating t-junctions. It sounds like you may have hit a limit of the number of those cleanups in the level.
If that is the case, you could fix the problem by reducing the number of func_detail brushes in the level, especially ones that touch non-detail geometry. It's probably a sign that you have too much complex brush geometry in the level, and would benefit from having some of it be model geometry instead."
For an easy tutorial to use XSI to transfer world brushes to models check the HL2 WIKI
prop_physics at x,y,z-coordinates uses model some/model.mdl, which has no propdata which means it must be used on a prop_static. DELETED.
You have used (created yourself?) a model without the data compiled in it for it to become a non-static entity. These kind of models can only be used on prop_statics, unless you recompile them with the nessecairy data. Find them using the coordinates, or simply recompile the model with the appropriate data (see also this tutorial).
Material glass/glasswindowbreak070b is depending on itself through materialvar $crackmaterial!
You shouldn't use this texture, but this one: glass/glasswindowbreak070a. The b-texture is used after the glass is broken, so you should never put it into your map manually. Sometimes this error occours and you dont have this texture anywhere in your map. Probably being some strange bug, might as wel leave it.
too many portal verts
You have gone past the value of MAX_MAP_PORTALVERTS (see the link for more info).
Overlay at x,y,z-coordinates has invalid render order (##).
A render order determines which overlays are drawn on top over the others (or under). These render orders are simple numbers, ranging from 1-3. Other numbers are invalid, causing this error.
Don't throw yourself of these render orders just yet. If this error is accompanied by insanely huge numbers, it is most likely a badly placed info_overlay (atleast it was in my case). These entities don't like to be placed on the edge of a brush.
If even that is not the case, try to open the map in a texteditor and look for the numbers. They may be caused by a b0rked map, or something along those lines.
You should use cordon tools or visgroups to check your info_overlays and look for invalid overlays.
Trying to create a non-quad displacement!
displacements can only have four sides, no more, no less. Find your displacement (youll have to check each one in your level) and recreate it so it has four sides again.
You may need to be creative with some vertex manipulation for some shapes you want to create with displacements.
Brush ##: MAX_MAP_PLANES Side # Texture: Not a Parse error!
You have gone over the maximum amount of planes in your map. The mentioned brush and face is simply the first one that didn't fit into the buffer. See also here
Error! entity sky_Camera in solid volume!
Either you have placed your sky_camera in a brush, or your map has a leak. Use entity report to find the sky_camera and move it, or in case of a leak, fix the leak.
Brush ###: areaportal brush doesn't touch two areas
One of your areaportals touches either too many, or to few areas. Possible causes are:
-areaportals touching/intersecting each other (this causes them to touch more than two areas)
-areaportals that dont seal an area ( you can move from one side of the areaportal to the other side, without crossing world geometry or other areaportals). This is also regared as a leak.
The fix would be to move your areaportal(s) around so the above situations don't occur. You may need to read up on the usage of areaportals if you do not understand the problem. I suggest you find your areaportals using its brushnumber.