1

Ninety seconds. That’s how long each team at Hackday had to present the fruits of their labours. That’s a pretty good timeframe to demonstrate the core functionality of an app but it’s nowhere near long enough to explain the background story behind Hackfight.

I was the third presenter (out of a total of 73). I knew I had to try to make every one of those ninety seconds count. At the moment that Chad Dickerson introduced me and the spotlight was cast upon my frame, I went into Simon Willison mode and began to stream out as much information as the bandwidth of the human voice allows.

“Hackfight is a mashup” I began, “but it’s a mashup of ideas: the ideas of Justin Hall with his talk of browsing as a kind of role-playing game and Gavin Bell with his ideas on provenance—your online history forming a picture of who you are.”

I was standing on stage in Alexandra Palace trying to give an elevator pitch of an idea that had been brewing in my head for quite some time.

I’m working on this idea of passively multiplayer online games. Watching you surf the Web and giving you xp for using your computer. You might be as high level as Joi but just by doing what you’re doing… My model for this was looking at a D&D character sheet, which proposes to know a lot about people.

Something clicked. This idea really resonated with me but I wanted to tie it into a person’s long-term publishing history—their provenance, in other words. I started thinking about how this might work. I would definitely need some help. Then Hackday London was announced.

My recruitment drive began well before the day itself. I spoke to people at both @medias. Matt Harris—no stranger to the mechanics of role-playing games—expressed his interest. I noticed that Gareth was in search of a project for Hackday so I baggsied his brain. I even managed to turn my presentation at Reboot into a rallying cry for hackers. Riccardo and Colin were both there and added their names to the list of interested parties. Finally, I wrote a blog post right before Hackday to let everyone know that I was looking for help.

On the day itself—once the excitement of the lightning strike had worn off—I began quizzing my friends to find out who had plans and who didn’t. Ben and Natalie were both amenable to getting stuck in. An unsuspecting Paul Duncan was also roped in. I hopped on stage and put out one final call for help.

Planning

I had plenty of people. Now I needed to make sure they could work in managable teams. I divided the work into front-end and back-end projects, appointing Nat as head of front end and Gareth as delegator for the back end.

Before a line of code was written, we made plenty of use of the available whiteboards. We began brainstorming all the possible APIs we could potentially use. At this stage we were already thinking in terms of characteristics: how social you are, how many photos you take, how much you blog, how much you bookmark.

The long list of APIs was quickly whittled down to a managable number. The terminology was updated to be more game-like. Here’s what we had:

Charisma

Your social networking power based on Twitter. It’s not as simple as just how many contacts you have: your followers must equal or exceed your claimed friends to get a good score.

Perception

Your power of observing the world around you as decided by Flickr. The Flickr API reveals how long you’ve been posting photos and how many you’ve posted in total. From there it’s a short step to establishing an average number of photos per day.

Memory

Your power of cataloguing the world around you as revealed through del.icio.us.

Willpower

How much influence you can exert over others. This is gleaned from Technorati’s ranking algorithm.

Testing

Assuming we could generate a number for each of these characteristics, how should gameplay proceed? Should it be as simple as Top Trumps or as complex as World of Warcraft? It was Jim Purbrick who pointed out that we were closest to having beat-em-up game mechanics.

Now we needed to consider fairness. How would we deal with the uebergeek who has been blogging, Flickring and social networking for years? This was quickly christened “The Tantek Scenario.” Needless to say, I blame Tantek.

By giving each player a pool of points that always adds up to the same total, we could level the playing field. We chose the number 20 for the total points. This could then be split four ways amongst charisma, perception, memory and willpower. So even if you were superb in all four categories, you could only have a total of 5 points in each. Most people will have a high score in one or two categories and a correspondingly low score in others.

