Backchatter at Freeplay

Freeplay was amazing! There was this crazy “I love Indie” vibe and the keynotes really stretched the concept games and gaming.

I ran Backchatter at Freeplay. It was made and open sourced by the awesome Local No. 12. Backchatter is a Twitter game about picking buzz words, with the twist that if you pick buzz words that not many other people pick, you’ll get more points.

How did it go? Although there were (I’m guessing) around 300-400 people at the conference, most people weren’t tweeting. 38 people signed up to take part, which I think was around the number of active tweeters. Most of those people played it once or twice. There was a steep drop-off, on the final day there were about 6 people who where entering every round and really competing for the win.

Although Backchatter was announced at the start of the conference, instructions were included in the programme and I tweeted fairly regularly about it, I think I needed to get up and explain the rules. Some people didn’t know that words rolled over or didn’t understand how to enter words. It doesn’t matter how simple your game is, players will need some hand holding. This is my experience in making augmented reality games as well. In a game that takes place in the real world you don’t have people’s undivided attention or high-bandwidth communication. Ideally your game should need no instructions at all. If you’re running Backchatter make sure that you’re monitoring the direct messages to the game twitter account for errors. Keep sending out twitter updates with hints on how to play.

What I really want to know is, was it fun? There was no talk on the #freeplay10 tweet stream about Backchatter itself, and not a huge amount of players actively playing. But I did hear people talking about it around the conference. I really wished for more involvement. My motivation for running games at a conference is to add a new layer of involvement to the conference, to cut across social cliques and make the whole experience more fun and rewarding. Backchatter fulfilled some of that, but only for a handful of Twitter users. The next step for me is to take to the audience non-obtrusive, opt-in games that try to meet these goals. Technology and the virtual world will be used a tool, not the platform.

It was interesting that there were some vocal Twitter scoffers in the audience. Some people really reacted to the platform this game was delivered on. It seems they feel Twitter attacks the value of friendship and all it’s users are vainglorious. People should carefully consider which technology they take on, but don’t confuse the medium with the game. Oh, and hecklers suck.

If anyone else is taking on the challenge of running Backchatter, feel free to contact me.

Setting up Backchatter

During GDC10, Local No. 12 ran a game called Backchatter. It’s a game that rewards players who pick unique words that appear in tweets with a certain hashtag.

Local No. 12 were generous enough to open-source Backchatter. So I decided to run it during Freeplay, a Melbourne Independent Games festival. Although Backchatter is fairly well put together there is absolutely no documentation, so I’d thought I’d share my experience for the benefit of future Backchatterers. First up is a technical run down up getting your first game up a running. This is not a definitive guide or a step-by-step manual, it’s intended to give some clues and a head start to people who want to give this a go. You should have a good knowledge of Django and Python to get this running.

Code Notes

- A session is a round, they’re used interchangeably.

Pre-requisites

- python-twitter: Install this using easy_install or pip.

- nltk: Install nltk using easy_install or pip. Then get into a python shell “import nltk; nltk.download()” and download the “stopwords” corpus.

Setup and Customisation

- In settings.py you’ll have to enter in the details of the twitter account you’re using in the TWITTER_USER and TWITTER_PASS variables.

- I found I had to comment out lines 47 and 48 in take_bets.py. “thanks” and “thanks” don’t seem to be in the stopword corpus.

- Backchatter is full of hardcoded strings and times. Change line 35 in take_bets.py to send out the correct start time. I used: “…Betting starts at %s" % (game.start+timedelta(hours=10)).strftime("%H:%M EST %d/%m/%y")

- In write_schedule.py you’ll need to adjust the year, month and start_day variables to suit. Also change the time zone to your local time zone.

- Find and replace all instances of #GDC and #GDC10. These are mainly in take_bets.py and the web page templates.

- send_updates.py will throw an exception if any twitter updates fail. Any they fail fairly often. This stops all other updates being sent out. I caught all HTTPErrors like this:

