Re: Multiviews?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: Multiviews?

David Faught
On 11/2/06, Howard Stearns <[hidden email]> wrote:

> >> I am working on a new design that allows multiple separate islands to be
> >> coordinates by a viewing window (an "interactor"). The common stuff is
> >> viewed by everyone as they join the island. A different set of content
> >> to be superimposed is in a different island. The interactor renders
> >> both islands, coordinating the local execution of the two island clocks.
> >> Finally, one can drive through the interactor so that it's sort of
> >> pasted to your camera lens rather than fixed in island-space, such that
> >> you don't need to stand to the side to see both worlds, but rather can
> >> walk around and interact with both. Security is achieved through the
> >> interactors. You only give out the interactors to those whom you want to
> >> have access. (And the interactors might be non-assignable, revocable,
> >> etc.)
> >
> This interactor is a general viewing mechanism -- a generalization of
> TPortal. They stack, just like TPortal does. The toplevel applicaton
> window is really just an interactor that's stuck on your camera lens (no
> TWindow frame).
>
> You can have any number of TPortals to an island, and they can be on the
> island itself. (For a while there was a little bug that prevented this.)
> Interactors are no different. So I don't think it is any more
> complicated to use than TPortals now.

The basic idea of the interactor is interesting to me.  I read the
"Filters and Tasks in Croquet" paper a few times, as well as the
earlier referenced papers on Magic Lenses.  I like the idea of the
interactor getting "pasted onto your camera lens" and allowing
stacking of interactors.  Particularly for developers, I could see
using a series of interactors like the wire-frame view, the
boundSphere view, the little arrows representing normals view, etc.  I
can easily visualize how these could be used individually and stacked.
 Maybe 3D painter or mesh deformer interactors could be built.

But I don't really understand how this idea is brought out in Croquet.
 I have the general impression that David A. Smith is doing further
work in this area that will eventually dramatically change things.  On
the other hand, you tell me that you have already done this in
Dormouse and I know that Mark McCahill and team have done some of this
in Hedgehog with thumbtack annotation.  This is an area that I would
like to someday explore further, but what should I use as a starting
point?  Or is the real starting point just not ready for public use
yet?

Somewhat related to your two-island security model, I have been
thinking about how to implement a simple example collaborative Texas
Hold'Em poker game.  The cards have to exist in a replicated island in
order to be dealt from a common deck and for scoring, but different
participants have different rights with respect to viewing the cards
and these rights may change at different points in the game. And the
chips can be viewed by all participants, but only manipulated by their
owner or the dealer.  This is so far just an idea floating around in
the back of my mind, but it seems like a good and fairly simple
example to explore the whole area of security in Croquet.

And as a meaningless parting shot, why is it "putting in my two cents"
but only "a penny for your thoughts?"  I definitely value your input
more than mine!

Reply | Threaded
Open this post in threaded view
|

Re: Multiviews?

Howard Stearns


David Faught wrote:

> ... But I don't really understand how this idea is brought out in  
> Croquet.
> I have the general impression that David A. Smith is doing further
> work in this area that will eventually dramatically change things.  On
> the other hand, you tell me that you have already done this in
> Dormouse and I know that Mark McCahill and team have done some of this
> in Hedgehog with thumbtack annotation.  This is an area that I would
> like to someday explore further, but what should I use as a starting
> point?  Or is the real starting point just not ready for public use
> yet?

It's anybody's game. This is all open experimental work. I like David  
Reed's description of the project as "invention in public."

The Dormouse interactors (and I imagine, the first Wicket and  
Thumbtack interactors) used a filter implementation. As the rendering  
descends through nested interactor/fiters, it adds each interactor/
filter to a collection. When the object renders, it does so  
conditionally on whether  the governing filter that it knows about  
appears in the collection.

In Dormouse we treated this as means of getting the EFFECT we wanted  
so that we could see what it would be like to work with. You can do  
the same if you like. (And I imagine that the existing public  
thumbtack code is suitable for that.) However, it doesn't really  
handle your poker example if players are allowed access to their  
Squeak environment.

Depending on your purpose, a valid way to deliver your poker example  
is to seal up the Squeak environment somehow. I'm not exploring that  
just out of my interests, but it can still be a reasonable thing to  
look at.

> Somewhat related to your two-island security model, I have been
> thinking about how to implement a simple example collaborative Texas
> Hold'Em poker game.  The cards have to exist in a replicated island in
> order to be dealt from a common deck and for scoring, but different
> participants have different rights with respect to viewing the cards
> and these rights may change at different points in the game. And the
> chips can be viewed by all participants, but only manipulated by their
> owner or the dealer.  This is so far just an idea floating around in
> the back of my mind, but it seems like a good and fairly simple
> example to explore the whole area of security in Croquet.

I like this example!  Depending on your purpose, it might not make  
sense to do this purely within the model. But it's a nice exercise to  
see how that might work.  By the way, this has been reviewed by,...  
well, you're the first, actually.

IF my dual-postcard interactor pans out (a very big "if"), then the  
idea would be that the players enter a parlor to play. Each player  
has an avatar that wears sunglasses and green eye-shades. The players  
optionally communicate by text chat,  live voice, and video. The  
cards appear as ordinary objects that can be moved around, but the  
face of each card is blank.  However, as each card is dealt, the  
person to whom it is dealt sees the real face of the card. (If you  
prefer, maybe they have to wave their mouse over it or something.)  
When called, the players turn over their cards and the faces appear  
to everyone.

An experienced visitor to the parlor might know that the visors they  
wear are what allows them to privately see the cards dealt to them.  
A player can copy his visor and give it to someone else (presumably  
not one of the other players!) so that their friend on another  
computer can see these cards, too. A spectator could even get visors  
from each player who gives a copy.

How it's done:

The parlor is an island like any that you think of in Croquet now.  
Each player's visor is unique. It has a normal postcard to the  
parlor, but each has a second overlay or UI postcard to a unique per-
player island. The players are automically made to wear the visor as  
they pass through the portal to enter the parlor.

The "house" also maintains another island that the player do not have  
access to. For each hand, the house generates a set of shadow card  
objects -- on the house island -- which point to the real cards. The  
house can make another set of shadow cards from the first set, and  
then copy these cards into the parlor.  The parlor shadow cards are  
the ones that are shuffled and manipulated in the parlor space, and  
dealt. Thus the parlor shadow cards have postcards to the house  
shadow cards, and all of this is specific to this hand. Squeaker's  
can't see which card the parlor shadow cards point to, because at  
best they can only see the postcard data, and the interpretation of  
that postcard is unique to that hand.

As each card is dealt, the house copies the face of the real card to  
the shadow view of the card that appears in that player's private  
island.  That player sees the face of the card, while everyone else  
sees the back. When the players turn over their cards at the end, the  
house copies (only) those card faces to the parlor.