[x3d-public] This is merely brain storming

Christoph Valentin christoph.valentin at gmx.at
Fri Mar 15 11:38:49 PDT 2019


Hi all,

Maybe I'm again carrying coals to Newcastle :-)

Please ignore, if so.

Have a nice weekend
Christoph

P.S.:

1  Scope of the Text
--------------------
The following text is written in a spirit of trying to inspire ideas about a
future application layer protocol for X3D multiuser scenes.

Abbreviations:
PDU	......Protocol Data Unit – a well defined piece of information that can be
          piggy backed on the back of some lower layer protocols

2  Assumptions about an X3D MU Protocol ("Protocol X")
------------------------------------------------------

 1. "Protocol X" shall define PDUs (and even collections of PDUs) that carry
    collections of values of states and/or events, which are applicable to X3D
    MU scenes (the terms "state" and "event" will be defined later in this text)
    
   (a) The transmission of the (collections of) PDUs shall be done in a piggy
       backed way on the back of some transport protocol (e.g. in the message
       body of SIP messages or HTTP messages)
   
   (b) "Protocol X" shall be specified in a "global protocol spec" (GPS)
 
       i. The GPS shall define the PDUs for "protocol X", e.g.
          A. Login Request/Challenge/Grant (LI-R, LI-CH, LI-G)
		            ----> LI-R invokes either LI-CH or LI-G
          B. State Publish and Query Request (SPQR)
		            ----> invokes SUN back to originator
		            ----> can invoke SUN to one, some or all scene instances
          C. State Publish Request (SPRE)
		            ----> can invoke SUN to one, some or all scene instances
          D. State Change Request (SCR)
		            ----> can invoke SUN to one, some or all scene instances
          E. State Update Notification (SUN)
          F. Subscribe To State (STS)
		            ----> can invoke SUN back to originator (state exists already)
          G. Broadcast Event (BEV)
          H. Route Event (REV)
          I. and so on (these are just funny examples !!!!!!!!!!!!!!!!!!!!!!!!!)
 
       ii. The GPS shall define communication paths, which can be taken by the
           PDUs. One, some or all of the following communication paths shall be
           taken:
          A. From one scene instance to one server (hierarchy)
          B. From one scene instance to one server (hierarchy) and then – if
             a response PDU is invoked – back to the originating, to some or
             to all scene instances of a multiuser session
          C. From a server (hierarchy) to one, some or all scene instances of
             a multiuser session
          D. From one scene instance to one, some or all scene instances of a
             multiuser session
          E. From one scene instance to one scene instance and then – if a
             response PDU is invoked – back to the originating, to some or to
             all scene instances of a multiuser session
          F. and so on (these are just funny examples !!!!!!!!!!!!!!!!!!!!!!!!!)
 
       iii. A syntax for the PDUs shall be defined (e.g. an XML schema)
       
       iv. The GPS shall publish best current practices about how the routing of
           PDUs (and of collections of PDUs) via the defined communication paths
           can be combined to create senseful use cases.
   
   (c) "Supplementary standards" shall define about how the protocol shall be
       transmitted over the possible transport protocols. This shall be
       compliant with the decision that WebRTC + AJAX shall be used, if the 3D
       scene runs in a browser
 
       i. Supplementary Standard "Protocol X over transport protocol 1"
 
       ii. Supplementary Standard "Protocol X over transport protocol 2"
       
       iii. and so on ad. inf.

   (d) The GPS shall define general requirements for the used transport protocol
       
       i. Security
       
       ii. Needed infrastructure for routing

       iii. acknowledged transmission, checksums, error rates, ......
       
       iv. and so on ......

 2. Note: states are variables that describe a part of the shared state of a
          scene.
    A scene instance (or a part of a scene instance) needs the current value of
    all of the states that are related to it (i.e. its "current shared state")
    to get initialized, after it (the (part of the) scene instance) has been
    (down)loaded from the data storage or from the 3D Web.

    Examples of states:
   
   (a) position of an avatar (SFVec3f)
   (b) orientation of an avatar (SFRotation)
   (c) openness of a door (SFBool)
   (d) velocity of a train (SFFloat)
   (e) position of a train (MFString)
   (f) content of a key container (MFString)

 3. Note: events describe happenings that have happened in one scene instance
          and that need to be communicated to all, to some or to one scene
          instance or to the server (hierarchy)
          
    Examples of events:
    
   (a) user X has touched geometry Y
   (b) user X wants to change velocity of train Y by amount Z m/sec
   (c) user X wants to toggle openness of door Y
   (d) user X has left the game -> remove avatars



More information about the x3d-public mailing list