Creating a novel chaos game
The concept of self-organised criticality (SOC) was invented in the late 80s. The idea is that a system can naturally evolve towards a critical point and then stay there. The example first used to introduce the idea was called the sandpile model. The sandpile model is a cellular automata with each cell containing between 1 and 4 grains of sand. If a grain is added to a cell that already has 4 grains in it, it will topple and the sand grains will be distributed among its neighbours.
This criticality idea has been applied to many systems, most interestingly the brain. When you play with the sandpile model below, you will notice that some cascades will be small but others can be quite large and travel quite far. The idea is that when a neuron fires, the brain does not want it to trigger every other neuron in a brain, giving you a seizure, but it also would not be ideal if it only activated one or no other neurons. Instead, it has been proposed that the brain is in a state of self-organised criticality, where cascades of useful size can be caused by the firing of a single neuron. This has been challenged and it is now thought that the brain can be in sub or super-critical regimes depending on the activity level state of the brain, but the basic idea that the brain uses criticality has remained.
I had intended just to code up a sandpile model and have a play with it, but I decided to turn it into a two-player game. This is cool because this game has never existed before, the closest in terms of concept are games like candy crush (it’s no wonder this particular game has never been made before, it is not particularly fun).
I have enjoyed having friends and strangers see the game and hear what strategies they come up with.
Have a go at the game and see if you agree with the tactics others came up with.
The first thing people notice is they should add sand to the dark spots to cause them to cascade over. This is almost just comprehending the rules of the game but there may be some advanced situations where this is not the optimal move.
Then, people quickly realise that they should click on the longest contiguous dark area to cause the longest cascade. This seems to be usually true but occasionally the field updates in the course of the cascade, leading to much larger cascades then you would expect from only the contiguous area.
One person developed the heuristic that they should usually start by triggering an edge of a dark region, since this gives the maximal opportunity for a longer time dependent cascade. This is a really interesting tactic and demonstrates that the game could have a little more depth than first seems apparent.
In the late game cascades are usually much smaller, it becomes easier to see how the board will change after a cascade and instead of just clicking the longest cascade some saw that they should consider how long the cascade they are setting up for their opponent is.
I asked ChatGPT and it identified all the above tactics apart from the third one, which is quite impressive. It also threw in one which seems to mirror chess but does not actually have relevance here. GPT proposed players must control the centre, since these points have the maximal neighbours and so are most likely to cascade. If you were completely blind to the state of the board that may be a good strategy, but since there is no clear way to “control” territory in this game, it is an interesting idea but unhelpful.
I want to apply reinforcement learning to this game in the future. An AlphaGO but for sandpile. It will be fascinating to see where jumps in skill come from. I expect that it will take a while for it to learn the first simple tactics but once it does, it will be interesting to see how a superior robotic player does in a game where a lot but not everything is determined by the random chance of how the initial distribution of sand was arranged.
Till next time.
Thanks to Frances Lorenz for the background art, Stefan Colakovic for the playtesting and to all the other people I sprung this experiment on.
Comments ()