Height map based automata

For discussion of other cellular automata.
Post Reply
Goutte
Posts: 2
Joined: June 8th, 2024, 2:34 am

Height map based automata

Post by Goutte »

A height map contains one real (float) value for each cell, and is provided as a sort of invariant fixture/environment for the automaton.

It can be thought of as the map of the altitude of each cell.
Some Perlin noise that provides terrain looking like a bunch of hills works great.


Example: Sisyphus

The story of Sisyphus pertains to someone rolling a boulder up a hill only for it to roll down once at the top.
To simplify the model, we consider that sisyphus climbs hills and the boulder rolls down, instead of having one push the other.

This ruleset is heavily inspired by Wireworld.

Nothing -> Sisyphus
if it has at least one SISYPHUS neighbor that's lower

Sisyphus -> Nothing
if it has at least one NOTHING neighbor that's higher

Sisyphus -> Boulder
if it has no neighbor that's higher

Nothing -> Boulder
if it has at least one BOULDER neighbor that's higher

Boulder -> Nothing
if it has at least one NOTHING neighbor that's lower

Boulder -> Sisyphus
if it has no neighbor that's lower

Works "best" (æsthetically?) with :
  • Strict height conditions, meaning that height equality is rejected.
  • Von Neumann neighborhood (4 adjacent cells)
I have so many questions !

Is there a way to use the forum viewer to represent such automata ?

Is it possible to express the rules as one of them short, sweet & arcane strings ? (like b3s23 ?)

What are the keywords I'm missing to find previous work about such automata ? (height map, environment, fixtures, ?)

I've explored dozens of variations, but there's so much more to explore !

I'm not uploading a preview image as per forum rules, but here's a link to a game (there's a HTML5 build) that runs the Sisyphus automaton in the background of its main menu. (you don't need to play the game to see it)
Please forgive the game quality if you end up playing it, it's the very first build, it's a jam, and I got totally sidetracked by automata – I'm sure most of you know what it feels like to fall in the depths of this marvelous discipline.
User avatar
confocaloid
Posts: 6697
Joined: February 8th, 2022, 3:15 pm
Location: learn to protect yourself against stray gliders and sparks and self-destruct mechanisms

Re: Height map based automata

Post by confocaloid »

Goutte wrote: June 8th, 2024, 3:54 am A height map contains one real (float) value for each cell, and is provided as a sort of invariant fixture/environment for the automaton.

It can be thought of as the map of the altitude of each cell.
Some Perlin noise that provides terrain looking like a bunch of hills works great.
[...]
Is there a way to use the forum viewer to represent such automata ?
[...]
If I understand right, in the example above there are three types of cells ("Nothing", "Sisyphus", "Boulder"), the cell's type can change during evolution, and additionally each cell has a real-valued height that doesn't change during evolution and can be chosen independently from the type of the cell.

I think it is possible to implement an "approximate" version of such CA (where the height is made integer-valued instead) in the form of a RuleLoader ruletable that can be loaded into Golly/LifeViewer. The state of a cell with height H and type T could be encoded by the number (3 H + T), where H could range from 0 through 84, and T would range from 0 through 2 (T = 0 means "Nothing", T = 1 means "Sisyphus", T = 2 means "Boulder"). Then the rules defining the behaviour of the CA can be written one-by-one, in terms of the resulting cellstate values.
127:1 B3/S234c User:Confocal/R (isotropic CA, incomplete)
Unlikely events happen.
My silence does not imply agreement, nor indifference. If I disagreed with something in the past, then please do not construe my silence as something that could change that.
User avatar
unname4798
Posts: 2570
Joined: July 15th, 2023, 10:27 am
Location: Near ConwayLife servers

Re: Height map based automata

Post by unname4798 »

confocaloid wrote: June 8th, 2024, 8:06 am
Goutte wrote: June 8th, 2024, 3:54 am A height map contains one real (float) value for each cell, and is provided as a sort of invariant fixture/environment for the automaton.

It can be thought of as the map of the altitude of each cell.
Some Perlin noise that provides terrain looking like a bunch of hills works great.
[...]
Is there a way to use the forum viewer to represent such automata ?
[...]
If I understand right, in the example above there are three types of cells ("Nothing", "Sisyphus", "Boulder"), the cell's type can change during evolution, and additionally each cell has a real-valued height that doesn't change during evolution and can be chosen independently from the type of the cell.

