If for example you change the rail code slightly and cause an issue where there will always be an "ignore" (by playing with content masks or other reasons) then there will be an infinite loop of instant hit traces. The game will freeze as it tries to finish the infinite loop. Same thing for similar mistakes using the findradius function.
Rails servers always used to spike even for normal rail shots. I'm no expert on network code but I think that's due to the server processing the more resource intensive rail loop before moving on to the next message.
Since a client is an entity and the big loop is taking them in turn according to their spawn sequence, the first client connected will be the first one considered for his targeting information. Thus, the first-connected client will be the preferred one when it comes to registering hits.
Quote from: QwazyWabbit on April 09, 2008, 08:22:32 AMSince a client is an entity and the big loop is taking them in turn according to their spawn sequence, the first client connected will be the first one considered for his targeting information. Thus, the first-connected client will be the preferred one when it comes to registering hits.Actually, client index has no affect on it at all, client weapon firing is done in between game frames in ClientThink. So it depends which packet arrives first as to who fires first. Players actually die in between game frames, but of course they don't notice until a game frame ticks by and new packets are sent. The only instance client index would affect is if the client sends no packets (<= 10 fps) between game frames, in which case the game runs the weapon code for them one at a time.
As we discovered awhile back, it turns out even with unmodified rail code, these infinite loops still occur occasionally. If I recall correctly, r1q2 adds a "loop breaker" kludge that says, if trace has been called a huge number of times this game frame, just bail out with a longjmp() ...My recollection is that unkillable entities with overlapping bboxes cause the problem.... 'cause trace can only ignore one entity at a time.
Aside from the rare infinite loop problem, a typical rail shot should generally cause about an order of magnitude less work for the server than a shotgun or SSG shot. Right?
A jump doesn't seem like the easiest way to break from it, tho. Are you sure it's not just a break/return/goto?
I've seen tie scores of 40 frags in the railz server.