Scenarios

David Gatenby
Chris Robbins
Du Ngoyen
Jeremi Sudol
Kristofer Schlachter
Mary Flanagan
Ken Perlin
Svetlana Stenchikova

David Gatenby


* collect treasured objects (call me polly-mael, ahab, and the white polly)
* catch other bots (pollyce.  bad pollys, bad pollys, whatchya gonna do...)
* run away from other players (polly-anna)
* jump over another player (tad-polly)
* play music on lighted floor grid (polly jean is not my lover)
  perhaps follow around a song bot to play prerecorded songs
  forcing the user to program the bot if they are to keep up
  with faster songs.

* herd flocking dum-bots
* eat flocking dum-bots
* conference rooms. team play, different roles, collaborate, solve puzzles
* imitate other bots behavior.  steal their behavior. internalize a model
of their behavior.

deviant social behavior:
* smoking in the boys room (polly dean)
* write graffiti on walls (spraypaintpolly, jet grind polly)

simple bot games:
* merlin
* 4 square


other notes:

let's assume that the polly world allows the user to
begin controlling the interaction of their bot with the
environment such that the bot starts as a user controlled
avatar (like an fps game) and matures to a bot whose actions are
sequences of user triggered commands/scripts and then to a fully
autonomous bot.

an interesting question seems to be what are the transitions
between interaction levels?  how does the user move from one
level to another?  should bots be able to interact with
bots of different _age_ levels?

as the user learns the environment, they teach the bot how
to interact in it.  the user is both child and parent.

