The Atomic Playboy and the Radiation Romeo

The button below will open a new browser window displaying the Flash interface for Atomic and Romeo (Version 16 with Preloader). You will find a page of introductory text, some instructions and then the interface where you can suggest a topic for conversation.

This version 16 uses the landscape layout, updates the heckler and end-of-conversation functions with an audio sign-off. All the features from previous versions remain - scroll bar control,custId variable allows me to better log and track conversations.

The chat-bots are hosted on the Pandorabots server under the Shared Service subscription. Please note, the terms of the Updated Policy Guidelines for Free Community Server state that the “Use of automated scripts to make your pandorabot talk to itself or another bot or script” is proscribed (Pandorabots 2011). This project is being developed with the agreement of the Pandorabots Inc management and we would like to acknowledge their support. ( Pandorabots )

Please leave a comment...

After you have had a play with Atomic and Romeo please use this link to leave a comment.
Maybe you could suggest a topic of conversation or a layout suggestion.
All suggestions gratefully received.

Sunday, October 7, 2012

The interface as 'actor'

In an earlier post I wrote about the writing process - the process I use to generate the dialogue in AIML for Atomic and Romeo. This post is about the interface and how it works as the interface plays a crucial role in the project. It supplies the timing of the dialogue, the ability to heckle Atomic, and controls to the length of each performance, even allowing the user to terminate a performance.

In this most recent version of the interface there are 1207 lines of code, including inactive comment lines that describe what a function or variable should be doing. There are sixteen functions that control all of the behaviours of the interface. Some of these functions are timers that control the display of text on the screen including a randomly selected set of end-of conversation sign-offs and a random selection of responses to heckles, including some that also act as end-of-conversation sign-offs.
  • The four core functions are: askAtomic, askRomeo, onAnswerLoad and onAnswerLoad01. The askAtomic function captures the user's text and sends it to the server. The onAnswerLoad function captures the reply from the server and fires the AskRomeo function sending the reply to Romeo. The onAnswerLoad01 then captures the reply from Romeo and fires the askAtomic function. In the earliest versions of the interface simply getting this to work in a consistent manner was the priority.
  • Getting the performance to end was the next development. A variable, simply called 'howMany', counts the number of interactions. When howMany is greater than 26 the onAnswer functions are disabled - stopping the performance.
  • The next step in the development was to allow the user to stop the performance. To do to this the interface has to be able to detect which character delivered the last line, otherwise, the sign-off would be both out of sequence and disconcerting. By tracking the current value of the  'howMany' variable it's possible to then test if it has an odd or even value. Atomic always has odd numbered lines - Romeo always has even numbered lines. This allows me to provide the lines in the appropriate order depending on the last speaker via a pair of timer functions.
  • Likewise, the heckle function depends on the interface knowing who is speaking. Further, the interface needs to remember the last line the character delivered so that after the heckle is dealt with the original conversation can continue. The are twelve possible 'anti-heckler' lines that Atomic can deliver - two of these replies trigger an extended reply that actually ends the performance.
All of these functions contribute to the role of the interface as an actor - as an agent within the larger structure of the project. The code, using the theatre metaphor, is akin to stage directions within a play script. It both defines the stage and, to a degree, controls the interactions of the characters. By defining the parameters of the stage it both enables and constrains action. Further, it programmatically allows for emergence - wrangling a suite of random elements to generate a performance. The code makes choices that are not absolute - in other circumstances it could have made other choices.

No comments: