Archive for September, 2011


A simple Space Invaders clone put together as an learning exercise.

The name is a reference to a company I used to work at, I was going to give this to the team when I left, but somehow never got around to it.

I was lucky enough to get the music to be produced by Armin Elsaesser, an award winning games music writer:

The things I learnt:

– How to use the prototyping language Processing (  Worth checking out.

– A way of making each invader unique with a fractal texture generator

– The perlin noise function for generating smooth random moves (the saucer)

This was a lot of fun to develop, and is quite fun to play as well!

Source code can be found here if you’d like to play or see how it works:


Intelligent Systems: Week 1

One of the reasons to keep this website is to record progress through a PhD in Intelligent Systems, being studied with the Informatics department of Kings College London.

Found a great crash course in AI which is being run by Stanford University, Palo Alto California.  The lecturers are Sebastian Thrum (research professor at Stanford, Google Fellow) and Peter Norvig (Director of Research at Google, previously head of Computer Sciences Division at NASA, fellow of the American Association for Artificial Intelligence).  The course is run online through use of interactive youtube videos, and through tests and examination they are able to use the scalability of the internet to provide their experience to training 145,000 students in 18 different languages.  Have no doubt this is the future of eduction.

The informatics department at Kings has many specialists in Multi Agent Systems, so have been reading the much recommended

Introduction to Multi-Agent Systems, by Michael Wooldridge

As a quick run down, Agent systems, and software agents in general, are a specific class of system where a piece of software has the ability to monitor an environment (be it a stock exchange, a flight to Mars or a computer game) and take actions based upon it’s own beliefs, desires and intentions.

Environments can consist of almost anything, however can generally be classified on the following scales:

  • Accessible vs Inaccessible – how much of the environment can be ‘seen’ by the Agent
  • Deterministic vs Non-deterministic – do actions change the world in a predictable way? Rolling a dice is an example of non-deterministic
  • Static vs Dynamic – is the environment changing through the actions of other agents or entities
  • Discrete vs Continuous – are there a set number of states in the environment (e.g. chess) or infinite combinations (the real world)

We can also add a few more from other sources:

  • Non-hostile vs Hostile – are all agents attempting to bring about the same result, or are there agents working against our goals?

Agents generally need to display and balance the following capabilities:

  • Being Reactive to changes in the environment
  • Being Proactive to set goals and carry out plans to achieve the goal
  • Being Social, working with or around other entities to achieve goals

There are many subjects covered in the book that provide insight into how agents can be built, including:

  • Symbolic reasoning agents & software that can form and manipulate a model of the world
  • Practical reasoning agents, how an agent forms beliefs, desires & intentions, then designs and evaluates plans to achieve goals
  • Reactive and hybrid agents, the idea that intelligence is an emergent property of enough simple logical reactions
  • An overview of the applications of agents in the real world, including Stanley, a car which drove itself 40 km through the Arizona desert to win the DARPA grand challenge
  • Where it gets interesting – methods by which agents can communicate and work together to bring differing capabilities to solve a problem

To give an idea of what the practical outputs of this are:

  • Approximately 70% of trades made on most stock exchanges are carried out by software agents that are constantly evaluating the market.
  • Google employs a vast array of software agents to run their search indexing and other services
  • Apple’s iPhone 4s has an integrated agent called Siri which will understand voice commands and take actions at the users request.

An area of personal interest is the use of biologically inspired methods for programming agents, i.e. looking emulating the ways nature solves problems.  All sorts of creatures using group collaboration to solve problems in swarms, hives, flocks, herds or packs.  Craig Reynolds provided some seminal work in this area, and has published a number of research papers that still engage much interest in a variety of industries:

Craig Reynolds: Flocks, Herds and Schools: A distributed behavior model

In particular this paper presents a number of simple rules which can be implemented across a society of individuals to generate behavior which is startlingly close to flocks of birds or shoals of fish.  If time permits some examples will be posted here to demonstrate.