try:
    api.PostUpdate(update.template % tuple(leader_names))
except urllib2.HTTPError, e:
   print e, e.read()
   continue

You should check the log regularly for errors.

- Make a CACHE_TIME variable in views.py, replace hard coded times in cache_page calls and reduce the cache time for testing. There is no point in having cron more often then you cache expiry time.

- Adjust the terms and hashtags in main/fixtures/initial_data.yaml.

Management Commands

Backchatter relies heavily on Django’s manage.py commands. Here is a run down:

write_schedule: This is a helper to generate YAML formatted sessions and updates.

Make sure you’ve adjusted all the times, dates and time zones in wrte_schedule.py before you begin. Then enter in at least two sessions (a bug will screw you around if you only have one). Then enter ‘n’ when prompted whether to proceed.

Ignore the stack trace and copy the YAML data into main/fixtures/initial_data.yaml. Adjust the start and end times of the game data, which is just above the session data. The game should start before the first sessions to give players time to join and bet.

fix_round: This seems to be obsolete.

send_updates: This sends out tweets to followers that contain instruction on how to play, words picked and to announce winners.

take_bets: Parses DM tot he games twitter account for words registered by players.

tally_session: Adds up scores for all players.

scrape: Searches Twitter for tweets with the appropriate hashtags and keeps track of which words were used.

Running a Game

Setup a cron job that runs scape, take_bets, tally_session and send_updates. I’m ran this every 5 minutes.

Create a schedule using write_schedule, then create your database. “manage.py flush” is a useful command to wipe you database and start again. Otherwise run “manage.py syncdb”. I turned off the admin app to make this step quicker.

Make sure you run “manage.py createcachetable cache” for the web page caching.

Run or restart your web server and hopefully you be able to play Backchatter. Good luck!

10 Reasons to Love Go

1. Mythology: Go is a game with a great back story. There are many myths and legends surrounding Go, including how it all started almost 4000 years ago. It even gets a mention from Confucius. You can read some more.

Goban

2. Proverbs: In the sound of the stone your can hear its purpose.” I love the obscure proverbs that require many, many long essays to be written over many, many centuries.

3. Easy to learn/hard to master: You learn the game by following a five minute tutorial and suck at it for the rest of you life.

4. Additive: Go is a breath of fresh air after coming from combative games where you start with a full board and pick off pieces. If Chess is boxing, Go is wrestling.

5. Atari: It is where the word Atari comes from.

6. The board: With that much history, you want to play Go on a decent board(goban) (not that I ever have.). It should made from 500 year old timber and made to be slightly rectangular so that it looks perfectly square from the foreshorten perspective of the player.

7. Beautiful results: A competitive game can produce beautiful results.

8. Ends only when both players agree: You have own your defeat. Rather then being forced out by the rules, you need to both agree that you lost.

9. Can’t be cracked by PC: Here’s an escape from the rise of the machines. When computers run our lives and harvest us for energy, at least we’ll still be able to beat them at Go.

10. Easy to spell: Og is two letters, impossible to get wrong.

Get more info on Wikipedia or the Sensei’s Library.

Gnome Roam Concept Art

We’re working on a game with the working title “Gnome Roam”. More details to come. In the meantime, here’s some concept art from the excellent Caspar.

Wishing for AR Gaming Fidelity

I and others are shocked when we first realise that Layar has no animation, control over lighting, movement and other basic needs of 3D gaming. One response I heard from GDC is that AR gaming will only become interesting when animation arrives.

Gaming fidelity is a dead end. What will fundamentally change about augmented reality gaming when animation arrives? Your ability to badly recreate current games in the real world? Remember the awkward camera and movement controls on the first 2D games franchises that moved to 3D. The first games that are copied to AR gaming will be just as awkward.

Often technology takes an apparent step backwards to achieve other things. Who would have thought that in the future we’d communicate by typing short messages on tiny screens. Do you remember reading this article 1998 Wired article about Kevin Warwick planning remote communication of emotions through an implant? We were excited and scared. 20 years later Twitter uses an 140 character limit. We missed the point on how and why we communicate.

