Actually, there are a few good reasons why 256 is probably a reasonable number, mostly relating to floating-point and fixed point precision:

- 32 bit floating point gets you around 7 decimal points of precisions - this means that once you hit a distance of about 256 meters, you're looking at somewhere around millimeter to centimeter precision. So once you go too much beyond 256 meters, you're going to start having precision issues when tightly positioning objects in the world reference frame. Note that if we had been thinking further ahead at the time, we would have positioned 0,0,0 at center of the region, and doubled our precision at the edges. - Until we hit the highest precision level, we will often send object positions in 16-bit fixed point representations (I believe). Increasing the size of a region would increase the distance at which we would start having to send full-precision 32-bit data down to the client. This could have some impact on bandwidth utilization, and possibly rezzing speed of distant objects. - The larger the area of the region, the more objects we need to support in order to be able to maintain a reasonable density of content across an entire simulator node. I think with the 512MB initial constraint on memory usage at the time that we started, this was probably a reasonable number. - The smaller the region, the more regions an individual viewer needs to connect to at a certain draw distance. Since the renderer in its current implementation can realistically use only a 512 meter draw distance at best, this generally limits a viewer to talking to around half a dozen regions right now. Reducing that size would cause you to have to connect to a much larger number of regions. Also, as you reduce size of a region, the boundary zones where you have to start sharing simulation (which someday we will eventually do properly) increase, which means that you generate more edge traffic on the simulation side.

This is not to say that there was necessarily a HUGE amount of conscious thought put into this (if there was, we would have put the origin at the center as mentioned above) - but 256 meters is not actually an unreasonable value.

In any case, this is an incredibly difficult constant to change in the system - it would require lots of protocol changes, as well as a fairly major overhaul of the server side, so it's a somewhat moot discussion right now. :)

- Doug

On Thu, 30 Oct 2008 05:16:26 -0700, Argent Stonecutter <[EMAIL PROTECTED]> wrote:

I think it was just an arbitrary power of 2: 128 was too small and 512 was too big.

512 isn't too big.

1024 would have been about right.

Imagine a more open, less cramped Second Life.

_______________________________________________
Policies and (un)subscribe information available here:
http://wiki.secondlife.com/wiki/SLDev
Please read the policies before posting to keep unmoderated posting privileges



--
Douglas Soo
Engineering Director
Linden Lab
_______________________________________________
Policies and (un)subscribe information available here:
http://wiki.secondlife.com/wiki/SLDev
Please read the policies before posting to keep unmoderated posting privileges

Reply via email to