by mh » Mon May 16, 2011 12:11 am
Thinking is a bottleneck, especially if the QC is more complex or makes heavier use of expensive builtins than normal (lots of tracelines, etc). That can quickly enough become your primary bottleneck in SP games or listen servers. In an MP/dedicated (or QW) setup it's not so relevant and so can be easily overlooked, but that doesn't mean that it's irrelevant for SP/listen.
Memory can quickly enough become an insane bottleneck. By default server-side entities are edict_t * and client-side are entity_t []. Just naively bump the maxes in the #defines and you may find yourself needing > 128 MB for entities alone. The job needs more serious work than that; server-side needs to go to edict_t ** (which needs some real pretty code in PR_ExecuteProgram and elsewhere to support it) and client-side needs to go to entity_t * [] (which is quite trivial).
The same applies to bumping maxes for other entity types (static, temp, etc). Hugely memory-intensive.