The client has a poly count limit on *placeable objects* (somewhere around 1500 polys per object). A placeable object, as I call it, is an object that resides in the <zone>_obj.s3d file. Anything that's placed into your zone from OpenZone's .MSH library will be placed into this file. The point of these objects is so you can have many copies of the same object in your zone without having to store its mesh more than once (like hundreds of trees, for instance).
The downside is that they aren't part of the zone's geometry (and, hence, not part of its BSP tree), which makes collision avoidance expensive per object (a client has to check each and every polygon in the object to find the nearest point of potential collision). A client with a BSP tree can place the object in a BSP node (not necessarily in a leaf node, by the way) and check the object only when a player or mob nears it, but when that happens, it's important to have a relatively low poly count so as not to bog the CPU. Hence, the polygon limit. The client will fail to render any polygons over the limit (OpenZone's brick bank object originally went over the limit and I had to remove some lanterns to bring it below the threshold). I don't know the *exact* limit, so OpenZone enforces a number known to be good but just under the limit (within 50-100 polys or so).
|