I think it is possible to implement an "approximate" version of such CA (where the height is made integer-valued instead) in the form of a RuleLoader ruletable that can be loaded into Golly/LifeViewer. The state of a cell with height H and type T could be encoded by the number (3 H + T), where H could range from 0 through 84, and T would range from 0 through 2 (T = 0 means "Nothing", T = 1 means "Sisyphus", T = 2 means "Boulder"). Then the rules defining the behaviour of the CA can be written one-by-one, in terms of the resulting cellstate values.
The RuleLoader rule can also be 1D. There are 4 states.
None, "Nothing", "Sisyphus", "Boulder".
Higher is to the left, lower is to the right.
User avatar
pifricted
Posts: 1146
Joined: May 25th, 2024, 10:26 am
Location: Click here to set your location

Re: Height map based automata

Post by pifricted »

Hmmm...
Goutte wrote: June 8th, 2024, 3:54 am
[...]

Nothing -> Sisyphus
if it has at least one SISYPHUS neighbor that's lower

Sisyphus -> Nothing
if it has at least one NOTHING neighbor that's higher

Sisyphus -> Boulder
if it has no neighbor that's higher

Nothing -> Boulder
if it has at least one BOULDER neighbor that's higher

Boulder -> Nothing
if it has at least one NOTHING neighbor that's lower

Boulder -> Sisyphus
if it has no neighbor that's lower

[...]
I think the “Nothing neighbor” means “the cell higher(or lower ) than ground without Boulder or Sisyphus”.

Hmmmm...Sisyphus has four or eight pairs of arms because he can push many Boulders in one go.

It is explosive.
...is enjoying his teenage time.
User avatar
breaker's glider gun
Posts: 730
Joined: May 23rd, 2021, 10:26 am
Location: the inside of a stuffed anaconda or maybe [click to not expand]

Re: Height map based automata

Post by breaker's glider gun »

Or... you could just use ready. Make chemical "a" 0/sisyphus/boulder* and chemical "b" be height, and maybe chemical "c" to view what's going on.

*you could even use the float value to tell the direction of movement, if you don't want it to explode.
:?: :?: . . . :!:
Give me a suggestion of something interesting to draw here!
Goutte
Posts: 2
Joined: June 8th, 2024, 2:34 am

Re: Height map based automata

Post by Goutte »

Thank you all for the savant replies.
breaker's glider gun wrote: June 9th, 2024, 8:41 am Make chemical "a" 0/sisyphus/boulder* and chemical "b" be height, and maybe chemical "c" to view what's going on.
So that's how they generically categorized multi-layered automata : chemicals ! Thanks, this word's pretty handy.
pifricted wrote: June 9th, 2024, 3:12 am I think the “Nothing neighbor” means “the cell higher(or lower ) than ground without Boulder or Sisyphus”.
Exactly right ; please forgive my ambiguous definition, I'm quite new to this.
confocaloid wrote: June 8th, 2024, 8:06 am If I understand right, in the example above there are three types of cells ("Nothing", "Sisyphus", "Boulder"), the cell's type can change during evolution, and additionally each cell has a real-valued height that doesn't change during evolution and can be chosen independently from the type of the cell.
That's it. In my shader implementation, "Nothing" is what's neither "Boulder" nor "Sisyphus", but that's just for practical purposes, so I can "prettify" the initial fixtures that kickstart the automaton, and let the automaton "eat" those extra, decorating pixels, as if they were nothing.
pifricted wrote: June 9th, 2024, 3:12 am Hmmmm...Sisyphus has four or eight pairs of arms because he can push many Boulders in one go.
It is explosive.
It is explosive, but a carefully crafted height map with "plateau"s (adjacent cells with identical height) can "contain" the automaton, or even shape it.
I'm observing that eventually the automaton stabilizes in an endless loop, but that's inevitable in finite terrains due to the determinism of the automaton.

