Rock, Paper, Awesome goes live!

Yesterday we successfully completed the first test run of Rock, Paper, Awesome! (RPA), extending the Sail Smart Space framework into the realm of spatial, tangible, and distributed interactions.

The Run

We set up two “stations” at OISE, one on the 3rd floor and one on the 11th floor. Players challenged each other to a game of rock, paper, scissors (see the video below).

Each location had different affordances for tangible, audible, and visual awareness to give the players sensorially unique experiences that conveyed the same message. At the third floor location, a “servo motor” swung a dial to let the player know a challenger was waiting to play. At the eleventh floor location, an LED flashed to convey the challenge. We have tested other designs (not shown here) that used proximity sensors to detect where players were within a room, using their location to trigger an event (such as choosing rock). In another instance, a light sensor conveyed one player’s availability to other players (in remote locations) when the lights in the original player’s room were on.

The Theory

To us, RPA is more than just a game of rock, paper, scissors; it is an avenue for us to begin investigating novel ways for users to interact with the world, and for connecting these investigations within a broader knowledge community. We aim to not only connect these communities, but also to add a layer of user-contributed design to their interactions, where community members engage in creative fabrication and exchange of tangible, interactive media that reflect their ideas, workflow or presence, bridging the distances and connecting the community.

Moving forward, there are some critical questions that are guiding our research into these new spaces:

  • How can we bring such communities more closely together?
  • What are the possible roles for tangible and physical computing, and ambient or interactive media that are deeply connected to the semantics, workflow, physical presence, ideas, activities, and interests of the distributed communities?

We are currently sending out kits, first versions of the code, and design docs to labs at the Learning Technologies Group at the University of Chicago, and Intermedia at the University of Oslo. We are excited to see how they develop and contribute new interactive designs that represent their own representations of space and meaning within the game.
[vslider name=’vslider_options’]

The Technology

The physical interactions and ambient feedback is handled by an Arduino microcontroller. The Arduino allows users to develop a wide array of inputs (e.g. proximity, light, and sound sensors, buttons and levers), and outputs (e.g. sound, light, movement).

Using the S3 framework, RPA facilitates the different game “events” (e.g. joining the game, choosing Rock) by sending messages over an XMPP chatroom (conference). We originally attempted to implement these messages over the XMPP server only using the Arduino  – however, given the relatively limited amount of RAM on the Arduino board (2KB) this turned out to be overly restrictive and we started looking at other solutions.

As a solution to this issue, we ended up making a simplified set of event messages (single text characters) that were sent over the Arduino’s serial port to a connected computer. For testing purposes we used a laptop; however, in permanent installations, we envision RPA having a more compact and flexible setup. In order to achieve this, we connected the Arduino board to a Raspberry Pi. The benefits of the Raspberry Pi is that it is small and cheap, allowing us to dedicate a Pi for each game installation, and to have the “brains” of RPA be as unobtrusive as possible.

In order to connect the various RPA installations we use node.js as an intermediary between the XMPP chatroom and RaspberryPI. Messages that are posted to the XMPP chatroom are picked up by the node.js server and sent over serial port to the Arduino, which then executes the user-designed action, such as turning on a light or playing a chime. Respectively, any event trigger on the Arduino (e.g. a button is pressed), is sent over the serial port to node.js and translated into a XMPP message.

Sample Arduino code for RPA and the node.js setup code can all be freely downloaded, tinkered with and customized from github.

Cross-posted from

Leave a Reply

Your email address will not be published. Required fields are marked *