A better SimCrossing

From OpenSimulator

Revision as of 02:24, 21 May 2009 by Ideia Boa (Talk | contribs)

Jump to: navigation, search



The idea behind that name is using some technics used in Telecom world (GSM,3G) to perform a better transition between sims.


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 server for each TargetSim (maximum 4 ).


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.

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).

more details here http://docs.google.com/Doc?docid=dfcvvffc_3jj3jwgxn&hl=en

Personal tools
General
About This Wiki