Be sure to watch in 720p/1080p only. The video is rendered at 60fps, with a 1:6 pixel zoom.
VIDEO: https://www.youtube.com/watch?v=4fVN1nA4MWQ
I've never seen something so similar to molecular physics occur as the emergent property of a totalistic rule.
The whole simulation is performed with Integer arrays (it is discrete, not continuous), meaning there is no rounding errors, loss of accuracy or any sort of floating point arithmetic.
For the same environment, starting state, rule and neighbourhood, the simulation will be deterministic, and perfectly identical across all systems and implementations for all calculated world-states.
- - - -
What I've found out about the emergent structures:
- The 'atoms' can be formed from a uniform-distribution random initial configuration. Specifically, 1/7 chance to set the cell to 1, using java.util.Random.nextInt()
- They can bind to each other, preferring orthogonal binding sites, but are capable of binding at any angle
- They can repel each other, and formed molecule chains will repel outsiders easier (a form of cooperation)
- They can send ripples of chaotic energy to flow between them and their neighbours, and if the chaos is too strong it can destabilise and kill overwhelmed atoms
- The atoms and molecules will slowly perform a random walk, eventually causing collisions and interactions
- The atoms appear to be in a state of constant rotation that affects the whole atomic structure
- It is possible to guide/steer/direct the atom's movements by placing small (2x2 - 7x7) blocks within the reach of the atom. It will be attracted to the new block, consume it, and move towards its location!
- - - -
Image Additionals:
- Captured clipboard data of a lone atom, and pair of atoms, directly revealing the 'values' of each cell ([1]): - Two 'Editor' windows showing the configuration of the Rule and Neighbourhood used in the algorithm: - - - -
Source/Runnable:
https://github.com/InfiniteSearchSpace/ ... stic-Gen-4
Import Codes:
- Rule:
Code: Select all
:0,19,0,:101,999,0,:20,24,1,:51,100,1,:24,58,0,:0,11,0,Code: Select all
:-10,-1,0,:-10,0,0,:-10,1,0,:-9,-4,0,:-9,-3,0,:-9,-2,0,:-9,2,0,:-9,3,0,:-9,4,0,:-8,-6,0,:-8,-5,0,:-8,5,0,:-8,6,0,:-7,-7,0,:-7,-2,0,:-7,-1,0,:-7,0,0,:-7,1,0,:-7,2,0,:-7,7,0,:-6,-8,0,:-6,-4,0,:-6,-3,0,:-6,3,0,:-6,4,0,:-6,8,0,:-5,-8,0,:-5,-5,0,:-5,-1,0,:-5,0,0,:-5,1,0,:-5,5,0,:-5,8,0,:-4,-9,0,:-4,-6,0,:-4,-3,0,:-4,-2,0,:-4,2,0,:-4,3,0,:-4,6,0,:-4,9,0,:-3,-9,0,:-3,-6,0,:-3,-4,0,:-3,-1,0,:-3,0,0,:-3,1,0,:-3,4,0,:-3,6,0,:-3,9,0,:-2,-9,0,:-2,-7,0,:-2,-4,0,:-2,-2,0,:-2,2,0,:-2,4,0,:-2,7,0,:-2,9,0,:-1,-10,0,:-1,-7,0,:-1,-5,0,:-1,-3,0,:-1,-1,0,:-1,0,0,:-1,1,0,:-1,3,0,:-1,5,0,:-1,7,0,:-1,10,0,:0,-10,0,:0,-7,0,:0,-5,0,:0,-3,0,:0,-1,0,:0,1,0,:0,3,0,:0,5,0,:0,7,0,:0,10,0,:1,-10,0,:1,-7,0,:1,-5,0,:1,-3,0,:1,-1,0,:1,0,0,:1,1,0,:1,3,0,:1,5,0,:1,7,0,:1,10,0,:2,-9,0,:2,-7,0,:2,-4,0,:2,-2,0,:2,2,0,:2,4,0,:2,7,0,:2,9,0,:3,-9,0,:3,-6,0,:3,-4,0,:3,-1,0,:3,0,0,:3,1,0,:3,4,0,:3,6,0,:3,9,0,:4,-9,0,:4,-6,0,:4,-3,0,:4,-2,0,:4,2,0,:4,3,0,:4,6,0,:4,9,0,:5,-8,0,:5,-5,0,:5,-1,0,:5,0,0,:5,1,0,:5,5,0,:5,8,0,:6,-8,0,:6,-4,0,:6,-3,0,:6,3,0,:6,4,0,:6,8,0,:7,-7,0,:7,-2,0,:7,-1,0,:7,0,0,:7,1,0,:7,2,0,:7,7,0,:8,-6,0,:8,-5,0,:8,5,0,:8,6,0,:9,-4,0,:9,-3,0,:9,-2,0,:9,2,0,:9,3,0,:9,4,0,:10,-1,0,:10,0,0,:10,1,0,[1] : The rule does not care about the variable value of any cell within its neighbourhood. The rule only checks whether the cell is 0, or Not-0. When growths occur, the cell is *incremented* rather than set to 1, which allows the colour scheme to show the comparative 'weight' or 'growth age' of each cell.
- - - -
Thoughts?