Hi,

-- messages protocol

    As i told in last meeting, what i said is that some information for var regions is only send using the http region capability 'Event', nad not the respective LLUDP message.

    Several of the "event" messages are direct replacements of respective LLUDP messages So that some viewers decode both into same internal message and use same processing code.

     * So the messages listed below did got the listed additional fields, with Region size information, except EstablishAgentCommunication that no longer has such fields, becasue where not needed, and so ignored by viewers

-- region sizes

http://opensimulator.org/wiki/Varregion Restrictions is not obsolete on that:

* The dimensions must be a multiple of 256 and less than or equal to 4096.

 * The dimensions must be equal so regions are square

 * One region can only have one adjacent region per side, excluding corners or viewers may crash. (so at most 4 regions touching at corners plus other 4, one touching each side)

the multiple of 256m is to simplify placement on the map grid that is a 256m grid.

the other restrictions are for compatibility with current viewers. Opensim could possible handle non square regions, but we keep the restriction for now

* Adjacent regions must be the same size unless they are all version 0.9 or above.

 This is because lack of large region support on older regions.

-- Terrain patchs

terrain is sent blocks of  patchs of 16 x 16 terrain heights, as sl

just larger regions have more of those

The protocol is as aurora, uses the same ll messages but with few changes

the layer type on global header is one this

       public enum LayerType : byte
        {
            Land            = 0x4C, // 'L'
            LandExtended    = 0x4D, // 'M'
            Water           = 0x57, // 'W'
            WaterExtended   = 0x58, // 'X'
            Wind            = 0x37, // '7'
            WindExtended    = 0x39, // '9'
            Cloud           = 0x38, // '8'
            CloudExtended   = 0x3A  // ':'
        }

where extended means regions larger than 256m

Water* where never supported

Wind is only send in 256m total size. Larger regions will have lower resolution. --> obsolete on many viewers

Cloud was only send in 256m total size. Larger regions had lower resolution. -->  removed from most viewers and opensim.

then each patch is identified be a patchID encoded  as :

            header.PatchIDs = largeRegion ?  (patchX << 16) | (patchY & 0xFFFF) :    (patchX << 5) | (patchY & 0x1F);

where largeRegion is true for regions larger than 256m

 note that terrain patchs are 16x16m size not 4x4. 4x4 is land parcels minimal size.

-- region Handle math

SL uses region Handle as a region identifier, it built from the region reference corner that is left lower corner on map.

            ulong handle = X & 0xffffff00; // make sure it matches grid coord points.
            handle <<= 32; // to higher half
            handle |= (Y & 0xffffff00);

with X and Y the global coords (in meters ) of that corner

Because historic reasons, opensim must always look for a region that contains such a point

so only restriction is mostly that any pair (handle, offset) of a message do point to the correct point.

if offset is the localoffset as defined for LSL, ie relative to the reference corner, so handle must be made from that

but in several messages it can be relative to the nearest lower left grid point.


Ubit


On 14-May-23 05:54, John Nagle wrote:
I'm working on a new viewer. It's connecting to Second Life, and to
non-varregion Open Simulator regions.  Varregions don't work yet.
I need more info on them.

## Simulator to client protocol for connecting to regions

The Open Simulator wiki says, at

http://opensimulator.org/wiki/Varregion

"The implementation uses the Aurora large region protocol extensions so
the existing Firestorm and Singularity Aurora support will now work for
OpenSimulator."

This references

http://opensimulator.org/wiki/Varregion/Protocol

which says:

 Simulator to Client Protocol

    EnableSimulator event message: add integers 'RegionSizeX' and
'RegionSizeY'
    CrossRegion event message: add integers 'RegionSizeX' and
'RegionSizeY' to 'RegionData' section.
    TeleportFinish event message: add integers 'RegionSizeX' and
'RegionSizeY' to 'Info' section.
    EstablishAgentCommunication event message: add integers
'region-size-x' and 'region-size-y'.

This is, apparently, obsolete, according to Ubit. Although there is
still code for those LLUDP messages in Firestorm. Does anything still
use those now-blacklisted UDP messages? Ubit has said that region size
info is now passed via an HTTP capability. But which capability, and in
what format?

Does anybody still use that old Aurora format?

The obsolete Varregion article also says that regions are limited to
multiples of 256x256 and that sizes cannot be mixed for regions that
touch. Are those obsolete restrictions, or should mixed-size regions
be handled? If so, how does a sim find all its neighbors?

Are non-square regions now supported?

(An argument for mixed-size regions in a grid is that you can have large
regions of mostly empty space as large regions, with smaller regions
for heavily populated areas. I'm willing to support that if the protocol
is documented.)


## Terrain patches

The wiki says " Implementation Discussion (Obsolete)", and
that, as of the obsolete version, terrain was sent the Linden Lab way,
as patches with discrite cosine transform compression. The discussion
on the wiki suggests this be replaced with generalized meshes. Was that
ever supported? I would guess not, but would like to be sure before
I implement.

For larger regions, do the terrain squares get bigger than LL's 4x4 meter size? Or are there just more 4x4 terrain squares?

                John Nagle
                Animats

_______________________________________________
Opensim-dev mailing list
[email protected]
http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
_______________________________________________
Opensim-dev mailing list
[email protected]
http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev

Reply via email to