AR gaming gives us interaction with the real world, games that flow in and out of your life as you move around spatially. I’d love to be able to animate, but it’s not a roadblock. I don’t miss shaders or cinematic effects. I’m getting more inspired by old parlour games then the newest console games. Wink murder is more relevant here then Modern Warfare 2.

What is going to have the biggest impact on AR gaming is location data not graphics. Right now we have access to geo-tagged:
- Tweets
- Wikipedia articles
- Flickr
- Your own photos.
and much more (please ping me with more ideas).

And the future is trending toward spimes. Everything having a location and ability is communicate.

So some ideas we’re working on are games that have a vocabulary of local objects. Those objects are the words and pictures you use to communicate, that’s it. And of course as you play you add more data into the mix. You can put game structures on this, rules and constraints, stories and rewards.

People don’t want to type on a phone, so the interaction is construction by pointing and dragging using these local building blocks. This give variation and applicability. You’re more engaged with what’s around you and the game is different everywhere you take it. Then you can pass it on and someone, somewhere else gets a taste of your spot and the story you construct from it.

This is fairly abstract, but I’m discussing intent. The actual games that come out of this will be silly and fun. But they’ll use the data and the location and not wish after animation, real time interactions and all the other things that we see games as being. It’s not about gaming fidelity.

Common reactions to Layar gaming

I’ve been talking to lots of people about Layar gaming. It’s made me realise that I need to do a much better job of explaining the basic concepts, this all takes a long time to sink in and it’s going to take a lot longer to come up with good designs.

As I’ve been talking with people I often see my first thoughts repeated back at me. There are definitely common themes and they come in a definite order.

Here they are:
1. Cool. I’ve been following this AR stuff, this is awesome.

2. This is so crap. I saw guys with googles shooting at stuff. What do you mean I can’t even move things around?

3. Treasure hunt. This would be perfect for getting everyone together and following clues around the city.

4. Strategy game. We could have bases and block off streets and have resources and …

I probably will make a treasure hunt and a strategy game, it would be loads of fun. But they miss some out on some other elements of AR gaming.

1. The environment is the communication medium. Players will not be checking web pages or sending SMSes. They will contribute to marking up and changing their environment. This is how they talk to each other, it needs to be part of the game design. This could be growing flowers, leaving messages on billboards, taking over a base, anything. Layar is your shared window into the alternate reality, it should show something special, surprising and human generated.

4. There is already stuff in the world. Most AR game designs so far have started off with a blank canvas. They require large open spaces so items don’t end up in the middle of a building. I can’t wait for a design that at least uses street data.

5. There is already stuff in the virtual world. Geo-tagged tweets, Flickr photos, art galleries, NYC BigApps, Victoria’s AppMyState. Lots of goodness to got here. Flickr images could be applied to game objects, etc. I’ve already talked about this in my previous post.

4. Play will probably be asynchronous. It’s unlikely to get a large number of people at the same place at the same time. This is flaw of the simple treasure hunt idea. People will be in different time zones, playing at different times. The chances of meeting someone in a 5 min play window is fairly low, especially in these early stages.

5. It should be simple. These are mobile devices, play will be short and has to be easy. How would you do a tutorial? No easily. This is the flaw of strategy games, unless your a gamer you’ll probably need some help. My first ideas were wildly complicated, I wanted to stretch the boundaries.

I’m still looking for the game idea that uses all these things. Until then I’ll be making simple games that use one or two of these features while I slowly figure this thing out.

Raph Koster’s post, “Are virtual worlds over?” has lots of pertinent points about how game play styles are changing.

Stay tuned for some gentle introductions to Layar and AR gaming.

Layar Games – Constraints and Possibilities

Introduction

Jewel Collector

Jewel Collector

I’ve been working on a game called Jewel Collector using the Layar platform. The central mechanic is around finding and collecting jewels inside a certain area.

