[sldev] Why does the simulator do object culling for clients?

Argent Stonecutter secret.argent at gmail.com
Thu Jul 19 12:03:52 PDT 2007


Lots of interesting information there, Jake.

> Right now, as has been mentioned, unsubscribe / subscribe is UDP and
> will probably need to remain that way since UDP as asynchronous and  
> TCP
> is not - if object updates are coming via UDP (and they need to, trust
> me on this.

Seems to me that if you go through with the "informational"  
subscription mechanism, then the subscriptions could be sent TCP  
since if something like TCP congestion causes a late subscription  
that just means a later ACK.

> Further to this there are other things to be tried, like not sending
> positional updates at all, but only sending velocity changes.

This approach would seem likely to make the existing problems with  
rubberbanding exponentially worse.

Sending position updates less frequently, or only when you get a  
velocity change, OK. But I suspect you still need to send position  
updates more frequently than you're going to want to be sending full  
updates.

> If you don't remove those
> objects from the stream that are not considered within the clients
> perview (and not just frustrum perview as most FPS games have it - you
> need to be able to consider objects behind you to ensure you get  
> sounds,
> particles that overlap your view and so on) then it doesn't take long
> before your stream is *full* of objects you can't see, don't care  
> about
> and yet are getting updates for you don't need.

Absolutely. I was just thinking that the client is already doing most  
of the analysis anyway.

What about this scheme? The client could send a kill for an object to  
the server when it gets an update on the object and it determines  
that it's out of range. That way if the server "lost" a kill from the  
client, it would sync up quickly.

> It enables people to ask the sim for
> information about objects they can't see in an attempt to cheat at
> games, and generally see stuff they don't have the permissions to see,

Unless there's going to be some kind of genuine privacy scheme  
implemented in SL (which is another topic near and dear to my heart,  
but not one I'm going to go into now), I don't think there's much  
that the client can't see in the sim it's in. The longest diagonal in  
the building zone of a sim is 849 meters, which means that an agent  
at <128,128,384> with a draw distance of 512 can see any object in  
the sim. Worst case, you can see well over 50% of the volume of the  
sim from any point in the sim, and from a corner you can see well  
over 50% of the volume of four sims at once.

I think the only consideration given to the "privacy" issues of this  
scheme are that a sim should kill objects for clients in sims more  
than two sims away. That's a *cheap* calculation, and more an  
optimization than anything else.




More information about the SLDev mailing list