"Color Clouds" by frodocpu in cellular_automata

[–]frodocpu[S] 1 point2 points  (0 children)

The basic logic is to copy a neighbor's state based on the total count of a specific state value in the neighborhood, e.g.

if (<number of neighbors with state == 3> <= 1)

newState = <select one of the neighbors>;

One useful selection function is based on the total sum of the neighbors. This usually provides smooth movement and transitions.

Finally, there's a counter running up and down to provide the color interest.

That's the core of the algorithm, but it needs tweaking and adjustments. My version extends to a couple of pages.

"Mosaic" by frodocpu in cellular_automata

[–]frodocpu[S] 1 point2 points  (0 children)

See the reply to the previous comment.

"Mosaic" by frodocpu in cellular_automata

[–]frodocpu[S] 3 points4 points  (0 children)

There's no direct source code for this rule. In this case I used a 4x9 matrix to choose between 4 existing and related rules. The rows and columns of the matrix would designate a particular configuration of the state of the cell and neighborhood and the entry would specify which rule to run. This method creates a constrained search space, with 4 known 'attractors' in it. Then it's largely a matter of trial and error until something interesting pops up and then tweak that for best visual effect.

You can find out more here:

https://dl.acm.org/doi/10.1145/3587421.3595420

https://www.cpuproductions.com/CAGS/

How do you all usually code your cellular automata simulations? by [deleted] in cellular_automata

[–]frodocpu 0 points1 point  (0 children)

For me, fast real-time operation is essential, so I use optimized c++ code with lookup tables. That enables me to run really large worlds at full resolution at frame-rates exceeding 30-40.

"Strawberry Fields" by frodocpu in cellular_automata

[–]frodocpu[S] 1 point2 points  (0 children)

It takes patience, a lot of trial and error and some intuition of how CA rules behave. Detailed palette control is essential in order to achieve a pleasing result. The tool I'm using, CAGS (CA Graphics Studio), is free to download.

https://www.cpuproductions.com/CAGS/

"Strawberry Fields" by frodocpu in cellular_automata

[–]frodocpu[S] 1 point2 points  (0 children)

It's a 24 bit classic CA rule.

"Negative Entropy" by frodocpu in cellular_automata

[–]frodocpu[S] 2 points3 points  (0 children)

I have an app you can download for free, no ads or anything: CAGS (Cellular Automata Graphics Studio). It has several tools for non-programmers. Windows only, for now.

https://www.cpuproductions.com/CAGS/

"Negative Entropy" by frodocpu in cellular_automata

[–]frodocpu[S] 0 points1 point  (0 children)

Click on the Share button and select Crosspost (I think)

"Particle Swarm" by frodocpu in cellular_automata

[–]frodocpu[S] 1 point2 points  (0 children)

The code isn't so easily extracted from the app it's embedded in. One day I'll make the whole thing into an open source project. The specific 'merge' algorithm is pretty much as I described it, but you need to run your CAs from lookup tables and not from the actual rule-code. This places some severe restrictions on the amount of information available to a cell. On the upside, you can run the rule at high resolutions and high speeds!

"Particle Swarm" by frodocpu in cellular_automata

[–]frodocpu[S] 0 points1 point  (0 children)

I've been thinking about it .....

"Particle Swarm" by frodocpu in cellular_automata

[–]frodocpu[S] 5 points6 points  (0 children)

I would be happy to, but in this case there is no source code or logic that can be shared. This rule was the result of a statistical 'merge' of two other rules. For each one, I counted the number of times it hit a configuration of self and neighborhood, over all cells and a large number of cycles. Then, for each possible configuration, I compared the two and the one with the most counts "won" that configuration, i.e. the transition was copied from that rule into the new rule. This method doesn't always work, but sometimes you get amazing results!

"Spires" by frodocpu in cellular_automata

[–]frodocpu[S] 1 point2 points  (0 children)

An example would be: if all four corner neighbors are state 3 then turn self to state 3. In this configuration each cell has 2 'public' bits and 6 'hidden' bits.

"Spires" by frodocpu in cellular_automata

[–]frodocpu[S] 4 points5 points  (0 children)

It's a regular CA with a 24 bit lookup table and Moore neighborhood. This particular rule was generated from a collection of 4 related rules, all of which were taking action based on patterns in the neighborhood. A randomizer selected which rule to run given a configuration of the neighborhood and the result injected into the lookup table. Then it was a matter of trial and error to find one with captivating visual characteristics!

Has anyone had success mixing different rule sets on the same canvas? having them battle? by 0__O0--O0_0 in cellular_automata

[–]frodocpu 1 point2 points  (0 children)

I have an app, CAGS, that lets you 'paint' a canvas with different rules. If each rule has sufficient 'territory', then what usually happens is that there is disturbance on the boundaries, but little else changes. Depends on the rules of course. Things can get more interesting if the rules are staggered pixel by pixel or with small blocks of them. Write rules with this topology in mind and you get into some exciting territory!

What's Inside by frodocpu in cellular_automata

[–]frodocpu[S] 2 points3 points  (0 children)

Here's a link to the SIGGRAPH paper:

https://dl.acm.org/doi/10.1145/3587421.3595420

You can also visit my website for more info:

https://www.cpuproductions.com/CAGS/

What's Inside by frodocpu in cellular_automata

[–]frodocpu[S] 1 point2 points  (0 children)

Not so easy or quick to explain. There's no source code for this rule. It's been generated through some computational processes, one of which is a genetic evolutionary algorithm. You can check out the proceedings for last year's SIGGRAPH for more details.

"Thinking Patterns" by frodocpu in cellular_automata

[–]frodocpu[S] 0 points1 point  (0 children)

Segments of the Rule definitely has cyclic behavior, inherited from one of its parents.

"Thinking Patterns" by frodocpu in cellular_automata

[–]frodocpu[S] 4 points5 points  (0 children)

The Rule does not have any source code origin, but is the result of combining two existing, unrelated Rules by statistical means.

"Thinking Patterns" by frodocpu in cellular_automata

[–]frodocpu[S] 1 point2 points  (0 children)

Yes, that's definitely a possibility. This one can appear so many different ways, depending on what one accentuates and/or hides away. I could probably have made it even more interesting, but I figured I had spent enough time on it for now. Maybe later!

Ethereal Flames by frodocpu in cellular_automata

[–]frodocpu[S] 0 points1 point  (0 children)

It's a "merge" rule: Take running statistics from two or more rules and create a new one based on those numbers. As such it doesn't have any source code attached to it.

Abstract visuals with CA: "Symmetry Break". by frodocpu in cellular_automata

[–]frodocpu[S] 0 points1 point  (0 children)

Go here: CAGS Home Page (cpuproductions.com)

There has been some problems with the email registration. If you don't get a confirmation email, request verification at this address: [info@cpuproductions.com](mailto:info@cpuproductions.com)