[Opensim-dev] new idea about simcrossing (maybe)

Melanie melanie at t-data.com
Tue Jul 22 10:22:52 UTC 2008


Hi,

this would really be great to have. There is one thing that can't be 
snapped and sent until the actual crossing, though - script states 
in attachments. Those would need to be snapshotted at the very 
moment of the crossing, and send at that time.

Melanie


Lc wrote:
> I was borered recently at the office and try to see how we can have a 
> smooth simcrossing.
> I don't know how actual simcrossing works, but here is my tough :
> 
> 
> The idea is using the concept used in GSM cellphone to handle handover 
> between two cells without droping the communication.
> 
> Concept:
> 
> The SimCrossing (SC) is based one several messages exchanged between the 
> object (Object), the actual sim (OriginSim) and the next sim 
> (TargetSim). The main exchange are located in the HandOverArea (HOarea) 
> located on the OriginSim. This area is computed by the viewer for each 
> TargetSim (maximum 4 ). 
> 
> 
> 
> Definition
> 
> Name
> 
> 	
> 
> Description
> 
> 	
> 
> Comment
> 
> Object (OBJ)
> 
> 	
> 
> Any prims/avt rezzed InWorld that could trigged a SIMCROSSING event
> 
> 	
> 
> 
> OriginSim (ORIGSIM)
> 
> 	
> 
> Actual simulator where the object stand BEFORE simcrossing
> 
> 	
> 
> 
> TargetSim (TARGET)
> 
> 	
> 
> Simulator where the OBJECT could go
> 
> 	
> 
> 
> ActiveSet
> 
> 	
> 
> List containing all the neighborhoods sims and their data (location,ping…)
> 
> 	
> 
> 
> HOarea
> 
> 	
> 
> Logical area defined on the object level where all the messages exchange 
> should occured
> 
> 	
> 
> See figure 1 for more details
> 
> 
> 
> Definition HOArea
> 
> In order to have a smooth transition, we need to determine an HandOver 
> area where all the simcrossing messages exchange should happens. This 
> area is computed on the object level regarding the ping latency between 
> the Target and the object velocity. This area contains a RedZone area 
> where all the Simcrossing conditions should be satisfied, otherwise the 
> simcrossing won't happen.
> 
> 
> 
>  
> 
> Phase 1 : Login or rezzing
> 
> During the login phase, the object asks the surrounding sims list to its 
> actual simulator. We can call this list the ActiveSet .  The ActiveSet 
> contains the sim data and their "ping" time.
> 
> The object compute the SimCrossing boundaries and determine an 
> "HandOver" area with a Redzone area based on the timers (ping + delta). 
> Normaly the Handover should be ready before entering the Redzone.
> 
> *From*
> 
> 	
> 
> *To*
> 
> 	
> 
> *Message*
> 
> 	
> 
> *Comment*
> 
> *Object*
> 
> 	
> 
> Simulator
> 
> 	
> 
> SCGetActiveSetReq
> 
> 	
> 
> Ask the OrigSim a list containing all the neighborhood sims and their 
> coordinate, status…
> 
> *OrigSim*
> 
> 	
> 
> Object
> 
> 	
> 
> SCGetActiveSetSent
> 
> 	
> 
> The Sim send all the data to the object
> 
> Once the ActiveSet received, the object start pinging all the TargetSims 
> and compute its own HOarea based on its velocity and the ping results. 
> This action should be performed on regular basis to update the ActiveSet.
> 
> 
> 
> Phase 2:  Object logged and alive entering in the HandOver Area
> 
> On periodic basis, the object send a ping to each simulator on its 
> activeset and update their status  accordingly in order to keep an up to 
> date neighbored simulator list.
> 
> When the object enter in the HandOver area, a message "SimCrossing 
> Request" is sent to the Source simulator.  The simulator will relay the 
> message to the next Simulator (Target Sim) and will start downloading 
> the object context. Those data should include all the running code, the 
> values of the code's variables like a memory dump (heap,stack and such).
> 
> Case without problem in the HOarea
> 
> *From*
> 
> 	
> 
> *To*
> 
> 	
> 
> *Message*
> 
> 	
> 
> *Comment*
> 
> *Object*
> 
> 	
> 
> OrigSim
> 
> 	
> 
> SCRequest
> 
> 	
> 
> Contains the TargetSim Id.
> 
> *OrigSim*
> 
> 	
> 
> TargetSim
> 
> 	
> 
> SCObjReq
> 
> 	
> 
> Send a simcrossing request to the target sim with all the credentials, 
> number of script running…
> 
> *TargetSim*
> 
> 	
> 
> OrigSim
> 
> 	
> 
> SCObjAck
> 
> 	
> 
> If all the credentials and data are ok, the TargetSim sent that message.
> 
> *OrigSim*
> 
> 	
> 
> Object
> 
> 	
> 
> SCObjAck
> 
> 	
> 
> The OrigSim send an ACK to the object.
> 
> *OrigSim*
> 
> 	
> 
> TargetSim
> 
> 	
> 
> SCObjDataSend
> 
> 	
> 
> The OrigSim start sending the object's data to the TargetSim
> 
> *TargetSim*
> 
> 	
> 
> OrigSim
> 
> 	
> 
> SCObjDataACK
> 
> 	
> 
> The TargetSim acknowledge the data and give a sim crossing clearance.
> 
> *TargetSim*
> 
> 	
> 
> OrigSim
> 
> 	
> 
> SCHoReady
> 
> 	
> 
> Give the final clearance once the context is ready on the target sim.
> 
> 
> 
> Case with problem
> 
> *From*
> 
> 	
> 
> *To*
> 
> 	
> 
> *Message*
> 
> 	
> 
> *Comment*
> 
> *Object*
> 
> 	
> 
> OrigSim
> 
> 	
> 
> SCRequest
> 
> 	
> 
> Contains the TargetSim Id.
> 
> *OrigSim*
> 
> 	
> 
> TargetSim
> 
> 	
> 
> SCObjReq
> 
> 	
> 
> Send a simcrossing request to the target sim with all the credentials, 
> number of script running…
> 
> *TargetSim*
> 
> 	
> 
> OrigSim
> 
> 	
> 
> SCObjReqNAK
> 
> 	
> 
> The TargetSim reject the request due to xxx reason.
> 
> *OrigSim*
> 
> 	
> 
> Object
> 
> 	
> 
> SCRequestNAK
> 
> 	
> 
> The OrigSim sent a rejection message and the object can't perform the 
> sim crossing.
> 
> 
> 
> In any case :
> 
> If the object reach the RedZone area before receiving *_SCObjDataAck_*, 
> a velocity slowdown should be trigged to allow the end of the data 
> download. We can eventually trigged an LSL state change (tbd).
> 
> If the object reach the end of the RedZone before receiving 
> *_SCHoReady_* the object stop the sim crossing and a major failure is 
> trigged. This case shouldn't happened.
> 
> 
> 
> Case when the object didn't want to simcross
> 
> If the object leave the HOarea, a message is trigged to release all the 
> data on the TargetSim.
> 
> *From*
> 
> 	
> 
> *To*
> 
> 	
> 
> *Message*
> 
> 	
> 
> *comment*
> 
> *Object*
> 
> 	
> 
> OrigSim
> 
> 	
> 
> SCabort
> 
> 	
> 
> Send an abort message to the OrigSim
> 
> *OrigSim*
> 
> 	
> 
> TargetSim
> 
> 	
> 
> SCobjAbort
> 
> 	
> 
> The OrigSim send this message to the TargetSim. The Targetsim clear the 
> previous object request data.
> 
> 
> 	
> 
> 
> 	
> 
> 
> 	
> 
> 
> 
> 	
> 
> 
> 	
> 
> 
> 	
> 
> 
>  
> 
> 
> 
> Sim Crossing
> 
> When the object reach the simcrossing limit, the viewer switch to the 
> Target Sim and the TargetSim send an HandoverCompleted message to the 
> SourceSim.
> 
> The SourceSim release the object context.
> 
> *From*
> 
> 	
> 
> *To*
> 
> 	
> 
> *Message*
> 
> 	
> 
> *comment*
> 
> *OrigSim*
> 
> 	
> 
> TargetSim
> 
> 	
> 
> SCperforming
> 
> 	
> 
> The OrigSim send the last actualized dump from the object to the target sim
> 
> *TargetSim*
> 
> 	
> 
> OrigSim
> 
> 	
> 
> SCperformed
> 
> 	
> 
> Acknowledge the sim crossing. The simulator clear the object. The Ho is 
> completed
> 
> 
> 	
> 
> 
> 	
> 
> 
> 	
> 
> 
>  
> 
>  
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev




More information about the Opensim-dev mailing list