they are a child as they learn to use/program the environment
more deftly.  they play parent as they develop their bot
from a baby who must be taken care of at every level, ie all
interaction must be controlled by the user, through to an
adult autonomous bot that can do its own bidding (and the user's)
in the environment it inhabits.


in the last meeting we spoke of bots as pets accompanying us
on a journey through the environment.  analogous to a dog run.
under the above model, the metaphor shifts to that of
rasing (and being) a child with all its incumbent developmental
cycles.


script test...

baby script: a macro recorded while user is keying in simple
navigation commands in real time. probably won't be played
back b/c the movements are time specific.
script window unnecessary.  perception done by user.

forward
forward
forward
forward
left
left
back
back
back
jump
jump


infant script: still realtime, but user is using loop/counter control
which means every movement isn't user controlled.  perhaps encoded in
simple keyboard commands, eg ctl^L-4-f.  still no script window. 
perception still performed by user.

loop 4 forward
loop 2 left
loop 3 back
loop 2 jump


preschool script: script probably needed.  perception by bot. 
(interesting that in this example the script is needed because a bot
perception is used.  if at all, at what level does bot perception
necessitate textual symbolic representation?  it seems easiest to express
this script using text.  is there a better graphical way?  certainly draw
pad gives us a method, but we probably need a graphical representation for
all perception verbs, which is potentially a huge task (do users have
enough access to create their own?).  also, how would the user access them
all?  a nice thing about language is that we are very good at using it to
store symbolic information compactly and retrieving it quickly.  this is a
big can of worms that i'm not sure i'm ready to tackle right this
moment....)

if i see objectX
  move to objectX

primary script: scripts and subscript needed.  user defined encapsulation,
looping, branching, perception.

find objectX (find calls other user canned procedures)


i'm just starting to think about possible issues and structures of this
world and haven't really hashed them out much.  as you can see,
my ideas are currently simple, incomplete, and sketchy.  i'm sending them
only as conversational fodder, not as solutions.  hopefully you guys
haven't already covered all these issues.  if so, ignore these notes....

Chris Robbins


Dear Ken,

Here is a Polly World scenario for discussion during tonight's class:

The basic scenario requires the cooperation of three Polly characters.  The child's Polly initially enters a rectangular "puzzle room".  There is an exit opposite the doorway he or she entered from. Running across the center of the room is a single wall with three doorways of different sizes.Thus any Polly who wants to leave through the opposite exit must pass through one of the center wall doorways.  There are two more A.I.* Pollys already in the room. One of them is bigger than the child's Polly and the other is smaller.  The goal is to get all three Pollys through the far exit.  However, the exit appears to be closed and cannot be simply pushed or pulled open.

Some exploration will reveal that when a Polly passes through any center wall doorway, in the direction of the exit, a door will immediately shut behind it preventing any other Pollys from using the same doorway. When a Polly pass through a doorway, in the direction away from the exit door, any closed center wall doors will be reopened (in essence resetting the puzzle).  Further analysis will reveal that the doorway sizes correspond to the Polly sizes such that a Polly can only pass through a doorway that is that Polly's size or larger.  Finally the exit door will open once all of the center wall doors have been shut. Thus the exit door can only be opened by coordinating the Pollys such that each one passes through the center wall doorway corresponding to that Polly's size.

While working on this scenario, I realized a necessity to allow "puzzle rooms" to dynamically adapt to different situations.  The basic version above assumes the child is exploring alone and thus two A.I. Pollys are already in the room. However, if the child is already exploring with another child's Polly, for example, then only one A.I. Polly would need to be in the room.  If there is a party of six Pollys exploring, then the room might have to have more doorways. If the Pollys were all the same size, some other attribute would need to be dynamically determined to force a  one-to-one Polly to doorway mapping.  

*Maybe the use of A.I. Pollys should be discarded if we want the child to realize more Pollys are need to solve the "puzzle room", prompting him or her to seek out fellow explorers.

Following the goal of an immediately rewarding environment, I believe this scenario will initially work well as  a point-and-click interactive puzzle.  To solve the puzzle without any code, the child can click the locations or objects that they want their Polly to move to. This will reveal the behavior of the doorways. The child can then can ask the other Polly characters to go through certain doorways to  solve the puzzle.  

Moving into a Java code based solution.  The child would use comparisons and if logic to automatically tell the other Pollys which doorway to go through.  For the three Polly situation this could be coded explicitly.  However a similar future room might contain an exhaustive number of Pollys and doorways, such that the child will realize the need to create a loop or method for sending Pollys through matching doorways.

Du Ngoyen

Scenario name is catch Polly,
 
In this first scenario, we are in a maze like room with an exit door.  Polly, a bot, tries to escape the room by getting out of the door.  However, Polly is afraid of Sally and will run away from Sally if she is too close.
Sally is controlled by the child's script and will try to catch Polly.
Catching is consisted of being close to Polly for a certain amount of time.
 
In the second scenario, we add a second exit door and three little bots.
These bots are controlled by messages sent from Sally (ie goto(door 1), move forward, turn right).
Sally needs two bots to block Polly from using a door, but in the maze corridors, all three are needed to block Polly.
After each sucessful catch, the bots are happy and move faster (up to a top speed)
After each escape by Polly, the bots are sad and move slower (up to a low speed)
 
 
The two scenarios can become harder and harder as we make Polly smarter.
 
 
 
 

Jeremi Sudol



I. Build a city.
   Users can "build/program" various spaces and navigational
mathods around a virtual city with varying degrees of complexity and
behaviours.

First one may start with building your character, or at least have lots of
flexibility in "dressing it up" as this will be one immediate method of
expression, and most directly noticeable. Then, using some predesigned
libraries, and a set of initial templates users can start creating
congregation spaces like a coffee shop, or a dance hall, and definitely
their own apartment. The spaces can have all sorts of properties defined
by the creators (including shaking floors, chaning lights, whatever
features are hooked up and integrated.  you can program a cook to make
food, but a waitress has to take orders and give them to the cook, and
then bring back the food to the right table.

Users will at some point have to write their own navigational protocols to
get around the city. Those could be great initial exercises for learning
procedural thinking, and introducing basic constructs like conditionals
and loops. " while ( currentStreet.crossStreet() != Broadway )
walkForward( 1 ) ; " . And so they can have a whole set of programs to get
to interesting places, and to their friends houses.  (there aren't really
physical limitations, since apartment buildings can have 10000's of
floors, and apartments can just be indexed by usernames.

Another dimension of this would revolve around information collection and
distribution. In virtual worlds interpersonal communication only has a
fraction of the bandwidth available in real life, so extra support for
this must be integrated. Users can write search bots, that can look for
particular types of people, programs they've written, and venues. but the
users have to write the search bots themselves. giving them some sorts of
navigational algorithms (which will also be provided as parts of
libraries. naturally in the beginning one can probably use just basic
"search").

This scenarios allows users to first be faced with programming basics, and
then go on in the directions of their liking, covering areas of character
bahaviours, graphics programming, systems architectures, and artificial
intelligence.

Ideas inspired by a combination of what I know about the sims, and the
book snowcrash.


II. I found this idea interesting until I read more of the project
proposal, and then found it a bit mismatched. Nonetheless for teaching
programming in general (especially to harness the benefits of automation
in an information age) i think writing search engine bots / internet
crawlers, may be a good idea. To an extent I thought about integrating
this concept into the city project, and I think it works well there, where
you need to navigate the information space with your own "antenae" . See
what you want in it.


III. Lots of cell phones right now can run light versions of java. Small
chunks of the program can be downloaded to the phone and portable. In
three years almost all cellphones will run some sort of user-accessible
programming platform.


Kristofer Schlachter


I am not sure whether you wanted us to send you a scenario or to
implement them.  So I am going to try to do both.

Follow the leader.
tag.
defend flag(tag someone before they get to a spot)

Pie in the sky stuff(for now):
Capture the flag(two teams, two territories, can only tag someone out
if they are in enemy terr., goal to bring other teams flag into your terr)

Mary Flanagan


here are some scenario ideas, deposit #1. These range from kooky to 
conservative - fodder for discussion is good, i think. what do you think 
of these? Tell me if they are too weird, I like to get weird at first in 
these things....

observation:  It's difficult to bring in the networked stuff into the 
game and teach the fundamentals without levelling or tiering the content 
into stages of learningb, so we should break down the tasks of learning 
in some kind of rough order for ANY scenario to adopt. Then there is the 
experiment we need to run about verbal-written procedural goo

________________
The player's character is an online polly- psychic pursued by those she 
did not end up helping out with her advice, but really her advice was 
correct, only a virus changed her electronically typed predictions and 
she was seen as a fraud. First she must go out in disguise to clear her 
name, then she must learn to move so she can escape her pursuers. Third, 
she must learn how to affect other objects' behaviors in order to 
restore her psychic abilities. Other players playing other psychics are 
in the space, affecting the materials there (I just moved the lamp, but 
Kelly_002 moved it back...) so there needs to be strategy on where other 
players are at in the game and what they want to move/take/create when....
________________
Your character is the twin sister/brother of another character and wakes 
up to discover s/he has amnesia. The player must help the polly mimic 
the behaviors of the twin to learn how to move, etc. The twin changes 
color, moves, wiggles, and even interacts with objects. (This would 
provide an example code base to look at too). As soon as the player's 
character is following along well, the twins begin to annoy each other, 
prompting your character to do just the opposite of whatever her twin 
does. Then as players netowork with each other, they could do small 
competitive playground style games (4 square??) but this seems like a 
good idea for a younger audience...
________________
Ghastly Arcade
Your character blurts out the most ridiculous things. These odd 
statements turn into objects on the screen, which are communicating with 
each other through gossipy-heads onscreen. These heads begin to network 
and form a web. Eventually the heads form structures like gates and 
buildings. All the while the player must guide the character to change 
the structures and break out of the web, and also figure out how to 
rework what the character is saying dynamically by decoding the speech 
pattern and recoding them to be helpful statements etc

Other subject-scenarios not yet thought out:
Players play a female mystery solver (aka Buffy) and we help them find 
clues; players could choose to make a vampire killer or a vampire, and 
each would have particular progrmmable attributes.
You have a blind pet and have to first get it to its food dish, then 
program it to think for itself, go outside, etc
________________

Ken Perlin

This is really a suggestion for a structural shift in our way of thinking, rather than just a scenerio per se. It arises out of conversations that Mary Flanagan and I were having last week, sometime after the last group meeting.

Rather than looking at this entire effort as a form of literacy, perhaps we should be looking at it as an extension of speech. When exposed to spoken language, almost all small children spontaneously develop the ability to understand and generate natural language speech, without any deliberate training being required. In contrast, almost all children require special instruction to acquire facility in reading and writing.

Note how extraordinary this situation is: the far more complex task (learning the intricate and varied semantics of a natural language) requires no training, whereas the far simpler problem (learning a fairly small set of abstract glyphs that encodes this same language, which has already been learned) does require training.

As developmental psychologists already know, the ability to learn the former is wired into us, whereas the ability to learn the latter is not.

So... why don't we try to create an environment in which very young children learn programming as part of their verbal natural language skills? Suppose, for example, that the child finds herself in an environment consisting of both people and robots. The robots are both pets and servants; they will do what she says, but they are very literal minded.

For example, the child can say to the robopet "Take a pail, and circle around the house up to three times, until you find my toy shovel. If you find the shovel, put it in the pail, come in the house, and put the shovel in my toy box. Then find me and give me a hug."

It might also be interesting to come up with a very literal iconic-blocks language, which the child can use to help program the robot. Incidentally, sign language was used in 1967 to teach Washoe the chimpanzee and other chimpanzees to speak; they were able to attain a vocabulary of about 240 words, and could create simple original grammatical sentences. Similarly, Dr. Emily Sue Savage-Rumbaugh has been teaching human language to chimpanzees for about 30 years, in a set of experiments in which the chimpanzee types sequences of keys to "speak"; each key on the keyboard shows a pictorial icon.

Initially, we can implement this using "Wizard of Oz" methods (as they are called in the Human/Computer Interfaces research community). Rather than implementing the robot in its entirety, we initially replace the back end (the part that parses speech and maps it to actions) with a human, who remains hidden from the child. This human acts as a smart compiler, translating the child's program into the restricted set of semantics that a computer program might plausibly execute.

Presumably, the human who is simulating the computer sits in front of a screen containing a small number of buttons to click on, representing this restricted semantics. This ensures that there is no "cheating," which is important if we really expect to eventually replace the human in the loop by software.

Svetlana Stenchikova

Dining Room Scenario:

The screen shows a room with tables, chairs and a menu on the wall. This is a dining room. In the corner of the room there is a refrigerator which represents a kitchen. It contains pictures of food ingredients.

The task of the programmer is to add and remove items on the menu. The items on the menu are combinations of the items available in the refrigerator. Adding a menu item may involve dragging the items from the refrigerator or writing a script, for example, if it is the morning, serve coffee and eggs, and if it is the evening serve wine and cheese.

Another programmers' task is to script the servant with the set of actions on an "order meal" event.

Bot pollys (or other characters) come in to the room and sit at the table. They order items from the menu (randomly or according to some preference preset for a particular character). The servant gets items from the refrigerator and serves the meal. The eaters may show emotions of like or dislike of the meal.

Items in the refrigerator are limited and when they run out, the programmer can order the items from the store.

The scenario may be made more complex by adding the use of money into the picture, and potentially making the user run a virtual business.