About

World of Love

Thanks to a tip off from David Hayward, I managed to snag a last minute ticket for the World Of Love independent games conference organized by Pixel Lab, sponsored by Preloaded and hosted by Channel 4. I’m glad I did.

The day kicked off with Chris Delay from introversion demonstrating Subversion, a typically minimal game inspired by Mission Impossible (the TV show, not the movies). It ticked a huge number of boxes for me as a game, but the most interesting thing about the demo is that the game is nowhere near finished and it’s not often you get to see a game this early in production. I suggested to Chris that the game should feature Sporty Spy, Posh Spy, Ginger Spy and Scary Spy. Look out for those in the final version.

Possibly the most inspiring session of the day was Terry Cavanagh’s talk on game jams. Setting the scene with a description of his stalled over ambitious uber project, Terry the rattled off an amazing list of games he made at game jams like Sinewave Ninja which ultimately morphed in to the amazing v six times. I’ve had a ton of fun building mashups at Hack Days so I can imagine adding games to the mix would be amazing. I predict game jams will be coming to Brighton in the very near future…

Definitely the most amazing talk of the day was by Eskil Steenberg who was delighted to be talking at the first conference dedicated to his game, Love. After a brief tour around a beautiful procedurally generated and fully dynamic world, Eskil showed off the amazing tools that have allowed him to build an on line game on his own. A suite of networked art tools allowed him to model then procedurally UV map and texture a 3D model and then demonstrate how altering the model would result in updated UV maps and procedural textures in real time. It was like being given a tour of the future and when Eskil ran out of time I fully expected him to pull out a time machine to allow him to keep going.

The rest of the day included lots of really useful advice for indie game development including talks on business, finance, law and marketing which ended with the Frozen Synapse developers bursting in to blast the attendees with water pistols to demonstrate Kieron Gillen’s last marketing rule — you’re creative, so be creative with marketing.

