Adding neighbor region sequence

From Second Life Wiki
Jump to navigation Jump to search

Event sequence diagram for adding a connection to a neighbor region

Sequence diagram
Source code for the sequence diagram above.

To change the diagram, change this source code, then paste it into this free online chart generator [1] to generate a new .png image. Then replace the version of the image above with a new image.

title Adding a new region to viewer comms.

participant "Viewer" as V
participant "Host Region" as H
participant "Neighbour Region" as N

V->H: EventQueueGet
activate H
rbox left of V: Stood in the region centre\nDraw Distanceis 32m\nno otherregions are visibleV-->H: AgentUpdate(x=128,y=128,Far=32)
V-->>H: AgentUpdate
V-->>H: AgentUpdate
V-->>H: AgentUpdate
rbox left of V: Draw Distance is increased to 200m
V-->>H: AgentUpdate(Far=200)
H->N: ServerSide ChitChat
N->H:
group EventQueueGet<response>
H->V: EventQueueGet([EnableSimulator])
deactivate H
H->>V: EnableSimulator
end
V->H: EventQueueGet
activate H
V-->N:UseCircuitCode
V-->>H: AgentUpdate
V-->>H: AgentUpdate
N-->V: RegionHandshake
V-->N: RegionHandshakeReply
V-->>H: AgentUpdate
group EventQueueGet<response>
H->V: EventQueueGet([EstablishAgentCommunication])
deactivate H
H->>V: EstablishAgentCommunication
end
V->N: Seed
N->V: Seed<Response>V

Discussion

This is an event sequence diagram of the essential events that take place as a region discovers and connects to an adjacent region. This is how the viewer is able to show more than one region on screen.

This is the "happy path" - the way it is supposed to work. In practice, SL simulators sometimes send the EstablishAgentCommunication message one minute late. This is a bug. It ought to prevent the region from appearing in viewers. However, a workaround in the Second Life Viewer code [2] allows displaying objects in the region by using the asset fetch capability of the region that has the main agent. (Second Life currently uses the same asset servers for all regions. Open Simulator does not. OpenSimulator does not have this bug; sim servers there promptly send EstablishAgentCommunication after the region handshake.)

This workaround only applies to asset fetching. Until the EstablishAgentCommunication message arrives, all functions which require capabilities or events are broken. This includes some physically-based rendering features, and may affect VIVOX voice and region crossings.

See also forum discussion at [3]

Notes

Dashed lines are UDP messages. Solid lines are events received via EventQueueGet.

This documents the successful "happy path". Error conditions are not yet covered.

This information reflects what has been discovered by third part viewer developers. It is not official and may contain errors.