[opensource-dev] Broken Rubber Bands

Simon Linden simon at lindenlab.com
Tue Oct 12 14:38:45 PDT 2010


Hi -

Yes, I updated that repository with my first attempt at improving the viewer
prediction code.   The changes are:

* Configurable settings for tapering off viewer-side motion prediction
* Limit predicted motion at region edges based on adjacent regions
* Bug fixes around region crossing timers and object positions

I just spent some time looking into the server code, however, and see that
the viewer needs more refinement.

The server expects the viewer motion prediction code to follow the velocity
and acceleration it sent to the viewer, so my new taper-off code should not
kick in unless the simulator stops sending updates (which would indicate a
bad lag event, rather than no updates due to constant motion).

Some of my changes should help, however.  The viewer will check the edge of
the region, and if there is no neighbor region, stops the object motion.
Normally the simulator will send down another update quickly as the object
bounces off the edge, but this prevents the sail-into-the-sunset effect when
the simulator lags badly.   Predicted object motion is also pinned to the
allowable underground distance and top of the region.

I did some experiments with region crossings and attempts to predict some
lag but didn't find a solution that worked well.    As AnnMarie mentioned,
vehicle crossings seem to be the worst and I'll be looking into that next.
The viewer can probably be more intelligent on how it predicts region
crossings, perhaps allowing for a bit of lag with normal objects and
possibly accounting for the re-seating of AVs on vehicles, but I haven't
worked out the details yet.

 - Simon Linden




On Tue, Oct 12, 2010 at 2:06 PM, Kelly Linden <kelly at lindenlab.com> wrote:

> If anyone is interested his code is here:
> http://bitbucket.org/simon_linden/viewer-dev
>
> cc'ing the opensource-dev list as this seems appropriate for that list at
> this point.
>
>  - Kelly
>
> On Tue, Oct 12, 2010 at 8:27 AM, Kelly Linden <kelly at lindenlab.com> wrote:
>
>> Actually one of my coworkers has been working on some features along these
>> lines. The two parts I'm aware of prevent flying into the horizon if there
>> is no neighbor sim and some attenuation of movement if it has been too long
>> since getting an update from the sim. He was also working on some region
>> crossing specific bits to try and improve the prediction logic and reduce
>> rubber banding, however he was getting mixed results on that front.
>>
>> I've forwarded him your email just so he has another data point, and I'll
>> see if I can't find his repo to share should anyone want to give his patches
>> a try.
>>
>>  - Kelly
>>
>>  On Tue, Oct 12, 2010 at 7:35 AM, AnnMarie at SLFBI.com <AnnMarie at slfbi.com>wrote:
>>
>>>   Border crossing rubber-banding, especially when riding a vehicle, can
>>> vary from zero to annoying to purgatory to re-boot depending on the
>>> severity.
>>> My current SLURL is sim Sunell, <60902, 26106???, -136289?????> which
>>> puts me at least 13 billion meters below ground on my way to SL hell.
>>> It will require a re-log to recover.
>>>
>>> DUH.  The client side viewer would not have to be very smart to figure
>>> out something was wrong and discontinue stretching a rubber band that is
>>> obviously broken.
>>>
>>> Why cannot the viewer and server have a simple uplink command that says
>>> "I'm totally lost, please put me back at the last known vector"?  It
>>> could even have a popup to explain you have been restored to an earlier
>>> valid location.
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.secondlife.com/pipermail/opensource-dev/attachments/20101012/b0a234ac/attachment.htm 


More information about the opensource-dev mailing list