|
Scott Draves
Electric Sheep
USA
|
|
|

|

|

|
 |
|
The Interpretation of Dreams
An Explanation of the Electric Sheep Distributed Screen-Saver
The name Electric Sheep comes from Philip K. Dick's novel Do Androids Dream of Electric Sheep. It realizes the collective dream of sleeping computers from all over the Internet.
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
II. The Server
III. Life, Death, and Interpolation
IV. Measurements and Statistics
V. Development
VI. The Vortex
VII. The Future
I. The Client
When the software is activated, the screen goes black and an animated 'sheep' appears. In parallel, the screen-saver client contacts the server and joins the distributed computation of new sheep, an idea inspired by the SETI@home project (Note 1).
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 MPEG. The 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 65 numbers - a genetic code of sorts. This code is chosen at random by the server with some simple heuristics to avoid malformed sheep, somewhat like spontaneous abortion. Real genetic search via crossover and mutation is not yet implemented, but should fit into the system quite naturally.
II. The Server
The server has a web interface for people in addition to the one used by clients. It allows users to see and download the currently living sheep as well as monitor the rendering of new ones. Clients can identify themselves with a nickname and see exactly which frames are theirs. The server generates rankings of nicknames and IP addresses by the number of frames contributed.
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 sheep of 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
A sheep's life is finite. I only have enough disk space to keep about thirty alive on the server. Old sheep are deleted without a trace. Users may vote to extend the life of any sheep by pressing the up arrow key when that sheep is displayed (Note 3). Popular sheep live much longer.
The parameter space of sheep is continuous, and the server generates smooth transitions between sheep by interpolating in the genetic space (Note 4). The currently living sheep and the transitions between them are presented graphically. The diagram has an arrow for each animation. The boxes and circles are 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 to seek out new territory.
IV. Measurements and Statistics
Clients store as many as 100 sheep (taking about 200 megabytes of disk space), totaling about 20 minutes of animation.
Currently electric sheep uses a low bit-rate MPEG-1 video codec (encoder/decoder). The resolution is between 256 by 256 pixels and 320 by 320 pixels. I am currently working on incorporating a DVD-quality MPEG-2 codec and increasing the resolution to 640 by 480 pixels.
The high resolution sheep available from the web pages and in the video documentary were born on the sheep server, but were re-rendered and compressed off-line with QuickTime.
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.
V. Development
From August 1999 when it was created until October 2001, the electric sheep client only ran on Linux. At that time Matt Reda released a Mac OS X client that he wrote from scratch, and the number of clients quickly doubled. Despite many requests, several promises, and one near miss, no working MS-Windows version has appeared. The user base is also limited to those with high-bandwidth, always-on connections to the Internet such as DSL, cable-modem, or a university or corporate LAN.
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
Electric sheep investigates the role of experiencers in creating the experience. If nobody ran the client, there would be nothing to see. Tiny irregularities in our universe became centers of accretion and eventually grew into stars. A parallel process unfolds in cyberspace. It starts with an idea.
The sheep system exhibits increasing returns (not just the network effect) 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.
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
Electric sheep is open-ended and very much a work in progress. The next version will support full-screen high-quality animation. The architecture is not specific to fractal flames, and the protocol should support multiple alternate renderers. I plan on incorporating someone else's generative animation software. Besides supporting dividing an animation up by frames, the server also supports dividing a single, very large, still image into tiles, though this feature is not yet deployed.
I am currently working full-time on the electric sheep project.
Scott Draves, November 2001
Notes
1. 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 fractal rendering algorithm. Each image is a histogram of a two-dimensional chaotic system. 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 (a 256-entry color lookup table). Great effort is expended 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.
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 requires a special version of xscreensaver (part of the gnome desktop interface) to work, so it is not widely (if at all) deployed. The Mac OS X version does not yet support voting, but voting by the web pages works fine.
4. For fractal flames, the genetic code consists primarily of matrices and special function weights. The weights are interpolated linearly, but the matrices are converted to a polar form with complex logarithms, and interpolated linearly in that space.
|
|