Gameplay proceeded like Top Trumps but with a difference: if you are attacked in one category (say, charisma), you can defend with another category (such as memory). But you can only ever use a category once. So one fight is exactly four rounds of attack and defence. At the beginning of each fight each player has 10 health points. If a player successfully attacks, the amount of health points deducted from the other player is the difference in category points. So if I attack with a willpower of 8 and you defend with a memory of 6, you lose 2 health points.

Phew! The game mechanics were starting to get complex. Would people be able to understand the gameplay? There’s only one way to find out: user testing!

I mercilessly pounced on unsuspecting passers-by like Andy and Aral and thrust sticky notes into their hands. We then played a round using these paper prototypes. We tested a slightly more complex version of the gameplay involving the ability to bet high or low but the user-testing revealed that this was probably too complex to be easily grasped.

Building

Alright. Enough planning. Enough user testing. The clock was ticking. It was time for the front-end team to start working on the design and the back-end team to get coding.

As day one drew to a close, our numbers lessened. Riccardo and Paul headed for home (or in Paul’s case, the pub and then home). But I still had two incredible teams of ludicrously dedicated people. These are the people who would build what we were now calling Hackfight.

Back end

Front end

Watching these people work through the night was a humbling experience. It quickly became clear that my programming skills weren’t nearly up to scratch. I helped out a bit with some Flickr API stuff but I mostly just left the lads to it. I even snatched one or two hours of sleep. Colin and Natalie didn’t sleep at all.

By morning, things were shaping up nicely. On the back end, we had a good database schema, ranking algorithms and classes for combatants and fights. On the front end, we had a colour scheme, a logo and beautifully shiny icons. But could we tie the two ends together and still hit the afternoon deadline?

The result

In the end it was clear that we had bitten off more than we could chew. We had a solid infrastructure and a lovely interface but there just wasn’t enough time to build the interactive elements: signing up, choosing an opponent and having a fight.

We still wanted to demonstrate what was possible with this system. If we cut out the interactive elements for now, we could at least show an example fight by having the computer pitch two people against each other. We began adding some real-world data into the system and built a fight page where the moves were chosen at random.

Here’s the result using real data from Tom and Norm!’s online publishing history. It takes a while to load because the information is being fetched from each service at runtime but… it works!

The final result is more of a proof-of-concept but boy, what a proof-of-concept. Watching this idea come to life in the space of 24 hours was simply magicial. I honestly don’t think words can express how impressed I am with the people who built this. All I did was lay the groundwork. They pulled out all the stops to actually make something.

I had one last task. I had to get up there on stage and present Hackfight.

Ninety seconds.

Standing in the spotlight with Hackfight projected on the screen behind me, I rushed through the game mechanics and showed a sample fight. My mind was racing as face as my mouth. I was frantically trying to think of what I absolutely needed to get across. I quickly explained that Hackfight was a platform rather than a finished hack: something that could be built upon to create all kinds of gaming experiences based on online publishing. Feeling the seconds ticking away to nothing, I closed with the one remark that it was absolutely necessary to make:

The team that put this together was awesome.

And with that, I was done. It was later that I realised I actually still had 19 seconds left on the clock. My one chance to do the team justice and I blew it.

The future

Milling with my peers at the close of Hackday, one question kept coming up: would we continue to work on this? We’ve got a good codebase. We’ve got some solid game mechanics. I think it would be great to see this taken forward. The Hackfight team all seemed pretty interested in hacking on this thing a bit more.

I think there’s a lot of potential in this idea. Forget about the basic idea of a fight confined to a web page: think about all the other possibilities: fighting via Twitter, by SMS, on Jabber, even in Second Life. As long as the ranking algorithms are in place and the game mechanics are set, there’s no limit to where and when Hackfight might exist.

The best outcome would be for Hackfight itself to become an API so that other people could hook into the system and build cool fun stuff. That’s an ambitious goal and I don’t have the resources to see it through but having seen what can be accomplished by a dedicated team of unbelievably smart and talented people, I think anything is possible.