There is (usually) no shooting. It's more like a strategy game, but not quite like that genre either. You might call GoiD an 'advance strategy' game. If you like a good puzzle, you've come to the right place.
It's like this... You don't play the game, you write a script that plays the game, and you sit back and watch your magnificent brilliance in action.
At its simplest, your script reads information from the agent's senses, and then writes values to the agents' actuators. What specific senses and actuators are available depends upon the task. Depending upon the requirements of the task and the true extent of your genius your script can become arbitrarily large and complex so as to include memory, conflicting desires, emotions, and such. Hey, why not just make it intelligent while you're in there?
An example may help. Take the 'donut' task. The goal is to have the agent perform a single lap around the island. It is able to sense the direction it is facing, whether there are any obstacles (walls) in its way, and whether its last attempt to move was blocked (i.e. it hit a wall). It is able to actuate a turn, a forward movement, and a backward movement. There are many ways in which the goal can be achieved, but a simple approach is to move until a wall is reached, and then follow that wall around until the lap is completed. A sample (un-optimised) script is provided in the task.
The user interface is divided into three parts: the environment viewer, the script panel, and the output panel.
The environment viewer allows you to see what is happening to your agent(s). You can use the mouse to pan around,
and the magnification buttons (
and
) to zoom in and out. Use
to
see a summary of your agent's current state.
The script panel is where you edit your script. To get you started, each task has a sample script that is copied
to the script panel by pressing
. Typical buttons are included to undo
(
), redo (
), and save
(
). You must save your script to have the agent(s) use it! If your
script saves values into its context, you can use
to clear the context out.
The output panel displays messages that your script writes. Just use
console.out('my message');
Click
to clear the output panel.
A task is executed in discrete time steps. At each time step the agent is given its current state, and its script is executed allowing it to write values to its actuators. These output values are used to update the agent and the environment, which will likely result in different senses values at the next time step in a feedback loop.
To execute a single time step press
. To start a loop of execution
press
. To pause execution press
. To stop execution and reset the environment back to the beginning
press
.
While an execution loop is running, you can speed it up with the
button,
or slow it down with
. Note that the game runs in simulated time, not
real time, so things like the speed of your computer will not affect your score.
When your script is ready, press
to run it for real. In run mode you are not
allowed to modify the script or agent context, because when your agent finishes the task your score is evaluated.
To abort a run press
.
"As a general rule, biology tends to be conservative. It's rare that evolution 'invents' the same process several times." - Gero Miesenböck
You'll find that for tasks that are similar enough you'll be copying functionality that worked well before into your new designs. The obvious parallel–albeit abstract–with evolution is genes. Sure, it's reaching but it's oddly satisfying at the same time.
Nothing. And everything.
In the game? Yes.
Obviously when you play the game you are the intelligent designer. But every time you make a modification to your script you evolve your agent's behaviour. There are multiple levels of evolutionary pressure going on here. First, you need your agent to solve the task; if it doesn't do that, you change your script and the old script becomes extinct. Second, when your rank isn't as high as you want it to be, you again evolve the script. Finally, for those tasks in which multiple users can have their scripts executing in a single competitive play environment you need to adjust your script to account for the behaviour of other scripts. Neat or what?
If you are interested in authoring tasks for GoiD, contact the fellow mentioned below in the About section.
The Game of Intelligent Design is developed and maintained primarily by Matthew Lohbihler of Serotonin Software (ml, gameofid, com). If you would like to contribute to this project, please please please please contact me.
There are big plans for GoiD. Among the diaper load of task ideas there are things such as:
Sure, some of the above is a bit wishy-washy, but what is lacking in definition is more than made up for in enthusiasm. Needless to say, two things are clear: 1) GoiD's future will be interesting, and 2) some help might be needed (see About above).