Safewords as an agreement between two role players

In the presentation that Ian Cheng and I did at Seven on Seven, we talked about the concept of building an icebreaker application for larger events where you may not know everyone in the room.

The concept is where each participant takes a picture of their face with their mobile device and then waits to be assigned another person so that they are paired together. Once paired, each participant is randomly assigned a role - one is a master and one is a slave. Their face is sent to the other person to look for and vice versa.

Randomly assigned roles creates an interesting dynamic - since nobody knows who is the master and who is the slave until they are paired, does it affect how they interact with the person that they meet when they match their face in the crowd? Once they meet and have this role assigned, does that affect how they agree on a safeword?

Entering the safeword is a mechanism for verifying that both players actually met and didn’t cheat (unless they knew each other from before and emailed or messaged each other the word to avoid actually speaking face to face).

You can watch our presentation (and the failed demo) to get an idea of the thought process.

During our testing and building of the prototype, we did manage to pair up with both role scenarios:

safeword = seafood

Creating a node module to handle queuing and pairing

I started thinking about generalizing the technical process of queuing and pairing players for any game. This is the scenario (and requirements) of what I envisioned:

  1. There must be at least 2 players minimum in the game
  2. You can have 2 to n number of players required in a game (so you can even have 3 or 4) considered the “limit”
  3. If you participate and there are not enough players in the system, then it returns with an error. If there are enough to meet the limit then a group is created and a pair key is generated for everyone to share.
  4. If someone cancels from the game, everyone is kicked out and has to start over in the queue
  5. If nobody responds in the queue after a certain time, they are removed from the queue. If the group sharing the pair key do not retrieve their pair key in a certain period of time, they are removed from the pairing (same as canceling)

Interested in checking out the code behind this work-in-progress? Feel free to take a look at node module level-kued or the Github repository for details on the API and implementation.