Overall I prefer the many tracks and everyone gets involved format of GameCamp and at times the talks devolved in to extended biographies, but mostly it was a fun, thought provoking and inspiring day. I spent the evening asking the attendees for their top 5 games (it felt like it was that kind of event) and was very pleased to hear Chaos featured in multiple lists (it’s one of my favourites too, I developed a remake at university. On the strength of the UK indie scene demonstrated at World of Love I’m sure we’ll be seeing more indie games in top 5 lists in the near future.

HTML 5 multimedia

I’ve been morbidly fascinated by the Rich Internet Application technology blood bath for a while now: Whirled,Metaplace and others tried to stuff virtual worlds in to web pages using Flash, Second Life stuffed Flash in to virtual worlds via Webkit, Unity stuffed Mono in to a 3D engine and then took on the world and Silverlight and Moonlight stuffed the CLR in to web browsers and Erik Meijer stuffed a CIL interpreter straight in to Javascript.

All good fun and there are fortunes to be won and lost to be sure, but the smart money seemed to be on waiting for the dust to settle and then using the winning technology. Recently, however, amazing technologies like V8, Node.js and the resulting browser Javascript arms race have been adding weight to the Google viewpoint that all you need is Javascript: a philosophy made more pragmatic by Apple’s decree that all you get is Javascript.

A week or so ago I decided to test the hypothesis by building a drum machine using only HTML 5 and Javascript. My first discovery was that while the canvas element is perfectly capable, it’s a very low level API, even for building something as rudimentary as a step sequencer interface. After looking at a number of drawing libraries I settled on processing.js as a higher level drawing API, something I’ve been meaning to play with since we used it to build SLorpedo at Hack Day a few years ago. Processing.js is a neat hack, that despite an incomplete API and some subtleties around casting does a great job of running processing sketches within a browser without a plugin. It also uses a sloppy parser enabling you to drop arbitrary Javascript in to your processing sketch, which makes it easy to just create Audio() objects within the sketch to playback audio. Unfortunately while it was easy to add audio playback, the playback itself was pretty disappointing: Firefox just spluttered and belched sadly while Safari did a decent job of playing beats for a couple of minutes before its timing went to hell and then the browser crashed. The shiny future may yet be HTML 5 and Javascript, especially when the experimental extensions to Firefox become widely supported, but we’re not there yet.

To experiment for yourself, click on the squares on the grid below to add beats to the sequence. To see the code, view source.

Always Watching Out Now!

Always Watching is now available to download from iTunes, amazon, 7digital, juno download and songrilla — buy it now!

If you’d like to remix the song or video, you can get the parts under a Creative Commons Sampling Plus Licence via BitTorrent.

Read more about the making of the track and the encroaching survellance state here.

GameCamp 2

A couple of years ago, Aleks Krotoski and a group of friends spanning the web, games and technology fields decided to bring the FOOCamp and BarCamp model of unconferences to the world of games and invited me along. I had a great time at the original GameCamp and missed it last year, so when I heard about the return of GameCamp a couple of months ago I jumped on a ticket and eagerly got on the train early on Saturday morning to participate in another inspiring mind expanding day. I wasn’t disappointed.

The cultural differences between the worlds of games and the web we touched on in a couple of sessions. “The PC Is Dead, Long Live The PC” quickly turned in to a discussion of open platforms like the PC versus closed, console like channels. While the long term view was that in 50 years open will prevail, the present sees controlled channels like XBLA, the various Apple stores and Steam in the ascendant. Some people will wait until titles are available on a particular channel, suggesting that they offer some advantages in terms of convenience, support or peace of mind. While this may be OK where there is competition between channels, games cannot be as easily distributed via multiple channels, with platforms like Steam requiring relatively invasive changes to be made to allow things like overlay menus to be displayed over game UIs. Where choices between channels is not possible the whims of platform controllers can make development extremely risky when policy changes or simply under staffing can delay or scupper a release.

Steven Goodwin asked why open source can build Linux, but not games. While the first answer is that Linux is a platform that can be shared by anyone whereas games are more individual expressions of creativity, that still begs the question why aren’t there more open source game platforms? Games seem to slowly be moving towards more shared and open infrastructure, but still lack the equivalent of the LAMP stack, HTML, CSS and JavaScript provide a shared web platform that allows web developers to share tips and tricks at BarCamps.

Luckily, the inability for game developers to give talks on the equivalent of squid configuration leaves room for lots of interesting talks on higher level game design concepts. 2 of the most interesting were hosted by Margaret Robertson, the first was on Curiosity — an urge which is hard to explain in classical or behavioral economics, and which is more powerful when the unknown is close and definite, a closed box on a table that must be opened, than when the unknown is distant and amorphous. The session turned in to an interesting comparison between risk, where outcomes are known and curiosity when the outcome is unknown, how both can be manipulated to make games more compelling and whether that manipulation could be a force for good as well as evil. The second of Margaret’s talks was about a forthcoming audio only binaural iPhone game and the challenges of navigating a world without light, which sounds fascinating, if hard.

Tom Armitage hosted a session which asked “What Do Cows Call Thermodynamics?”. The answer is, probably nothing, but it still affects them. So it is with games, which are ultimately defined by their rules and mechanics which can be used very creatively. The rule that Yorda is afraid if you don’t hold her hand dramatically shapes your relationship with her, the rule that you aim better while doing a stunt is what turns action quake in to a John Woo simulator.

Another arc that ran through GameCamp 2 was a discussion about creativity. Pictionary and Scrabble were used as examples of games that foster creativity while players of World of Warcraft show amazing creativity despite the game in a session that had many echos of the Playfish talk at Develop last year. At the other end of the spectrum, a session on procedurally generated content asked could algorithms create good content and if they could, how would they know?

My “Social Music Composition Games?” session at the end of the day continued this arc. I first played Rock Band at the first GameCamp and since have played it so much that I ended up starting 100 robots with Max. Since then I’ve been playing with tools like Ableton that have very game like interfaces and games like Lumines that have very sequencer like interfaces. Could you use interfaces like these to build games that do for music composition what Rock Band does for music performance? If so, how would you judge the compositions? Something that combined the interface of Lumines or the Tenori-On and Digg like filtering and tagging might be very interesting here…

Always Watching The Watchers

On May 17th, the first 100 robots single, Always Watching, will be released online via Amazon, iTunes, emusic, Rhapsody, napster, spotify and many more digital outlets.

Always Watching has been one of the most satisfying projects I’ve ever worked on. Using a commodity PC and the incredible Ableton Live music production software, Max and I were able to compose, record, arrange and produce the track, sharing versions online using the free and open source Subversion revision control software and downloading freely reusable samples from the amazing freesound online sample site.

With the music done we were able to produce a DIY video for the track, filmed and directed by our friend Chris Cole again using digital technology that would have been out of reach of anyone but film studios a few years ago. After an incredibly fun day running around Brighton recording shots we could again get additional material from the internet, in this case footage of internet luminaries Chris Anderson, John Battelle, Sherry Turkle and Lee Tien interviewed about online privacy for the BBC virtual revolution series which were released online with a permissive license that allowed us to reuse them.

With the video in the can it was time to promote the track online using the social network sites MySpace, Facebook Sound Cloud and Last.fm, make a remix pack available via Bit Torrent and sell the track via Zimbalam, a site that that makes music available for sale on all of the major online stores, using artwork that we found on Flickr and that Rainer Messerklinger kindly let us use.

It really has been an amazing and eye-opening experience. Using cheap digital technology, the internet and a DIY spirit we have been able to create, promote and sell our music to the world and while I don’t expect to make a ton of money from selling the track, being able to sell it is important.

Computers and the internet have put the means of production back in to the hands of musicians, creatives and other workers in the digital economy. Whereas musicians in decades past would have had to rely on recording facilities and production and distribution chains owned and controlled by major labels, musicians now can choose to do it all themselves and potentially get much better deals. Historically record deals have been incredibly unfair on artists who have to pay for their recordings from their royalties but still don’t own their recordings once they are paid for. Right now sites like Zimbalam, TuneCore and CD Baby are fiercely competing to provide the best deal to musicians who are doing it themselves.

The last time ownership of the means of production changed hands from workers to factory owners the disenfranchised rose up to smash the machines until they were suppressed by the government. This time the disintermediated are turning to the government to defend and enforce the old business models by crippling the new machines that are handing back the means of production to the workers.

Always Watching is a song about biometrics, click tracking, online privacy, Phorm, governmental data loss, corruption and the increasingly Orwellian surveillance state. Even while we’ve been recording it the state has rushed through the Digital Economy Bill which further endangers our digital rights and freedoms. With a general election coming up, it’s even more important to always watch the watchers.

Battle of the Battle of the Bands

Somehow, 100 robots have ended up playing 2 different Battle of the Band competitions on consecutive nights in Brighton: at The Providence on April 2nd and The Lectern on April 3rd.

So, which band is the best and which battle of the bands is better? Early indications favour The Providence, which seems to have a better PA, but The Lecturn is near the University. It could go either way.

Anything you can do, I can do meta: join us for both nights of the Battle of the Bands tour and see who we declare the winner of the Battle of the Battle of the Bands!

FOSDEM X: The Movie

A video of my FOSDEM talk about Mono in Second Life and our plans for the future of scripting is now online (the slides are also available here ):

Watching back, I was surprised to hear myself say “Hooray!”, “Shit” and “Crap” quite so often…

While you’re catching up on FOSDEM talks, I recommend Miguel, Jeremie and Alan‘s talks from the Mono track. Unfortunately it doesn’t look like the very interesting talks on the XMPP track are available online, but I’m going to be catching up on lots of the talks I missed out on, including the key note talks on Saturday morning which I missed due to the very enjoyable beer event on Friday evening…

FOSDEM X

Last weekend I went to the 10th Free and Open Source Developers European Meeting in Brussels. This year was the first time that FOSDEM had hosted a track on Mono, so I went along to find out what’s going on with Mono, tell the Mono folk what our plans are for C# and fill in some gaps.

I started Saturday on the monitoring track which included a terrible talk about an interesting tool that I hadn’t heard of: SystemTap — a scriptable system monitoring tool designed to allow diagnosis of problems at run time on production servers without the usual instrument, compile, analyse loop. stap looks really interesting and useful as a tool for augmenting or replacing our current simulator performance tools.

After the stap talk I headed over to the XMPP track for the rest of the day and saw some great talks on BOSH, onsocialweb, pubsub, strophe.js, collecta and node.js. Federated, open social networks seem to be a big thing at the moment (@blaine was talking about them at @scalecampuk ) and there was lots of interest in using XMPP to build them as it already has standards for identity, presence, friends and events. Given that jabber and XMPP is a decade old it makes you wonder why the standards weren’t used the first time round. A possible reason is that XMPP doesn’t have it’s rails/django yet and still looks pretty clunky to work with although Strophe.js may help. Another reason may be that XMPP hasn’t been the web up until now, although BOSH may be the bridge that’s needed there.

While everyone else was thinking about using XMPP to build Twitter and Facebook I started thinking about what an open, federated virtual world platform built on XMPP might look like. I wasn’t the only one. The realXtend folks turned up to show off their latest new from the ground up viewer which uses XMPP and jingle for voice and IM integration and were obviously thinking along the same lines. As realXtend seem to be moving away from SL tech now, expect an XMPP based back end from them soon…

I spent Sunday camped out in the Mono room which was interesting from a cultural point of view. Miguel de Icaza seems to have completed his transition from champion to enemy of freedom in the open source community’s eyes. Last time he was at FOSDEM he was accused of talking about “Coca Cola” when showing off the closed source Unity engine that uses Mono, so stayed strictly to open technologies in his talk this year. Luckily, due to Microsoft’s Community Promise and open sourcing of the DLR, IronPython and IronRuby, that includes a lot of the .NET platform and gave him lots to talk about. Most of the legitimate worries of patents around Mono have been resolved, but talking about C# and the CLI at FOSDEM still requires a poster asking people to leave their religion at the door, apparently.

In my Second Life talk, I gave a summary of the interesting things we did to get LSL on Mono working in 2008 and then outlined our plans for C# in the future including lots of question marks around how we’re currently planning to implement them. Lots of my questions were answered after the talk and it turns out that the Unity developers are wrestling with the same problems at the moment, so we should be able to work together over the next few months to make a lot of progress.

Overall FOSDEM was hugely informative and enjoyable and I have a big shopping list of exciting new technologies to play with over the next few months. Hopefully the Mono room will become a regular fixture and we’ll be able to head back next year.

An Open Source, Guitar Mounted, Multi Touch, Wireless, OSC Interface for Ableton Live

Guitar mounted iPhone controller

(100 robots images by Steve Marshall )

Ever since playing with iPhones as music interfaces with the London Community iPhone OSCestra at Open Hack London in May I’ve been wondering how I could use my iPhone as a controller in my rock/electronic band 100 robots. The 100 robots set up has Max and I playing live drums and guitar over a number of tracks played from Ableton Live. If I could mount an iPhone on the guitar I could manipulate the tracks playing from Ableton making the whole experience more varied and live and less like 2 people playing over a backing track.

The biggest problem with using the OSCestra set up with 100 robots is that we run Ableton on Windows with 100 robots so that we can use a number of plugins that aren’t available on OS X. This stopped us using the OS X Osculator to convert OSC data from Mrmr in to MIDI data that we could feed to Ableton — the really simple and easy solution that I recommend if you’re using OSC and Ableton on OS X.

Some quick Googling showed that we could potentially use the open source and incredibly powerful pd to read OSC and send MIDI to Ableton, but pd seemed a bit heavy weight and complex to use just for controller mapping in a live environment which needs to be stable and predictable under heavy load while streaming 6 audio tracks and recording 2 tracks live.

Some more research I discovered LiveAPI: an open source project that gives access to the Python interpreter embedded in Ableton Live. LiveAPI allows you to write python code which listens to events from Ableton and allows control of Ableton from python code. Conveniently LiveAPI also includes LiveOSC an OSC server that quickly allows you to map OSC messages from applications like Mrmr to Python methods that use LiveAPI to control Ableton.

In the end it only took a couple of hours and a few lines of Python code to rig up Mrmr on the iPhone to control Ableton on Windows and a few minutes more to build a guitar mount for the iPhone from a cable tie and a piece of gaffa tape.

Using the iPhone live with 100 robots:

(Cinematography by David Packer)

Despite being a really quick hack to build, LiveAPI is somewhat fiddly to set up, so I thought I should document the process of wiring things up. If you’d like to build your own open source, guitar mounted multi touch, osc interface for Ableton Live 8 running on Windows, follow these instructions:

  1. Install Mrmr on your iPhone or iPod touch

  2. Design your Mrmr interface using a text editor. If you have a Mac, you can use the interface builder. The 100 robots mmr file is here

  3. Upload the mmr file to a web server.

  4. Connect the iPhone to the same network as the computer running Ableton.

  5. Run Mrmr on the iPhone, download the mmr file from your web server to get your interface running on the iPhone

  6. Download LiveOSC

  7. Unpack the LiveOSC zip in to a new LiveOSC folder created inside the Resources/MIDI Remote Scripts directory in your Ableton installation.

  8. Edit Resources/MIDI Remote Scripts/LiveOSCCallbacks.py to add new callbacks for Mrmr to the init method of the LiveOSCCallbacks class. Widgets are numbered sequentially from 0 in the mmr file, so this line registers a callback for the first widget in the file. The 100 robots callbacks look like this:

    """ 100robots callbacks """
    self.callbackManager.add(self.toggleBass, "/mrmr/pushbutton/0/iPhone1")
    
  9. Add methods to Resources/MIDI Remote Scripts/LiveOSCCallbacks.py to respond to the messages from Mrmr. These can use LiveAPI freely to control ableton. The 100 robots callbacks toggle the first parameter of effect racks on different tracks to turn them on and off:

    def toggleBass(self, msg):
        """Called when a /mrmr/pushbutton/0/iPhone1 message is received."""
        track = 38
        device = 0
        parameter = 0
        value = msg[2]
        LiveUtils.getSong().visible_tracks[track].devices[device].parameters[parameter].value = value
    
  10. Select LiveOSC as a control surface in the Ableton preferences. This will load the LiveOSCCallbacks.py and set up your mappings. Interact with the controls in Mrmr and see Ableton Live respond!

The full, modified 100 robots LiveOSCCallbacks.py.

My presentation on the hack at the £5 App Christmas Special which includes more details on the Ableton Live routing we use.

@scalecamp

On Friday I jumped on the train to London to attend the first scalecampuk, an unconference about scalability, at the Guardian offices.

The sessions were all very interesting and mostly very relevant. I learned new things about XSS and CSRF and Django’s defences against them from Simon Willison, new things about messaging, pubsub, queues and data stores (process 1 message at a time, use message hospitals, send URLs to unavailable data that can be polled for with JavaScript and that just check memcache entries) lots about Varnish ) and it’s use at Wikia from Artur Bergman (Wikia runs off 18 apaches and 8 varnishes with 60GB of RAM and SSDs to serve 25 million pages and 950Mbps at peak, Varnish is generally better than squid ), but you need a modern kernel).

Lots of the talks were about moving storage, caching and queuing out of the application and just writing a small piece of business logic to tie them together. Against this background Alex Evans’ talk about the back end for Media Molecule’s Little Big Planet stood out like a sore thumb. Having not enjoyed using a Java web stack, Alex has just rewritten the whole of the back end as proprietary technology as a single binary in order to know the code from end to end. While it may be true that having custom physics or rendering middleware might distinguish Little Big Planet from other games, I can’t believe that custom technology to serve HTTP requests is going to be a competitive advantage. I hope Alex’s good ideas become Redis contributions rather than a maintenance nightmare and barrier to agility.

The lightning talks were also very good. Simon’s “ScaleFail” talk about the Guardian MP expenses app was hilarious (lesson: do load testing) and Gareth’s talk about Dumbo (a Python Hadoop client) was very useful.

At times it felt like the talks were suited to an ops audience, but “Dev’s should know about this!” was a regular refrain. Don’t worry: I listened and learned a lot. Thanks to everyone who made it a great day.