The Interpretation of Dreams
An Explanation of the Electric Sheep Distributed Screen-Saveran extended and updated version of
this document is available here.
Electric Sheep is a distributed screen-saver that harnesses idle computers into a render farm with the purpose of animating and evolving artificial life-forms.
The project is an attention vortex. It illustrates the process by which the longer and closer one studies something, the more detail and structure appears.
I. The Client
The screen-saver is a window into a visual space shared among all users. Clients render JPEG frames and upload them to the server. When all the frames are ready the server compresses them into an MPEG animation. Each animation is the phenotype of an artificial organism, an "electric sheep". Clients download the MPEG sheep and display them one after another in a continuous, ever-changing sequence.
About once every fifteen minutes a new sheep is born and distributed to all active clients. Each sheep is an animated fractal flame [Note 2]. Its shape is specified by a string of 84 real numbers - a genetic code of sorts. Some of the codes are chosen at random by the server with heuristics to avoid malformed sheep, somewhat like spontaneous abortion. The rest are derived from the current population according to a genetic algorithm with mutation and cross-over.
II. The Server
Normally electric sheep is very reliable and runs for weeks without assistance, but with new versions come new bugs, and at these times the ability to tweak the server live and online is essential to keeping the flock healthy. By entering a password, a user can become an administrator and delete bad frames, entire sheep, or block clients by address. An administrator can also inject a particular genetic code into the system, for example, to resurrect a sheep from the code stored in a previously captured MPEG file.
III. Life, Death, and Interpolation
The parameter space of sheep is continuous, and the server generates smooth transitions between sheep by interpolating in the genetic space.
The set of animations on the client form a graph, as illustrated by the diagram. Each arrow represents an animation. The nodes represent key-frames. A sheep animation is an arrow with the same key-frame at its head and its tail, because sheep are loops. The client plays the animations by following the arrows head to tail and branching and to seek out new territory.
IV. Measurements and Statistics
The high resolution sheep available from the web pages and in the video documentary were born on the sheep server, then the parameters were tweeked to increase quality, and finally they were re-rendered and compressed off-line to avoid MPEG compression artifacts.
In ten days at the end of October 2001, clients from 650 unique IP addresses contributed frames to the server. Multiple users may share an address, and no attempt is made to uniquely identify clients, so the real user count is unknown. At that time about 150 clients were participating in the render farm at any one time. In the first 12 days of March 2003, clients from 4900 unique IP addresses downloaded animations from the two operational sheep servers (the second server supports legacy clients).
In October 2002 the domain name was hijacked by a competing "electric sheep" site. Fortunately, after a hacking and legal scuffle, the domain has been returned and the site is back in operation, though the user base suffered a set-back.
In February 2003 version 2.3 finally left beta, making near-DVD quality full-screen graphics a reality. It also adopted a compressed XML protocol to save bandwidth and allow more freedom to change without breaking backwards compatibility.
Both clients and the server are open source and there is a developer community as well as a user community. The whole system, centered around the electricsheep.org web site, has its own buzz. The users and developers exchange messages by the discussion forum and email, and clients and servers exchange images and animations. There is an evolving ecology of agents, codes, and protocols.
VI. The Vortex
The sheep system exhibits increasing returns on each of its levels. As more clients join, more computational muscle becomes available, and the resolution of the graphics may be increased, either by making the sheep longer, larger, or sharper. The more people who participate, the better the graphics look.
Likewise, as developers focus more of their attention on the source code, the client and server themselves become more efficient, grow new features, and are ported into new habitats. The project gains momentum, and attracts more developers.
And as more users vote for their favorite sheep, the evolutionary algorithm more quickly distills randomness into eye candy.
Perhaps attention acts on information the same way gravity acts on mass: attraction begets attraction and a positive feedback loop is formed.
VII. The Future
The architecture is not specific to fractal flames, and the protocol should support multiple alternate renderers. I am seeking collaborators to contribute their own generative animation software.
I believe the free flow of code is an increasingly important social and artistic force. The proliferation of powerful computers with high-bandwidth network connections forms the substrate of an expanding universe. The electric sheep and we their shepherds are colonizing this new frontier.
Scott Draves, March 2003
shout-outs: mikek, sam & max, nix, katherine, cassidy, and
Notes1. SETI@home searches for a signal from extra-terrestrials in radio-telescope data. It consists of a screen-saver client that is downloaded and installed by users all over the world, and a server that divides-up the data among the clients and collects the results. It puts idle computers to work. SETI@home is the original distributed screen-saver, and its architecture is the inspiration for Electric Sheep's.
2. Fractal flames are the output of a particular Iterated Function System (IFS) fractal rendering algorithm created by the author in 1992. Each image is a histogram of a two-dimensional strange attractor. The flame algorithm contains three innovations: (a) It uses a collection of special functions that are composed with the usual affine matrices. (b) The intensity of each pixel is proportional to the logarithm of the density of the attractor rather than a linear relationship. (c) The color is determined by appending a third coordinate to the chaotic system and looking it up in a palette. Great care is taken to correctly anti-alias the image, both spatially and temporally (with motion blur). Flame is designed to produce images without artifacts, and to reveal as much of the information contained in the attractor as is possible. For more information, see FLAM3.COM.
3. Pressing the up or down arrow key transmits a vote for or against the currently displayed sheep. The server's web interface also has voting controls. In Linux, voting by key-press requires a special version of xscreensaver (part of the gnome desktop interface) to work, so it is not widely (if at all) deployed.