To the uninitiated, Wireworld is a 2D cellular automaton, sort of a straight-laced adaptation to Conway's Game of Life.

It's like... Life on Rails. Most of the cells never change, and the ones that do never increase in population.

"Dead" cells stay dead.
All "tail" cells become "wire" cells.
All "head" cells become "tail" cells.
And all "wire" cells with one or two head neighbors get "excited" and become head cells.

So it all resembles circuitry to some extent.

Follow

You can imagine, this ruleset also makes Wireworld a great candidate for certain strategies of performance optimization.

ALL tails become wires. ALL heads become tails. ALL dead cells stay dead. The hardest initial problem to tackle is efficiently determining which wire cells become heads.

My decade-old implementation uses linked lists to represent these sets.

· · Web · 2 · 0 · 1

Wireworld Player was my little playground for experimenting with ways to optimize Flash code. Most of my methods have direct equivalents in the web stack nowadays.

Instead of writing "green threads", I can leverage actual multithreading through web workers. Instead of Alchemy opcodes, I might experiment with WebAssembly.

This stuff isn't actually all that ambitious.

The ambitious stuff— what I shied away from in 2010— is creating caches and invalidating them.

Most of the patterns in Wireworld are in a sort of lock-step rhythm with one another— not out of necessity, but for the convenience of building complex systems. Some folks build circuits that have a "period" of three or four— representing the spacing between electrons on a wire. The Wireworld computer has a period of six.

In theory, detecting these cycles and proving that they're permanent would allow me to replace regions of cells with simplified equivalents.

@rezmason Oh wow I had no idea you built the flash player?! I used it a LONG LONG time ago.

Are you making a SDL version? 0_o

@neauoire I could, but I'm going to tackle a web version first. I just recommended Wireworld to someone on Twitter who teaches a class, and then I thought, "but where are they going to find it?"

So wait, you used my Flash Wireworld player once? 😃 I should have taken it further! Plugged it into an OSC framework or something.

That said, the complexity of the computer design might have crystalized in me a belief that automata instancees are difficult to write. ORCA is proof I was too pessimistic!

@rezmason Awesome wireworld.
I am a big fan of that CA, I recently played with implementing it in Compute Shaders in 3D.

Implementing it in parallel processing was fun.

Was my experimentation grounds for voxel rendering techniques and figuring out what a 3D texture is.

Sign in to participate in the conversation
Merveilles

Merveilles is a community project aimed at the establishment of new ways of speaking, seeing and organizing information — A culture that seeks augmentation through the arts of engineering and design. A warm welcome to any like-minded people who feel these ideals resonate with them.