Re: [vwrap] #12: Event-like resource type for LLIDL

Lawson English <lenglish5@cox.net> Tue, 06 April 2010 20:48 UTC

Return-Path: <lenglish5@cox.net>
X-Original-To: vwrap@core3.amsl.com
Delivered-To: vwrap@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 8CB593A6A3B for <vwrap@core3.amsl.com>; Tue, 6 Apr 2010 13:48:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 0.001
X-Spam-Level:
X-Spam-Status: No, score=0.001 tagged_above=-999 required=5 tests=[BAYES_50=0.001]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id HUbKy2PscIKR for <vwrap@core3.amsl.com>; Tue, 6 Apr 2010 13:48:46 -0700 (PDT)
Received: from fed1rmmtao106.cox.net (fed1rmmtao106.cox.net [68.230.241.40]) by core3.amsl.com (Postfix) with ESMTP id 30FA53A69A9 for <vwrap@ietf.org>; Tue, 6 Apr 2010 13:47:51 -0700 (PDT)
Received: from fed1rmimpo03.cox.net ([70.169.32.75]) by fed1rmmtao106.cox.net (InterMail vM.8.00.01.00 201-2244-105-20090324) with ESMTP id <20100406204749.TXQQ1296.fed1rmmtao106.cox.net@fed1rmimpo03.cox.net>; Tue, 6 Apr 2010 16:47:49 -0400
Received: from ip72-200-121-127.tc.ph.cox.net ([72.200.121.127]) by fed1rmimpo03.cox.net with bizsmtp id 2Lnk1e00G2l1Ksg04Lnkmz; Tue, 06 Apr 2010 16:47:44 -0400
X-VR-Score: -184.00
X-Authority-Analysis: v=1.1 cv=yjuDh3Ma92GrVaJxYD7gfORM7ilP1Knqouyx6SOEBcg= c=1 sm=1 a=JplFsMs8w-wA:10 a=Wajolswj7cQA:10 a=IkcTkHD0fZMA:10 a=lHHFyFaL52RzbKbxZIYZqA==:17 a=gjM9v_0UAAAA:8 a=cexIBkohAAAA:8 a=mng0MaQmAAAA:8 a=W1N-uV7Q_0gxI9FtEzkA:9 a=hswKGbfY3IV7rFZhlkAA:7 a=J0eqwYsVHYLNY0nZWNq5ld7RTUgA:4 a=QEXdDO2ut3YA:10 a=Y110doR01EYA:10 a=lHHFyFaL52RzbKbxZIYZqA==:117
X-CM-Score: 0.00
Message-ID: <4BBB9DF0.9070706@cox.net>
Date: Tue, 06 Apr 2010 13:47:44 -0700
From: Lawson English <lenglish5@cox.net>
User-Agent: Thunderbird 2.0.0.24 (Macintosh/20100228)
MIME-Version: 1.0
To: Carlo Wood <carlo@alinoe.com>
References: <059.7033e411bbd74dc481125cfa915c0bb4@tools.ietf.org> <20100406185739.GB6424@alinoe.com>
In-Reply-To: <20100406185739.GB6424@alinoe.com>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Cc: vwrap@ietf.org, trac@localhost.amsl.com
Subject: Re: [vwrap] #12: Event-like resource type for LLIDL
X-BeenThere: vwrap@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: lenglish5@cox.net
List-Id: Virtual World Region Agent Protocol - IETF working group <vwrap.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/vwrap>, <mailto:vwrap-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/vwrap>
List-Post: <mailto:vwrap@ietf.org>
List-Help: <mailto:vwrap-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/vwrap>, <mailto:vwrap-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 06 Apr 2010 20:48:48 -0000

Carlo Wood wrote:
> I'm not sure if I follow what an "event" is.
>
> [...]
>   
> means that upon a request the sim will not reply with a responding
> state, but merely with an ACK, then the requesting host has to remember
> the operator and apply it on the state at the moment he receives the
> acknowledge.
>
> For example, host1 requests R1, then it receives the update R2 and
> finally receives the acknowledge for the R1 request.  Clearly it
> has to apply the operators in the order: first R2 then R1.
>
>   
You might want to look at the Teatime architecture as implemented in 
Croquet/Cobalt for one way in which this is handled. Each user of a 
Cobalt "client" initiates an event in its own copy of the 
simulator-client, which sends the event to the central authority, which 
in tun broadcasts that event to the shared simulation in the order that 
the event is received. The unique thing about Cobalt is that every 
simulator is running on the same virtual machine with 100% identical 
behavior at the ISA level and the "events" are standard Smalltalk OOP 
programming messages sent to the copy of each smalltalk object as though 
they were receiving messages directly from another object locally.