Layar demoed the game at World Mobile Congress and I got a great response. People can see the possibilities of real world games.

Making this game has taught me some of the basic constraints of the Layar platform and made me realize that this is a very different and exciting gaming platform. We’re going to need some fresh game design ideas and experience to take advantage of it.

Here are some of the constraints and opportunities that I see. I’d love to hear your ideas and feedback.

Background

There is good information on the Layar dev site on the techincal details of Layar.

Here is a brief overview:

  • The Layar browser periodically sends a request to your web server for a list of objects in the world. Your game returns a list of the objects.
  • Objects can be simple markers, textures or 3D objects.
  • Each object can have a set of triggers associated with it.
  • Triggers can be fired automatically, when the user is close to the objects, or manually by selecting the object.
  • Triggers can send SMSes, send emails, play audio and video or go to a web page.

Some Ground Rules

Because of this set up there are few things you can’t do. I know Layar are working hard to add more features to the client. These are not show stoppers, there are plenty of old game mechanics that can still be used and a whole bunch of new ones to discover.

1. Objects must be stationary and static

The browser asks you for the objects, there is no way to push out objects to the browser. So you can’t update the positions of objects over time. Although an action can force the browser to re-get all the objects. That’s how I hide jewels in Jewel Collector.

You can’t easily swap in new models, you can’t animate.

That rules out Pacman.

2. You don’t know where the user is most of the time.

Your game will only know the users lat/lon when the browser asks for the game objects. Besides this, when the user is walking around you have no idea where they are.

That makes it hard to chase someone. Interactions are going to have to be through game objects.

3. You don’t know which way the user is facing or how they are holding the phone.

No compass or accelerometer or compass data is sent to your game at any time. So, no shooting games by pointing the phone or using gestures as a game mechanic.

4. Actions are opt-in.

You can’t force the user to accept an action, by default they are prompted whether they want to allow the action or not.

That lets the player avoid all the nasty stuff. You can’t force the user to run over that bomb. But players will trigger actions that help them. They can throw the bomb at someone else.

5. No browser customization

I really want to add menu items that are always available to the user. I want to send a screen shot to my web service. I want a “share this” button. Can’t be done … yet.

Some Possibilities

So, what does games on Layar give you? It’s going to take time to answer this one. The first game everyone first thinks of, including me, is a treasure hunt. That’s fun but what is else is possible?

1. Social Games

A large part of the fun of gaming is sharing the experience with your friends. Obviously Facebook have made this a speciality, and FourSquare have successfully laid a fun game on top of reality.

AR games can take advantage of social gaming in a number of ways. Here are a few ideas:

  • Twittering and Facebooking your games experience.
  • Getting your geotagged photos and tweets and making them part of the game.
  • Relating through the environment. A player might leave you a present on the train station or fill someones office with personalized items.

2. Data Sets

AR gaming and mash-ups could be, well, mashed-up. Grab a dataset and make it a game.

Grab things from Google map layers make them 3D, make them into boundaries, make them collectible.

Even better, mess with a dataset you can feedback into. Twittering zork style, so the commands you send alter the world around you.

3. Markup the World

A Layar game is a view on the player shared reality. It’s waiting to be marked up.

You could divide the main streets of your cities into plots and let people garden. Planting seeds and watching them grow every day, protecting them from pests and watering them.

A giant billboard could be used as the place people leave messages for each other. They could draw and decorate, creating something beautiful.

4. World wide games

This about location, but it doesn’t mean we have to be in the same place. Layar could be a platform for Risk or Diplomacy style world domination games. You can leave things for friends around the world, living in different time zones.

5. Enhancing using the web.

Games can visualized using mapping tools and coordinated using web-sites. This access to people without the required phones and to spectators. One player could be placing objects using a web site, hoping to trap another player traveling to work.

Conclusion

This is still very early stages for AR gaming. It is going to take a number of games to explore the possibilities. I’m on the hunt for game designers and artists to explore this field with me. Please contact me if you’re interested.