Coders across the UK will be flexing their digits over the coming weeks in an effort to write software whose sole purpose is to propagate across the Internet and battle similar pieces of code to the death.
It's not a virus, says Microsoft, which created the game to show what can be achieved in peer-to-peer applications -- particularly those using the company's .Net Framework -- but it does share some similarities with the way viruses work. For instance, the object is to propagate as many pieces of code -- or creatures -- as possible in the three weeks that the competition will last for.
And although it is just a game for now, it does show the possibilities of peer-to-peer computing.
The best way to think of Terrarium, says Microsoft developer tools product manager Gavin King, is as a game like Age of Empires. The word Terrarium means a glass case for small animals, or a sealed globe for plants. In the Terrarium world, each creature represents a piece of code. Once written, it goes out into the world to do battle and the gamer has no further control over it.
"Each player has their own Terrarium client, and once they have written their code it is left to wander around in their client," said King, explaining the fundamentals of the game. A ball rolls around the Terrarium client and if it lands on a piece of code (or creature), said King, it copies (or teleports in Terrarium parlance) that code to between 15 and 20 other Terrariums on the Internet.
The code, which can be written in any .Net language -- such as C#, Visual Basic.Net or C++.Net -- is translated into Microsoft's .Net low-level assembly language, called Intermediate Language, or IL.
It sounds difficult, but you don't have to be a hard-core programmer to participate, says Microsoft: the company is supplying a set of skeleton creatures with a basic set of behaviours to get people started. "You could release one of these as-is, but it might not last long," said King. Successful creatures will be the ones that have more complex behaviours, he added. "It is even possible to get these things working together as a group. The better the code you create, the better its chances of success and the higher its chances of procreation. The idea is not to get eaten."
The ultimate goal is to have the highest number of creatures across the Terrarium community. A control panel built into the client gives real-time statistical feedback on how each creature is performing, and the distributed nature of the game means that a creature can continue to propagate and move around even when the machine it was created on is switched off.
"Obviously, the longer your Terrarium is online, the better chance you have of getting more creatures out there," King added. "But once they are out there they have a good chance to procreate elsewhere."
King stressed that there is no danger of creatures that host malicious code causing any damage outside the Terrarium clients. "The game does have organic principles, and parallels could be drawn with viruses," he said. "But there is no opportunity in the code to write anything that could jump out of the Terrarium. If any code within creature tries to do anything outside the event model it is killed immediately."
Terrarium is played on the .Net framework, which is downloadable for free from Microsoft's Web site. The game starts on 13 February and is timed to coincide with the launch of Visual Studio .Net. King said that in theory, a Terrarium could be run on the .Net redistributable framework, which is a significantly smaller download (about 21MB compared to 130MB), but this would not give the world-view stats, or allow creatures to be created.