Wireworld player beta Wireworld concept by Brian Silverman

Say, if you like watching people code things,
why not watch me code this live, or catch a rerun?

wireworld computer by
David Moore and Mark Owen
© 2004-2021 all rights reserved.
http://www.quinapalus.com/wi-index.html

An error occurred Confirm reset Are you sure you wish to return this simulation to its original configuration? Wireworld Player Help

What is this thing?

Wireworld is a type of cellular automaton, or "CA". A CA is a set of rules you apply repeatedly to a grid of cells to evolve their states; these rules apply universally to each cell in the grid, depending on that cell's current state and the state of its neighbors. Complex behaviors often emerge from these simple systems.

Most of the explored CAs have a reputation for being interesting, or relating to real-life phenomena. One of the most interesting properties a CA can have is "Turing completeness". Turing-complete CAs can be configured to compute anything a conventional computer can. Proving Turing completeness in a simple system lends credence to the view that simple mechanics may underlie all the universe's observed complexity. But these proofs aren't always straightforward.

Wireworld is a CA developed by Brian Silverman, and debuted in his 1987 program for the Apple II, The Phantom Fish Tank. Its rules are designed to imitate circuitry, bridge the domains of CA research and circuit design, and simplify the creation and discovery of systems of computation. Proving that Wireworld is Turing-complete, while still difficult, is much simpler than proving many of its CA counterparts. David Moore and Mark Owen demonstrate Wireworld's Turing-completeness with their programmable computer, built from functional modules that imitate their real-world counterparts.

What is Wireworld's rule set?

Wireworld cells can have one of four states. We call them DEAD, WIRE, HEAD and TAIL.

  • DEAD cells forever remain DEAD cells.
  • TAIL cells always become WIRE cells.
  • HEAD cells always become TAIL cells.
  • WIRE cells touching one or two HEAD cells become HEAD cells. A cell like this is said to be "excited". Otherwise they stay WIRE cells.

Each simple rule serves an important role. The eternally DEAD cells typically enclose the others, which prevents the simulation from growing in size; HEADs becoming TAILs guarantees that a cell is only briefly excited, and TAILs becoming WIREs ensures that information spreads only in one direction. Finally, the conditions when WIREs become HEADs are easy enough to induce that information can be generated and broadcast through the CA quickly and in large amounts. All these help CA researchers design orderly, comprehensible CA configurations.

Wireworld's excitation rule is not unique among CAs, but it is nonetheless crucial to the way Wireworld works. It allows information to spread cheaply and quickly, but also controls the flow of information– whether it continues to spread or whether it stops. There are many examples of simple Wireworld components that control information in useful ways; the Owen Moore computer makes use of several of these.

How do I make a Wireworld instance?

What, seriously? Good on you!

The Wireworld Player supports two file types: .MCL, a common CA format which isn't very amateur-friendly, and .TXT, which you can modify in any text editor. Click here to see an example of a TXT file that the player supports.

A built-in Wireworld editor might be added to the player in the future.

Why did you build this?

CAs make great test subjects for code optimization strategies, and Wireworld is a CA that is fairly simple to put together— most of its cells never change, and the size of the grid never grows or shrinks.

I use the Wireworld Player as an ongoing test of performance optimization strategies, as a demonstration of the web's potential as a high-performance creative and experimental platform, and as my playground for layout, styling, and accessibility solutions. Its source code is available here.

If you have any questions, contact me and I'll get back to you.

Drop file to load