A weird, multi-brush entity bug.

Werewolf

Probably not a real Werewolf
aa
Apr 12, 2011
873
309
Last night myself and a group of friends were testing my map on our server for the first time. As soon as the map started we were getting several bugs which none of us could explain. In fact it is so hard to explain that it was hard to search these forums for similar occurrences so my apologies if there is a post/guide about this somewhere already.
The best I can do is provide a list of the main symptom that we saw happen.

  • Rockets moved very slowly in the air and failed to detonate when hitting anything solid. Here's an example screenshot
  • Trigger_multiples did not work at all
  • trigger_hurts did not work at all
  • func_nobuilds did not work at all
  • Some func_buttons did not work, or were very slow in responding.
The confusing thing is the map runs fine on listen servers. We even tried unloading all the plugins we were using and running the server completely vanilla but that did little. In fact it allowed trigger_multiples to work much like the buttons - only some of them and after a delay.

I've never come across this kind of thing happening before. I've seen brush entities fail because of a mapping error but I've never seen entire types of entities fail and nothing on this scale. I would be most grateful if anyone could shed some light on this, its utterly game breaking and I have no idea why it happens.
 

Werewolf

Probably not a real Werewolf
aa
Apr 12, 2011
873
309
how many Dynamic props do you have on your map?

And/or how many props/entities in general do you have?
models: 882/1024 (86.1%) VERY FULL!
entdata: 609646/393216 (155.0%) VERY FULL!
I think I'm using about 20 dynamic models (of the top of my head)

Odd thing is, while you were replying we tested the map on a different server and it worked fine, so it may have been a server side thing but even so its still very confusing as to why it even did that in the first place.
 

Fruity Snacks

Creator of blackholes & memes. Destroyer of forums
aa
Sep 5, 2010
6,394
5,571
Either way, you have too much ent data and models.

Even though the models are at 86.1%, that doesnt' include player models, rockets, stickies, etc.

You MUST lower you ent data and reduce the amount of models. I'll be honest, I'm not sure how to do this, but I think it's something like reducing the entities down and removing some models. 20 dynamic models is a LOT for a tf2 map.
 

Werewolf

Probably not a real Werewolf
aa
Apr 12, 2011
873
309
Either way, you have too much ent data and models.

Even though the models are at 86.1%, that doesnt' include player models, rockets, stickies, etc.

You MUST lower you ent data and reduce the amount of models. I'll be honest, I'm not sure how to do this, but I think it's something like reducing the entities down and removing some models. 20 dynamic models is a LOT for a tf2 map.
That's fair enough, I've been reducing my entity anyway. I didn't think 20 dynamic models was a lot, but in any case the actual figure is 14., is that still high? What is a good number?!

It still doesn't explain the rockets getting stuck in the air though. I've seen it happen before and I've found changing map clear it all except last night it didn't work and happened every time we ran the map. Any thoughts on that?
 
Last edited:

Fruity Snacks

Creator of blackholes & memes. Destroyer of forums
aa
Sep 5, 2010
6,394
5,571
Same issue, the rockets are models, and entities. Have too many entities, things don't get computed, or get computed slowly.

14 is still high iirc.

Usually you'll see maybe 6 max, 10 if there is moving details (and that is just all the cap points and/or payload cart). It really depends on what you are using them for.
 

ics

http://ics-base.net
aa
Jun 17, 2010
841
541
Usually when there are too much dynamic entities, the map just crashes. Load your map, type sv_cheats 1 and report_entities - it will tell you how much you have. Unofficial rule is that try to keep them under 1400 but i heard you must NOT exceed 1600 at any times.

About the entdata, i've also heard it's just text and doesn't matter if it goes beyond 100% and not all are visible at same time (it's impossible unless the map maker is making something he should not do). I personally am now at 90,5% at entdata. Though i'm in progress to also to decrease that. But those models, definitely too many.

How's your physics and physics terrain?
 

WhosAsking

L1: Registered
Apr 26, 2012
4
0
That explains some things.

I am one of the mapmakers as well, and I've been dealing mainly with the technical aspects of the mapmaking process. What you've just told me gives me significant insight into our current issues: as I've suspected, we've overloaded it and need to look at more simplification. We're working on a rather complex map capable of doing a lot of things, but we seem to have gotten too ambitious.

