[sldev] Re: Wiki article on culling
Mike Monkowski
monkowsk at watson.ibm.com
Wed Jul 23 17:07:21 PDT 2008
Jake,
None of the ideas are mine. They are yours and your colleagues'. :-)
I just edited the posts that you all sent to SLDev and I do say that
at the top of the page.
Mike
Jake Simpson wrote:
> Mike Monkowski wrote:
>
>> I've extracted some information regarding culling from the SLDev
>> mailing list to create a page on the wiki. Unfortunately, I don't
>> know the code involved, so I don't know if it is still current. Would
>> anyone who knows, please have a look and correct anything I've got
>> wrong and add anything you think might be useful.
>>
>> http://wiki.secondlife.com/wiki/Culling
>>
>> Thanks,
>> Mike
>
> This is a pretty good article there Mike. Very comprehensive.
>
> I have some internal thoughts on our networking layer and will possibly
> be doing some work in that area relatively soon (approval pending) so
> I'll add some detailing to this page if/when I get to that work.
>
> Your idea of only sending delta's is a good one - it's what Quake uses
> in fact. However you can extend that further so that when a client ack's
> a delta packet, the simulator then updates it's default state which it
> uses as the control state (ie that which it derives the delta packet
> from, by comparing this state with the current object state) since it
> knows that the client now has a copy of that latest state, since the
> delta packet was acked. The client of course, does the same thing
> internally. It takes more memory (in order to store older delta'd
> packets that it's sent that can then be applied against the current
> internal control state) but it cuts down on state transfer quite
> considerably.
>
> As you point out, one of the nicest things about the delta approach is
> that if a UDP packet is dropped (or comes in out of order, in which case
> it's dropped) then the system just naturally keeps going until packets
> get through and the client acks them - the deviation in the packets just
> gets larger until such time as an ack is received at which point the
> control state is reset and the deviations drop in size and count.
>
> There are other network compression tricks that can be employed as well
> - dictionary systems whereby common packets (ie packets where the
> payload are the same) that get sent are noted as such and a dynamic
> dictionary is constructed on the fly so in future only an index into a
> dictionary is sent rather than a huge packet.
>
> One thing I would like to see us do is better sort ordering of the
> Interest set, so we send down those objects that are closest to you
> first. I need to have internal discussions with the relevant engineering
> groups inside of Doug's group first though.
>
> Jake
More information about the SLDev
mailing list