Re: [SWMP] Media Machines' initial design and code
john_patterson@us.ibm.com Sun, 24 June 2007 01:01 UTC
Return-path: <swmp-bounces@ietf.org>
Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1I2GTR-0007mU-QA; Sat, 23 Jun 2007 21:01:05 -0400
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1I18V7-0004EF-2E for swmp@ietf.org; Wed, 20 Jun 2007 18:18:09 -0400
Received: from e5.ny.us.ibm.com ([32.97.182.145]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1I18V5-0002Sk-AH for swmp@ietf.org; Wed, 20 Jun 2007 18:18:09 -0400
Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234]) by e5.ny.us.ibm.com (8.13.8/8.13.8) with ESMTP id l5KMI400028153 for <swmp@ietf.org>; Wed, 20 Jun 2007 18:18:04 -0400
Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay02.pok.ibm.com (8.13.8/8.13.8/NCO v8.3) with ESMTP id l5KMI4v6431396 for <swmp@ietf.org>; Wed, 20 Jun 2007 18:18:04 -0400
Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id l5KMI3SG012952 for <swmp@ietf.org>; Wed, 20 Jun 2007 18:18:03 -0400
Received: from internet1.lotus.com (internet1.lotus.com [9.33.9.11]) by d01av03.pok.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id l5KMI34I012934 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Wed, 20 Jun 2007 18:18:03 -0400
Received: from wtfmail02.edc.lotus.com (wtfmail02.lotus.com [9.33.9.69]) by internet1.lotus.com (8.14.1/8.14.1) with ESMTP id l5KMI3RJ017503; Wed, 20 Jun 2007 18:18:03 -0400 (EDT)
To: jweber@DOMAIN.HIDDEN, john_patterson@us.ibm.com
Subject: Re: [SWMP] Media Machines' initial design and code
MIME-Version: 1.0
X-Mailer: Lotus Notes Release 7.0 August 18, 2005
Message-ID: <OFEA6E617C.FAAC38A3-ON85257300.006DDB5F-85257300.007A7F58@lotus.com>
From: john_patterson@us.ibm.com
Date: Wed, 20 Jun 2007 18:18:36 -0400
X-MIMETrack: Serialize by Router on WTFMAIL02/WTF/M/Lotus(Release 7.0.2FP2|April 16, 2007) at 06/20/2007 06:18:37 PM, Serialize complete at 06/20/2007 06:18:37 PM
X-Spam-Score: 0.5 (/)
X-Scan-Signature: 2d133cc328f58695161c98bb4f4dc213
X-Mailman-Approved-At: Sat, 23 Jun 2007 21:01:05 -0400
Cc: swmp@ietf.org
X-BeenThere: swmp@ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Discussion of a Simple Wide-area Multiuser-3D Protocol <swmp.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/swmp>, <mailto:swmp-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www1.ietf.org/pipermail/swmp>
List-Post: <mailto:swmp@ietf.org>
List-Help: <mailto:swmp-request@ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/swmp>, <mailto:swmp-request@ietf.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============0983091647=="
Errors-To: swmp-bounces@ietf.org
Jay Weber wrote: I'd like to point the group to Media Machines' initial work towards SWMP. We presented an overview paper at the Web3D 2007 Symposium, which you can find at http://www.mediamachines.com/hydra/swampweb3d2007.pdf I have now managed to look through the paper and I am ready to ask some questions. First, let me state that I am not especially familiar with X3D. I have looked quickly at it, but I have not gotten to the depth that the authors have. It is possible that some of my questions are best answered by referring me back to X3D. Second, I understand the swamp protocol (I use the name from the paper.) to be a peer-to-peer state replication protocol. By peer-to-peer, I do not mean that it is useless for a server-based approach, but that it only addresses communication between two network nodes and this communication is completely symmetric; there is no assumption about either node having a different role from the other. By state replication, I mean that both nodes maintain a copy of the state (at least the relevant, e.g., dynamically changing, state) and the protocol is used to keep these copies synchronized. Third, I assume there is a desire for swmp to embrace the full breadth of virtual worlds implementations. The paper (and subsequent postings) clearly recognize alternative network configurations (peer-to-peer, server-based, and hybrid) as an issue. The paper is less clear on its position regarding varying approaches to where certain virtual worlds semantics, e.g., physics, collision detection, etc., will occur, i.e., centrally or peripherally. I do not fault the paper for that, I just want to point out that this is a major differentiator among existing implementations and, if possible, we want to support many, if not all, alternatives. Fourth, I assume that swamp supports packing multiple messages onto a single udp packet. Without that I am having a little trouble understanding the obsession with keeping messages short (as evidenced by the setf method.). Fifth, I assume that the purpose of swamp is for communicating state that is dynamic (ie, changing due to interactions with the virtual world) and not for the purpose of moving the static aspects of the 3D models. It is not stated, but I am assuming that terrain, avatars, and in-world objects are initially obtained via prior download/install, http, or some other query-response protocol. SWAMP is not for retrieving this static information; it is for maintaining the dynamic attributes of these models as they change due to being instantiated in a virtual world. So, here are my questions: 1) Should the base model be more generic with X3D as a specific type? Many systems starting with Linda and moving through JavaSpaces and TSpaces have adopted the attitude that a state sharing system can use a very generic notion of how the state is organized. These systems assume the state is in tuples; other systems assume something more akin to property-value pairs. In any case, the base model is very generic and not tied to any particular purpose or specialized representation. I wonder whether that would be a better approach for swmp. I am not arguing that there is no place for X3D, just that we might prefer to treat it as a special case of a more generic state representation scheme. X3D would be less embedded in the PDUs and more a conventional and well-defined set of types, fields, values, etc. that can be mapped into the generic PDU. The value of this is that when we find some other kind of state that we would like to synchronize, we would not be struggling to map it into an X3D-based message structure. Instead, we would map it into tuples or property-value pairs, which would certainly be less awkward and might also be more efficient. As it stands, the biggest impediment to this approach posed by swamp is the rather small number of bits allocated to type information (and possibly the fieldID, though I do not fully understand its purpose.) 2) Is X3D the right model? I am not familiar enough with X3D to have a strong position on this. I am mostly reacting to the idea that (to a first approximation) it is a scene graph representation. That means it is tied to the display of the virtual world, which means it is more view than model in the model-view-controller (MVC) sense. Presumably, our primary objective is to share the model of the world. This is the chain of reasoning that drives my question. In truth, it is more an aesthetic reaction to focusing on sharing views than a deep engineering concern. I am aware that scene graphs often have highly abstracted grouping nodes that function like models in the MVC sense. I also know that these high-level nodes have properties that can encode the more abstract model state. In all likelihood, any model can be represented using the scene graph and therefore X3D is adequate. But, should designers/developers be compelled to represent their models that way. For example, must a fire be modeled as an X3D object or could we treat it as something unseen that causes changes to the visible objects based on complex computations? Having said all this, I do understand that we must also be able to share the view objects. I also recognize that X3D is a better representation of the state of a virtual world than something more abstract that I have not yet dreamed up. Perhaps the best resolution of this question is to treat it as a special case of my argument in 1) above. Supporting X3D synchronization is key, but it should not be the only form of state that we are prepared to synchronize. 3) Should notifications of changes be distinguished from instructions to make a change? Most of the time when I have constructed protocols of this sort, I have distinguished between messages that indicate a desire to change the state and messages that indicate that the state has been changed. SWAMP does not seem to make this distinction. I assume a set message is used both to reflect that a change should be made and that a change has been made. My bias for differentiating these messages derives from working on client-server implementations, but I think it is useful even in a peer-to-peer situation. Usually, one node has final say on whether a change of state will be permitted. For the other node, a set, add, or remove message is a request. It cannot count on the request being honored. For the controlling node, a setNotify, addNotify, or removeNotify message is definitive. This is not a request of the receiving node; it is informative. I find this differentiation of requests for changes vs. notifications of changes easier to follow and I would strongly recommend that swmp follow this approach. 4) How does swamp support latecomers? Presumably one of the values of having a server keep track of the state of the virtual world is so that late arriving clients can retrieve the current values and get caught up. This is generally referred to as the latecomer problem. I do not see how a latecomer requests the current state of the virtual world using swmp. I expected to find a get or read message that would be followed by a barrage of add messages (or better yet addNotify messages.) Am I missing something? Were you planning to use http to retrieve this state? If so, what were you planning to do about race conditions between the http request and notifications of changes to the not yet received state? jfp
_______________________________________________ SWMP mailing list SWMP@ietf.org https://www1.ietf.org/mailman/listinfo/swmp
- [SWMP] Media Machines' initial design and code Jay C. Weber
- Re: [SWMP] Media Machines' initial design and code chris
- Re: [SWMP] Media Machines' initial design and code Jay C. Weber
- [SWMP] tcp and udp transports in one application … Jay C. Weber
- Re: [SWMP] Media Machines' initial design and code john_patterson
- Re: [SWMP] Media Machines' initial design and code Paul Aslin
- RE: [SWMP] Media Machines' initial design and code Tony Parisi
- RE: [SWMP] Media Machines' initial design and code Sven-Erik Tiberg
- Re: [SWMP] Media Machines' initial design and code Jay C. Weber
- Re: [SWMP] Media Machines' initial design and code Jay C. Weber
- Re: [SWMP] Media Machines' initial design and code john_patterson
- Re: [SWMP] Media Machines' initial design and code Jay C. Weber
- [SWMP] Introducing pub-sub john_patterson
- RE: [SWMP] Introducing pub-sub Tony Parisi
- RE: [SWMP] Introducing pub-sub john_patterson
- [SWMP] SWMP server source Sven-Erik Tiberg