On plateaus, Sisyphus and Boulder will alternate on each tick, due to the strict nature of height comparisons.
I tried various tweaks to the automaton to try and mitigate the phenomenon (make it less epileptic), but what worked best for me was to carefully craft a height map without plateaus, or just very little.
unname4798 wrote: June 8th, 2024, 12:18 pm The RuleLoader rule can also be 1D. There are 4 states.
None, "Nothing", "Sisyphus", "Boulder".
Higher is to the left, lower is to the right.
I'm sorry, I tried, but I don't get it. What's the purpose of None ?

breaker's glider gun wrote: June 9th, 2024, 8:41 am you could even use the float value to tell the direction of movement, if you don't want it to explode
Oooooh… Juicy ! I've implemented Langton's Ant just yesterday, so I happen to have the shader toolkit for this.
I guess it will require a little more effort when crafting the initial fixtures, though. We'll see.
User avatar
pifricted
Posts: 1146
Joined: May 25th, 2024, 10:26 am
Location: Click here to set your location

Re: Height map based automata

Post by pifricted »

Goutte wrote: June 9th, 2024, 9:41 am ...
It is explosive, but a carefully crafted height map with "plateau"s (adjacent cells with identical height) can "contain" the automaton, or even shape it.
I'm observing that eventually the automaton stabilizes in an endless loop, but that's inevitable in finite terrains due to the determinism of the automaton.

On plateaus, Sisyphus and Boulder will alternate on each tick, due to the strict nature of height comparisons.
I tried various tweaks to the automaton to try and mitigate the phenomenon (make it less epileptic), but what worked best for me was to carefully craft a height map without plateaus, or just very little.

...
I'm sorry, I tried, but I don't get it. What's the purpose of None ?
The “None” is the state 0 cell in CAs.In Life,it means “dead cell”.In this CA ,it means “the ground”

In many explosive rule ,the patterns always live a long time in a loop room.

Code: Select all

x = 20, y = 20, rule = B2/S:T20,20
o4b3obo2b3o2b2o$obobobobob2ob2o3b2o$o4b2ob4ob2obob2o$5o2bo4bobo2b2o$3b
o4bob4ob2obo$3b2ob3o2b2o3bobo$o4b3ob3ob3obo$2o2bo2b2o3bobo2b2o$4bo3b3o
bo2bo3bo$bob5o4bo3bo2bo$b2obobo2bo2b4obobo$obobo5bo4b2obo$4b3ob5obo2b
2o$2o2bo6bo3b5o$3o4bobo2b2obobo$3bob2obo4b3obobo$2obo3bo2bobobo2b3o$2o
b2obo3b2o2bobobo$5b3o2bo8bo$2o2b3ob2o4b4o!

Code: Select all

x = 20, y = 20, rule = Iceballs:T20,20
o4b3obo2b3o2b2o$obobobobob2ob2o3b2o$o4b2ob4ob2obob2o$5o2bo4bobo2b2o$3b
o4bob4ob2obo$3b2ob3o2b2o3bobo$o4b3ob3ob3obo$2o2bo2b2o3bobo2b2o$4bo3b3o
bo2bo3bo$bob5o4bo3bo2bo$b2obobo2bo2b4obobo$obobo5bo4b2obo$4b3ob5obo2b
2o$2o2bo6bo3b5o$3o4bobo2b2obobo$3bob2obo4b3obobo$2obo3bo2bobobo2b3o$2o
b2obo3b2o2bobobo$5b3o2bo8bo$2o2b3ob2o4b4o!

Code: Select all

x = 20, y = 20, rule = B34/S34:T20,20
o4b3obo2b3o2b2o$obobobobob2ob2o3b2o$o4b2ob4ob2obob2o$5o2bo4bobo2b2o$3b
o4bob4ob2obo$3b2ob3o2b2o3bobo$o4b3ob3ob3obo$2o2bo2b2o3bobo2b2o$4bo3b3o
bo2bo3bo$bob5o4bo3bo2bo$b2obobo2bo2b4obobo$obobo5bo4b2obo$4b3ob5obo2b
2o$2o2bo6bo3b5o$3o4bobo2b2obobo$3bob2obo4b3obobo$2obo3bo2bobobo2b3o$2o
b2obo3b2o2bobobo$5b3o2bo8bo$
...is enjoying his teenage time.
Post Reply