This may explain another difficulty we're experiencing: even on a 3.2GHz P4 (one of our testing servers), it chugs. In fact, this is the very reason I registered here, to get some advice on the things one should look for when debugging a work but otherwise-misbehaving map. Are there various cvars and/or command I can use to give me debug output that'll let me see if, say, events are firing too frequently or something else is happening so much as to slam the server program?

As you've said, we have too many dynamic props. Trouble is, many of the props in question don't have static counterparts--in fact, some of them are actually phsyics props I had to override dynamic just to keep them from moving. Several of them have to be dynamic because they (a) are "precaching" models for use elsewhere (TF2 used to crash without them) or (b) move and/or break. We had a bunch of others but I was able to do some hacking to make static versions. But the technique is imperfect and frankly uses old tools. If you can think of a better way of hacking a dynamic prop model into a static one, I'd appreciate it.
 

A Boojum Snark

Toraipoddodezain Mazahabado
aa
Nov 2, 2007
4,775
7,669
Entdata was a guideline for HL2 devs to keep within the minimum memory spec. It is completely irrelevant now. Meridian has something like 160-190% depending on version, many payload maps go over the 100% mark.

Models in this case is not talking about 3D meshes such as props and players. In the BSP info report models refers to brush models, that is, groups of brush data set aside from the world for dynamic use. This is basically every brush-based entity's brushes. There is no harm in going near the limit because they can never be created on the fly at runtime, like most other BSP structure limits.

edit: actually, I'm not positive if there is no issue with having so many brush models, since those are in fact the entities you're having trouble with. I would suggest trying a straight up removal of an arbitrary half of the entities, and see if the remaining still behave abnormal.
 
Last edited:

WhosAsking

L1: Registered
Apr 26, 2012
4
0
I'm aware of the models count being more in the nature of the brush entities. Having read various debugging reports, I'm beginning to suspect part of the problem is an overuse of buttons and triggers. These apparently carry with them a high edict count, and edicts can affect map performance, even crash the server if they break the limit (the "No free edicts" error). The buttons and triggers will be two areas of interest during our simplification efforts.

I'm still curious to see if a high edict count (we do seem to be going over the limit) can create a serious drag on the server. I simply want to be aware of all possible avenues.
 

ics

http://ics-base.net
aa
Jun 17, 2010
841
541
I'm aware of the models count being more in the nature of the brush entities. Having read various debugging reports, I'm beginning to suspect part of the problem is an overuse of buttons and triggers. These apparently carry with them a high edict count, and edicts can affect map performance, even crash the server if they break the limit (the "No free edicts" error). The buttons and triggers will be two areas of interest during our simplification efforts.

I'm still curious to see if a high edict count (we do seem to be going over the limit) can create a serious drag on the server. I simply want to be aware of all possible avenues.

Check out your maps dynamic/edict whatever it is called with these cvars: (requires sv_cheats 1)

report_entities
cl_showents

(they report different things but you should never exceed 1600 so that your map wont crash in-game in a real server with many people rockets, etc flying around a lot. Valve maps usually keep those under 1400, excluding thundermountain that goes over 1500 last time i checked.)
 

A Boojum Snark

Toraipoddodezain Mazahabado
aa
Nov 2, 2007
4,775
7,669
I'm still curious to see if a high edict count (we do seem to be going over the limit) can create a serious drag on the server. I simply want to be aware of all possible avenues.
In short, no. Going over the edict limit will immediately cause a crash, and numerous maps ride the line of being just under it with no similar slowdown issues.
 

WhosAsking

L1: Registered
Apr 26, 2012
4
0
Thank you. This means the slowdown is a separate issue. Which leads me to a new question. Is there a way to debug all the I/O events that are firing? I'm wondering if flawed I/O logic is causing misfires that flood the I/O system, causing the slowdown.
 

ics

http://ics-base.net
aa
Jun 17, 2010
841
541
I had such issue when i made L4D2 campaign. I had a sound firing at the same time as the end music (escape tune) was playing and it caused major lag on the server. You could have similiar thing with some of your entities.