No event is recognized in any client-simulator until it is authorized by 
the central dispatcher, not even the client where the user chose to 
initiate an avatar movement can render it taking a step until the 
dispatcher broadcasts that event and it is received by each client. One 
upside is that only simple OOP messages are sent, often with less 
overhead per event than sending large amounts of state data. One 
downside is the requirement that ALL clients' simulators are running 
100% identical byte-code interpreters, along with a programming model 
that assumes that all objects are collaborative whiteboards (with some 
exception made for handling avatar actions I'm guesing) so the shared 
illusion of a SL life economy is virtually impossible, under anything 
resembling the current Croquet/Cobalt implementation.

http://opencroquet.org/index.php/Overview
http://opencroquet.org/images/e/ee/2005_Hedgehog_Architecture.pdf
http://opencroquet.org/index.php/Croquet_SDK


However, there is room for _ad hoc_ implementations of Teatime or 
Teatime-like services in a VWRAP metaverse. Consider the obvious 
use-case of a genuine in-world collaborative whiteboard that uses 
Croquet/Cobalt teatime (or something similar) as the collaborative 
networking architecture to share drawing commands between MoaP objects. 
People could subscribe as collaborators and indulge in 100% coordinated 
interactions in any level of sophistication, or they could subscribe as 
the audience and simply observer the interactions, perhaps via a 
broadcast read-only VNC session or a readonly teatime equivalent.

The interactions could range from simple drawing apps ala the flash/java 
based whiteboards you see on webpages, to more complicated setups like 
Kansas (written in Self)

 http://research.sun.com/ics/kansas.html

or Nebraska (a partial port to Squeak smalltalk) 

http://wiki.squeak.org/squeak/1356 

implemented on prims in-world or in proximity-sensative HUDs or even as 
some kind of ghostly physics simulation  where physics and other 
behavior is controlled by a different  setup than the normal central 
VRWAP server or as special physics/combat interactions governed by 
client-side simulations.

Squeak smalltalk was chosen for the implementation of Croquet for 
several reasons, including fast prototyping but also because it 
implements  100% identical VM behavior cross-platform (including 
floating point calculations) which is vital for maintaining totally 
coordinated shared simulations using distributed programming. It should 
be easily possible to use the Croquet/teatime/Cobalt island system to 
control simple objects (e.g. whiteboards and combat-physics simulators) 
using embedded squeak (suitably sandboxed to only generate safe 
messages) or in circumstances where 100% identical behavior is not 
needed, other languages and strategies could be used instead.

The demo project I'm working on would take an existing Cobalt world and 
render it on a prim using a simple modification of the Media plugin. 
This would allow for amusing things like teleconferencing between 
different virtual worlds. More practical scenarios would be to use a 
similar strategy to implement whiteboards ala Kansas/Nebraska, combat 
systems, shared line dancing, music collaboration, etc.

The pattern (assuming Squeak here, though you can do it with less 
precise coordination using other languages and systems):

SL client <=> media on a prim <=> [rendering/keyboard i/o to Cobalt 
world-client] <=> teatime/cobalt island dispatcher/event handler <=> 
[Cobalt world-client  interactions with rendering/keyboard i/o] <=> 
media on a prim <=> SL client


Put any kind of event handler/generator you like in the [ ], and you 
have, at least for those specific events, potentially 100% identical 
behavior even in a VWRAP metaverse.

Note that the SL client  would consume and generate events 
(images/keypresses/combat messages/etc) sent to the teatime system but 
that aside from these specific points of interaction, the slavish 
control of a Cobalt shared world woudn't be implemented, leaving the 
more liberal behavior of a VWRAP world intact. If a client doesn't get 
the message that a drawing was done, or that a dance step isn't to be 
initiated or that a physics simulation for ghosted prims hasn't changed 
their state, it only affects the specific view of that aspect of the 
shared simulation, not the entire simulator's.


Lawson