[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