What exactly are a map's limits?

I’m clear on the map size limit (limited by 2^15 -1 and -2^15 for each axis) and I’m clear on the limits on brushes, overlays, and cubemaps, but there’s some other things in the compile log I’m still not sure about:

Object names       Objects/Maxobjs  Memory / Maxmem  Fullness 
------------       ---------------  ---------------  -------- 
models                   4/1024          192/49152    ( 0.4%)  <-- Unique models? All models?
brushes                415/8192         4980/98304    ( 5.1%) 
brushsides            2524/65536       20192/524288   ( 3.9%) 
planes                 472/65536        9440/1310720  ( 0.7%) 
vertexes              3935/65536       47220/786432   ( 6.0%) 
nodes                 3674/65536      117568/2097152  ( 5.6%) 
texinfos                32/12288        2304/884736   ( 0.3%) 
texdata                 10/2048          320/65536    ( 0.5%) 
dispinfos              527/0           92752/0        ( 0.0%) <-- What's this? Displacement count?
disp_verts           42687/0          853740/0        ( 0.0%) 
disp_tris            67456/0          134912/0        ( 0.0%) 
disp_lmsamples     4426264/0         4426264/0        ( 0.0%) 
faces                 2278/65536      127568/3670016  ( 3.5%) 
hdr faces                0/65536           0/3670016  ( 0.0%) 
origfaces             1066/65536       59696/3670016  ( 1.6%) 
leaves                3679/65536      117728/2097152  ( 5.6%) 
leaffaces             1784/65536        3568/131072   ( 2.7%) 
leafbrushes           3686/65536        7372/131072   ( 5.6%) 
areas                    3/256            24/2048     ( 1.2%) 
surfedges            13518/512000      54072/2048000  ( 2.6%) 
edges                 7527/256000      30108/1024000  ( 2.9%) 
LDR worldlights          2/8192          176/720896   ( 0.0%) 
HDR worldlights          0/8192            0/720896   ( 0.0%) 
leafwaterdata            3/32768          36/393216   ( 0.0%) 
waterstrips            133/32768        1330/327680   ( 0.4%) 
waterverts               0/65536           0/786432   ( 0.0%) 
waterindices          2319/65536        4638/131072   ( 3.5%) 
cubemapsamples           0/1024            0/16384    ( 0.0%) 
overlays                 0/512             0/180224   ( 0.0%) 
LDR lightdata         [variable]     4650668/0        ( 0.0%) 
HDR lightdata         [variable]           0/0        ( 0.0%) 
visdata               [variable]      412386/16777216 ( 2.5%) 
entdata               [variable]        2709/393216   ( 0.7%) 
LDR ambient table     3679/65536       14716/262144   ( 5.6%) 
HDR ambient table     3679/65536       14716/262144   ( 5.6%) 
LDR leaf ambient     10913/65536      305564/1835008  (16.7%) 
HDR leaf ambient      3679/65536      103012/1835008  ( 5.6%) 
occluders                0/0               0/0        ( 0.0%) 
occluder polygons        0/0               0/0        ( 0.0%) 
occluder vert ind        0/0               0/0        ( 0.0%) 
detail props          [variable]           1/12       ( 8.3%)  <-- What do you mean, variable?
static props          [variable]           1/2724     ( 0.0%) <-- ditto
pakfile               [variable]       88073/0        ( 0.0%) 
physics               [variable]      138264/4194304  ( 3.3%) 
physics terrain       [variable]      110897/1048576  (10.6%)  <-- are these displacements too? or all terrain?

Is there a hard limit on any aspect of displacements? (number of displacements / vertexes / faces / edges / etc.)

Models means all models, Detail props means detail props, and static props mean static props, shockingly enough.

Dispinfo is related to displacements if I’m not mistaken.

I don’t know about Physics terrain. Probably displacements.

When you say all models, do you mean the number of types of models used in the map, or the sum total number of entities that will spawn models?

I get what the words mean, but they don’t display a limit in the compile log. It’s either out of 0, or [variable], which tells me jack shit. So, what are the limits on detail props, static props, and displacements?

2048 is the displacement limit(max number).
Those limits you see there I’m not terribly sure about. Their names are often misleading (waterindices for example isn’t actually related necessarily to water I believe) and you can overfill some of them (entdata will go to around 200%)
This may also interest you (from the encyclopedia)

I made a flatgrass sized map made of displacments 800x800 to the power of 3 and only got to 36% XD

Power 4 would use up more dispinfo. You will also find that you probably only got to about 1000 odd displacements. My current map has 1500 ish at varying powers and I’m at about 60%

Incorrect. “Models” are all brush based entities minus func_detail (which is in limbo somewhere between worldspawn and brush entities.)

Things like func_brush, func_ladder, trigger_push, etc. all count as models.

“Detail Props” are the grass sprites on some displacement textures. There’s a limit of 4 detail prop types per level.

I have a question about limits myself. I get this message sometimes in my map.

 Too many verts for a dynamic vertex buffer. Tell a programmer to up VERTEX_BUFFER_SIZE

I haven’t gotten round to optimising yet but I have a feeling that it’s because my Vertexes are at 88%. How would I get rid of some uneccesary vertexes or how would I optimise my map so this error won’t show up for players playing it.

NoDraw will help that.

Woo! Managed to reduce it to 87.7%! YEAH!


Try turning some of your more complicated brushwork into props with propper

Stay as model based as possible. Source can handle thousands of static props, I’ve gone over 2000 in a map before without a single problem. I’ve heard you can go over 3000 and possibly more. Propper will help you tons as well.

Info about Propper here.

That’s caused when too much world geometry is being rendered in the PVS. It’s commonly caused by func_precipitation that’s set to some ridiculous value, or used in large areas. It can also be caused by large open areas with lots of brush detail. You can fix the problem by using areaportals and making sure the map has proper visibility blockers where needed.

Okay, thanks for the help guys! At least i know it can be fixed when it comes to optimisation!

The trouble with models in source is the vertex lighting looks like absolute shite compared with prebaked lightmaps.

I’ve got a couple more questions, Does using displacments mean using more or the same amount of vertexes, because I could cut down on displacments if I had to. And does anyone know of any good pakrat tutorials, because I can never get it to work myself.

it depends compared to what. You can see the individual vertices in a displacement since it’s already split up into a mesh.

It’s pretty self explanatory I thought.

Open up your .bsp, set it to auto. It will automatically find all the custom content and add it to your map. File > save and you’re done. If you need more flexibility and to add or find more things, then I suggest the pakfile editor in VIDE, it finds files that pakrat doesn’t and manually adding content is easier.


Okay, I managed to figure out Pakrat, and get my vertexes to 64% with propper, and I’m still not done with it. Thanks for the help guys!