Question for someone from the libsl team
|
|
Jesse Barnett
500,000 scoville units
Join date: 21 May 2006
Posts: 4,160
|
11-10-2006 12:03
From another thread: From: Strife Onizuka Just an FYI, the objects are not cached in the disk cache. Objects are cached by sim in seperate files. Object definitions are really small; only a few hundred bytes per object. So the average sim cache file is less then 1mb; though sometimes they get as large as 2mb. Objects are only downloaded as needed, so each sim's object cache grows and shrinks (which can lead to disk fragmentation).
Objects cannot be reliably cached by a proxy, they are too dynamic. Since they are so small, it's a non-issue.
LL does a pretty good job dealing with ghosting. It's a lot better then it use to be (i haven't had an object ghost in a long time). This is where we are at in the prim drift problem. Gearsawe Stonecutter started working on it and I jumped in. We have independantly narrowed it down to how LL is storing the prim information. There are a lot of linked prim combinations that will result in reproducable drift upon a sim restart. You can also speed it up by rotating certain linksets in a seesaw manner without having to restart the sim. Some of those resulted in drifts in excess of a meter a day. But I also spent a lot of time trying to break it down to the lowest common denominator. I noticed one single prim that Gearsawe had that will drift everytime a sim is restarted. Take a .5 meter square prim and with Rotation = <351.40, 6.05, 22.35> shear = -0.10, 0.30 will drift <-0.000015, 0.000000, -0.000015> after every restart and it is accumulative.Take the same Prim and same rotation and a shear of -0.50 & 0.50 or 0.50 & 0.50 will not drift. Or the same prim and same shear but a rotation of <30.0, 30.0, 30.0> won't drift either. At first it seemed logical that the position of the prim or linkset was recorded and then the rest of the information like rotation, shear etc. But if that was done then there wouldn't be any drift in the single prim. So the question is condensced down to: How exactly is LL storing the prim information? How is it that position + rotation + shear will result in drift? I know the bounding box center is different for this prim from it's position but the bounding box shouldn't play a role. The answer for this problem should be applicable to linksets also.
_____________________
I (who is a she not a he) reserve the right to exercise selective comprehension of the OP's question at anytime. From: someone I am still around, just no longer here. See you across the aisle. Hope LL burns in hell for archiving this forum
|
|
Llauren Mandelbrot
Twenty-Four Weeks Old.
Join date: 26 Apr 2006
Posts: 665
|
11-10-2006 14:17
I`d like to suggest that you provide a backlink so that the people who might answer this can have easier access to the background information in the original thread. You might also want to cross-link to this thread from that one, once usable information appears here.
_____________________
- ninjafoo Ng Says:
November 4th, 2006 at 7:27 am We all love secondlife so much and were afraid that the magic will end, nothing this good can ever last…. can it?
|
|
Eddy Stryker
libsecondlife Developer
Join date: 6 Jun 2004
Posts: 353
|
11-10-2006 15:00
From: Jesse Barnett From another thread:
This is where we are at in the prim drift problem. Gearsawe Stonecutter started working on it and I jumped in. We have independantly narrowed it down to how LL is storing the prim information. There are a lot of linked prim combinations that will result in reproducable drift upon a sim restart. You can also speed it up by rotating certain linksets in a seesaw manner without having to restart the sim. Some of those resulted in drifts in excess of a meter a day. But I also spent a lot of time trying to break it down to the lowest common denominator. I noticed one single prim that Gearsawe had that will drift everytime a sim is restarted.
Take a .5 meter square prim and with Rotation = <351.40, 6.05, 22.35> shear = -0.10, 0.30 will drift <-0.000015, 0.000000, -0.000015> after every restart and it is accumulative.Take the same Prim and same rotation and a shear of -0.50 & 0.50 or 0.50 & 0.50 will not drift. Or the same prim and same shear but a rotation of <30.0, 30.0, 30.0> won't drift either.
At first it seemed logical that the position of the prim or linkset was recorded and then the rest of the information like rotation, shear etc. But if that was done then there wouldn't be any drift in the single prim. So the question is condensced down to:
How exactly is LL storing the prim information? How is it that position + rotation + shear will result in drift? I know the bounding box center is different for this prim from it's position but the bounding box shouldn't play a role. The answer for this problem should be applicable to linksets also. The local disk cache is only storing the prim information that comes off the wire, your local cache shouldn't be playing a role in the sim drifting prims. The most likely reason I can think of for object drifting is lossy quantization/dequantization of prim parameters. In theory the X/Y/Z coordinates for an object are each stored as four byte (single) floating point values and won't be affected by any other parameters, but who knows really. The number that stood out most is "shear = -0.10" because 0.1 can't be accurately represented with a floating point system. Take a look at http://babbage.cs.qc.edu/IEEE-754/Decimal.html and punch in the values you are working with, you'll see that -0.10 has a significand with a repeating decimal (1.5999999) and you are actually storing -9.9999994e-2 instead of -0.10. Furthermore, values like shear are quantized down to single bytes (256 possible values in theory, in practice even less than that because of the quantization formulas LL is using) so you have a huge loss of accuracy with things like shear. If shear is being figured in to the object position at all when it's stored, this would cause it.
_____________________
http://www.libsecondlife.org From: someone Evidently in the future our political skirmishes will be fought with push weapons and dancing pantless men. -- Artemis Fate
|
|
Llauren Mandelbrot
Twenty-Four Weeks Old.
Join date: 26 Apr 2006
Posts: 665
|
11-10-2006 15:40
Is this other thread the one where it was determined that prim drift was occuring because the prim information was stored in a human-readable format that did not match the quantization available in the internal format? Please, provide a link!
_____________________
- ninjafoo Ng Says:
November 4th, 2006 at 7:27 am We all love secondlife so much and were afraid that the magic will end, nothing this good can ever last…. can it?
|
|
Jesse Barnett
500,000 scoville units
Join date: 21 May 2006
Posts: 4,160
|
11-10-2006 15:51
Llauren, We have been working on the problem for nearly two months now and it is spread out over about 4 threads with a lot of dead ends and side treks. Even the qoutation from Strife was from an unrelated thread. Prim drift is a problem that has been with SL from day one. Most have just accepted it as just a nuisance, while a few have tried to gather some data over time. You will still see a thread pop up every now and then from someone bitching that thier doors drift in thier builds.
Still after a hundred or more hours of work between Gearsawe and I and twice that many sim restarts it all boils down to how LL is storing the info. I had been promising for a couple of weeks to post the question on the libsl mailing list but didn't really want to "spam" the list and side track anyone from thier work. The hope was that they had been able to work out how the info was being stored. Eddy's answer would negate that assumption. (Thank you Eddy). Unfortunately being that the problem has been around for so long, a person would also have to come to the conclusion that LL also just views it as a nuisance. If we had been able to specify the exact cause of the problem and gave the solution then MAYBE some developement time would have been allocated to fixing it.
At some point I will post the query in Answers just on the off chance one of the backend people will respond. Other then that the project is dead in the water until we can find out how the info is handled.
_____________________
I (who is a she not a he) reserve the right to exercise selective comprehension of the OP's question at anytime. From: someone I am still around, just no longer here. See you across the aisle. Hope LL burns in hell for archiving this forum
|
|
Llauren Mandelbrot
Twenty-Four Weeks Old.
Join date: 26 Apr 2006
Posts: 665
|
11-10-2006 16:01
I think I may have read one or more of those threads recently. Does my description above sound familiar from any of them? While this is not a problem for me, personaly, I do find it interesting, and would appreciate an opportunity to backtrack those four threads. Thank you for taking the time to address my concerns. ::hugs::
_____________________
- ninjafoo Ng Says:
November 4th, 2006 at 7:27 am We all love secondlife so much and were afraid that the magic will end, nothing this good can ever last…. can it?
|
|
Jesse Barnett
500,000 scoville units
Join date: 21 May 2006
Posts: 4,160
|
11-10-2006 17:37
Sorry Llauren. I was replying to your message posted before Eddy's reply while you were typing the follow up question. I'll get back a little later with the relevant threads.
_____________________
I (who is a she not a he) reserve the right to exercise selective comprehension of the OP's question at anytime. From: someone I am still around, just no longer here. See you across the aisle. Hope LL burns in hell for archiving this forum
|
|
Llauren Mandelbrot
Twenty-Four Weeks Old.
Join date: 26 Apr 2006
Posts: 665
|
11-10-2006 17:55
No problem! Thank you! ::hugs::
_____________________
- ninjafoo Ng Says:
November 4th, 2006 at 7:27 am We all love secondlife so much and were afraid that the magic will end, nothing this good can ever last…. can it?
|
|
Strife Onizuka
Moonchild
Join date: 3 Mar 2004
Posts: 5,887
|
11-10-2006 18:25
Prim drift is a perplexing issue to which there is no easy solution short of hierarchal linking (HL) & higher percission floats (doubles).
LL isn't keen on implementing HL, it's a lot of work; it effectively requires rewriting link_message, detect events & various functions; it would be easier for LL to do this with Mono in place ([post=1330994]Mono status[/post]), as then they could just create an object model and return objects instead of link numbers (an prim object model POM).
It's nice to be quoted ^_^
_____________________
Truth is a river that is always splitting up into arms that reunite. Islanded between the arms, the inhabitants argue for a lifetime as to which is the main river. - Cyril Connolly
Without the political will to find common ground, the continual friction of tactic and counter tactic, only creates suspicion and hatred and vengeance, and perpetuates the cycle of violence. - James Nachtwey
|
|
Llauren Mandelbrot
Twenty-Four Weeks Old.
Join date: 26 Apr 2006
Posts: 665
|
11-10-2006 18:42
I`d love to see an object model for our objects. ::giggle:: I come from a Python background, and I`ve written an entire game engine in Javascript, so I`m familiar with that sort of object. I`d love to be able to script my Second Life projects in Python, too, but I don`t see that happening any time soon, either.
_____________________
- ninjafoo Ng Says:
November 4th, 2006 at 7:27 am We all love secondlife so much and were afraid that the magic will end, nothing this good can ever last…. can it?
|
|
Jesse Barnett
500,000 scoville units
Join date: 21 May 2006
Posts: 4,160
|
11-11-2006 10:41
I think this is all of them. You will notice that I came to the (false) conclusion at one point that all of it was because of IEEE 754 float errors. It probably is to some extent but still the server is doing something that is screwing things up. In the example I gave above on drift the object was set in all three axis to zero float and checked to 6 decimal places. /54/21/146735/1.html/310/7e/144846/1.html/142/d3/145466/1.htmlWhile looking for these threads I also stumbled across another relevant qoute from Eddy: From: Eddy Stryker You can only edit to three places because the values are sent across the network layer quantized down to 16-bit values (and in general only use the range 0-200) instead of 32-bit floats. Even at three decimal places you can't use all the values, 0.038 might correct to 0.041 as an example, depending on the property you are changing. Position however is sent using full 32-bit floats, but who knows how the server engine handles it. From this related thread: /54/f4/136824/1.html
_____________________
I (who is a she not a he) reserve the right to exercise selective comprehension of the OP's question at anytime. From: someone I am still around, just no longer here. See you across the aisle. Hope LL burns in hell for archiving this forum
|
|
Llauren Mandelbrot
Twenty-Four Weeks Old.
Join date: 26 Apr 2006
Posts: 665
|
11-11-2006 12:52
Thank you, Jesse. According to my browser`s Visited Links highlighting, I`ve already visited the first and fourth threads you list. I`m too tired to think straight at the moment, but when I`m more alert, I`ll want to catch up on them, and back-track the other two, as well.
_____________________
- ninjafoo Ng Says:
November 4th, 2006 at 7:27 am We all love secondlife so much and were afraid that the magic will end, nothing this good can ever last…. can it?
|