Field Life

particle life as a grid of concentrations
–fps0steps–mass1.0×zoom

Source code on GitHub · Slides · Talk on YouTube

How it works

Each color is a scalar field over the grid: one number per cell, saying how much of that color sits there. Every cell of every color is updated on the GPU each frame.

One step has two halves. First, each color's field is convolved with its own kernel. A kernel gives every cell within a fixed radius — a few dozen cells — a weight, and that weight depends only on how far the cell is from the middle. Two cells the same distance out always get the same weight, so the whole kernel is really one curve read off against distance. Convolving means: for every cell in the grid, add up that color's field over all the cells around it inside the radius, each one multiplied by the weight for its distance. The number that comes out says how much of that color is nearby, counted the way the kernel says to count it. The default curve is negative near zero distance and positive out at a ring, so the sum is largest when the color forms a hollow shell at the ring's distance instead of a solid blob.

The interaction matrix then mixes the colors. Entry M[c][d] is how strongly color c is pulled towards the amount of color d that its kernel just measured; negative entries push away instead. Adding those up over every d, multiplying by a global strength, and subtracting an amount proportional to how crowded the cell already is leaves one number per cell per color. Call it A: how much that color wants to be in that cell.

Second, the mass moves. Each cell splits its own contents among its nine neighbors, itself included, giving each a share proportional to eβA at that neighbor, with the nine shares scaled to sum to exactly one. Every unit that leaves a cell arrives at another, so the total per color never changes for the life of the run — the simulation only moves mass around, it cannot create or destroy it.

The matrix need not be symmetric, so M[c][d] and M[d][c] can disagree: red can chase green while green flees red. That asymmetry is where the chasing, orbiting and gliding come from.

Acknowledgements

The idea for this was born after Alex Rowe showed me his take on particle life, cip-life, which initializes the interaction matrix as a continuous CPPN-generated field. Then I had an inspiring discussion with Mundy Reimer and Sean Hardy about continuity and the concept of a field.

I am not completely sure this doesn't already exist — my Claude couldn't find references to similar projects.

Built on

  1. MaCE — the transport rule used here: each cell hands its mass to its nine neighbors in proportion to eβA, so mass is conserved by construction. Papadopoulos, V. & Guichard, E. (2025). MaCE: General Mass Conserving Dynamics for Cellular Automata. arXiv:2507.12306
  2. Particle Life — the interaction matrix and short-range repulsion, in its original swarm-of-dots form. Mohr, T., particle-life.com, after Ventrella, J., Clusters, ventrella.com/Clusters
  3. Lenia — the continuous cellular automaton lineage: kernels convolved with a field, fed through a growth function. Chan, B. W.-C. (2019). Lenia — Biology of Artificial Life. Complex Systems 28(3), 251–286. arXiv:1812.05433
  4. Flow-Lenia — the nearest relative: per-channel affinity, an anti-crowding term and mass conservation on a grid, via reintegration tracking rather than a softmax. Plantec, E., Hamon, G., Etcheverry, M., Chan, B. W.-C., Oudeyer, P.-Y. & Moulin-Frier, C. (2023). arXiv:2212.07906
  5. Non-reciprocal Cahn–Hilliard — the same asymmetric-matrix idea as continuum physics, where it produces traveling waves and “chasing” phases. Saha, S., Agudo-Canalejo, J. & Golestanian, R. (2020). Phys. Rev. X 10, 041009. arXiv:2005.07101

Cite this

@misc{fieldlife,
author = {Zhechev, Iliya},
title  = {Field Life: particle life as a grid of concentrations},
year   = {2026},
url    = {https://www.izhv.eu/field-life}
}

Zhechev, I. (2026). Field Life: particle life as a grid of concentrations. www.izhv.eu/field-life

Made at ALIFE 2026 by Iliya Zhechev August 2026 · work in progress · built with an LLM