Difference between revisions of "SLGOGP Teleport Strawman"
Jump to navigation
Jump to search
(New page: This strawman represents a possible open teleport protocol. The sequencing is described first, which also introduces the major players: Client, Agent Domain, Simulator/Region Domain A, Sim...) |
|||
Line 2: | Line 2: | ||
= Teleport Flow = | = Teleport Flow = | ||
Here is the basic flow for current SL teleports: | |||
[[Image:Old teleport.png]] | |||
This is the basic proposed flow: | |||
[[Image:New teleport.png]] | |||
= RezAvatar = | = RezAvatar = |
Revision as of 14:10, 1 May 2008
This strawman represents a possible open teleport protocol. The sequencing is described first, which also introduces the major players: Client, Agent Domain, Simulator/Region Domain A, Simulator/Region Domain B. For perspective, the current Second Life Grid teleport flow is also included. Following that are the draft specifications for the two main pieces, called rezAvatar and derezAvatar on the agent domain. The simulator side portions of this protocol have been tentatively dubbed "teleport_avatar" and "give_up_av_to_pipe".
Teleport Flow
Here is the basic flow for current SL teleports:
This is the basic proposed flow:
RezAvatar
- Once the viewer acquires the cap for rezAvatar, it requests it from the agent domain
viewer -> agentd
{'region_url': <r_url>, 'position': [x, y, z]}
- The agent domain then invokes rezAvatar on the simulator at the given region_url
agentd -> simulator
{ 'age_verified' : <boolean>, 'agent_access' : <boolean>, 'agent_id' : <uuid>, 'allow_redirect: <boolean>, 'circuit': <int>, 'first_name': <string>, 'god_level': <int>, 'god_overide': <bool>, 'identified': <bool>, 'inventory_host': <uri string>, 'last_name': <string>, 'limited_to_estate': <int>, 'position': [x, y, z], 'secure_session_id': <uuid>, 'session_id': <uuid>, 'start': <string>, 'transacted': <bool>, }
// Below are the hard coded values used for the a proof of concept implementation on two Linden dev grids { 'age_verified' : false, 'agent_access' : false, 'agent_id' : <uuid>, 'allow_redirect: 1, 'circuit': <int> 'first_name': <string> 'god_level': 0 'god_overide': bool 'identified': false 'inventory_host': inv4.mysql.agni.lindenlab.com 'last_name string': 'limited_to_estate': 1 'position [x, y, z]': <int, int, int> 'secure_session_id': <uuid> 'session_id': <uuid> 'start': 'safe' 'transacted': false }
- The simulator then returns the actual region (in case it might be different from requested) and the seed cap.
simulator -> agentd
{ 'region_x': int 'region_y': int 'seed_capability': uri string 'region' : uuid 'look_at' : [f32, f32, f32] 'sim_access' : char 'connect': bool 'sim_port': int 'position': [f32, f32, f32] 'm_ip': ip string }
- Finally the agent domain returns the details to the client
agentd -> viewer
{ 'session_id': uuid 'secure_session_id': uuid 'seed_capability': uri string 'look_at' : [f32, f32, f32] 'sim_ip': ip string 'sim_port': int }
// idiosyncratic things sent back to our viewer { 'sim_access' : char 'connect': bool 'sim_port': int 'position': [f32, f32, f32] 'agent_id': uuid 'region_x': int 'region_y': int }