[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