From little acorns

Juuso, one of the chaps whose blog I really enjoy reading, says that he likes to describe emergent behaviour as “1 + 1 = 3”. I would describe that as a syntax error. Emergent behaviour isn’t about taking an obviously simple problem and then producing the wrong answer, it’s about allowing for many answers to potentially exist where the problem isn’t so clear cut.

  • Emergence is getting behaviour or results that you did not specifically design or code for – the colossal spectrum of grey area between black and white that is the difference between obviously artificial and possibly real
  • Emergence is when you build a tree and then grow an entire jungle from it – something that is made significantly more amazing if your trees can evolve so that the jungle contained trees and plants you couldn’t have possibly considered or imagined

These things are emergence. Something you didn’t specify emerging out of things that you did. I would respectfully suggest one of three alternative phrases to describe it: 1) something from nothing 2) functionality for free or 3) complexity for free.

Emergence: From little acorns...

From little acorns, we shall grow an entire universe. With snakes. LOTS of snakes. Nature slouched around taking billions of years to do this: we'll crack through it in a fraction of that time. Suck on that, mother nature!

In the early naughties, I created a working prototype of a system that grew an entire forest environment from just a collection of artificial seeds. This is the tight integration of metaphors from biology and nature into emergent systems: using natural selection, evolution and the pure dogged persistence of mother nature to create worlds that looked, felt and behaved real because they pretty much were real. It was great fun — seeding a world before leaving the office (late1, as usual) and then coming in the following morning to see what had grown. Had the opportunity existed to continue that work, I very much expected to be constructing entire planets by now complete with vegetation, animals, insects and their own unique climates and geology.

As well as growing worlds from nothing there is the deliberate misuse of an environment and its content by users to create new forms of entertainment; users’ emergent behaviour in a complex environment. A friend and I, for example, spent many happy evenings playing “land-and-base-jump” in Grand Theft Auto 3. The rules were simple: steal a plane, preferably a big one, land it in the most ridiculous place possible and then base jump from there. Additional points were awarded for 1) leaping out of the plane as it skidded across the top of a sky-scraper and not falling off yourself, 2) opening the parachute mere seconds from the ground 3) achieving the impossible and 4) forgetting to add the parachute to your inventory before leaping off a building. In the end, between that and “crime sprees” (commit as many crimes as possible and then survive for as long as possible) I don’t think we played the actual missions at all… voila, emergent gameplay.

Emergent gameplay is cool: you get more out of something than it was designed to give. I’m sure you’ve all got your own rules for Risk and Monopoly and that you’ve all invented card games, drinking games and bent the specifications of goodness knows what in order to wring each and every drop of entertainment from it. However, this isn’t, if he’ll permit me to continue to stuff words into his mouth, what Juuso was talking about and it’s also not where the real fun in the future lies.

Spending tens of millions producing the worlds for games is not sustainable so increasingly large numbers of developers are dipping their toes in the modelling and emergence waters to see just how chilly they are. Progress is being made through 1) procedurally generated content, 2) packaging behaviours with the objects they apply to (autonomous agents) and 3) introducing increasingly large quantities of modelled components and environmental properties. We’re all benefitting from the introduction of physics and dynamics models in computer games. Cars, planes, bikes and the individual bits and pieces that make up an environment are becoming increasingly more real. As models, they behave like their real-world counterparts so long as one’s level of abstraction isn’t too ridiculous. It is one additional step to get to the point where the worlds containing these objects is an emergent property of… well, virtually nothing.

Don’t underestimate the ability of emergent systems to create. They’re also the ultimate compression system: Elite, in the early 80s, had a gaming environment that consisted of hundreds of thousands of stars and planets across many galaxies. From one number. In less than 20,000 bytes of memory. To put that in perspective: the draft of this document on my hard-drive consists of 184,000 bytes. David Braben and Ian Bell used emergence to fit an entire game and a virtual world of almost unbelievable size in an amount of memory about a tenth of the size of the file storing the words for this blog post. Neat, eh? It turns out that Fibonacci sequences and smart minds create clever systems.

One day soon we will be growing virtual countries complete with inhabitants.

Entire worlds.

Complete galaxies.

We won’t be in control of what’s in them or how they evolve but that’s cool. That’s the whole point: emergence behaves best when it is allowed to grow from little acorns through trees, forests, worlds into an entire virtual universe.

It won’t take seven days, it will take seven milliseconds and we will have time to spare.

1 Top development tip: don’t work seven days a week month in, month out. Nobody will ever thank you for it — trust me on this one.

This entry was posted in Cool stuff, Software development and tagged , , , , , , . Bookmark the permalink.

2 Responses to From little acorns

  1. Pingback: Book Club | Cobras Cobras

  2. Pingback: Overcomplicated shark is overcomplicated | Cobras Cobras