Loading
The matrix is not a palette or a control panel. It is a directional language for attraction, repulsion, pursuit, and structure.
Launch the simulation
0202 / 09The interaction matrix is the most powerful part of Particle Life and the easiest part to misread.
It presents twenty-five vertical sliders beneath five colored letters. At first glance it looks like an equalizer: move a bar up, get more of something; move it down, get less. That interpretation is close enough to encourage experimentation and wrong enough to make deliberate design difficult.
The matrix is not twenty-five independent intensity controls. It is a table of directional relationships.
Every cell completes a sentence:
Particle type in this row feels this force from the particle type in this column.
Once that sentence becomes automatic, the matrix stops being an interface and starts becoming a language.
Each switch edits one +0.90 matrix cell in the shipped cycle: row feels attraction from column. The reverse −0.40 flee relationship remains unchanged, matching a one-variable intervention.
The engine stores the matrix as matrix[myType][theirType]. “My type” selects the row because I am the particle whose velocity will change. “Their type” selects the column because they are the neighbor producing the force.
If the value at row A, column B is +0.9, A particles accelerate toward nearby B particles in the matrix zone. If row B, column A is -0.4, B particles accelerate away from nearby A particles.
Those are two different cells and two different facts.
Select a cell
A feels attraction from B.
+0.9
Rows feel; columns cause. Direction makes pursuit possible because A can chase B while B flees A.
The sign defines the relationship:
| Value | Meaning in the matrix zone | Typical effect |
|---|---|---|
+1.0 | Strong attraction | Rapid gathering or pursuit |
+0.1 | Gentle attraction | Loose cohesion |
0.0 | Neutral | Only the universal close-range repulsion remains |
-0.4 | Moderate repulsion | Avoidance or separation |
-1.0 | Strong repulsion | Violent exclusion |
The value does not override the inner repulsion zone described in Part 1. Even a +1.0 pair still pushes apart when it crosses inside βR. The matrix controls relationship; the force curve protects spacing.
If A ← B and B ← A have the same positive value, the relationship is reciprocal. Both types move toward each other. With sufficient friction they tend to form mixed structures around their preferred spacing.
If both values are negative, they mutually separate.
The interesting motion begins when the pair is asymmetric. Suppose:
A ← B = +0.9 A strongly approaches B
B ← A = -0.4 B moves away from AThe result is pursuit. A never reaches a static bond because B participates in the relationship differently. No “chase” behavior exists in the engine; chase is the name we give to the geometry produced by two unequal accelerations.
Extend that relation into a cycle—A approaches B, B approaches C, C approaches D, D approaches E, E approaches A—and every type follows something that is following something else. The loop has no endpoint. At scale, the unresolved pursuit becomes rotation.
Matrix principle: Symmetric values are good at making arrangements. Asymmetric values are good at making events.
The five diagonal cells—A from A, B from B, and so on—describe self-interaction.
A positive diagonal gives a type self-cohesion. Its particles gather with their own color, held apart by the universal inner zone. A negative diagonal makes members of the same type avoid one another. A zero diagonal leaves them with only close-range collision avoidance.
The diagonal is therefore the first place to look when a world forms color-separated islands. But it is not the whole explanation. An A island survives only in relation to the other four types. Strong cross-repulsion can sharpen its boundary; weak bridges can let two kinds of islands touch; a pursuing type can keep the whole region in motion.
Reading a matrix means moving between three scales:
The Galaxy preset makes the directional idea explicit:
A B C D E ← source type
A +0.1 +0.9 0.0 0.0 -0.4
B -0.4 +0.1 +0.9 0.0 0.0
C 0.0 -0.4 +0.1 +0.9 0.0
D 0.0 0.0 -0.4 +0.1 +0.9
E +0.9 0.0 0.0 -0.4 +0.1
↑
feeling typeEach type has gentle self-attraction at +0.1. More importantly, each row strongly attracts the next type and moderately repels the type chasing it. The five-step cycle cannot settle into a final ordering because the last relationship returns to the first.
The visible arms are not guaranteed by the matrix alone. They depend on the initial seed, particle density, force curve, friction, and time. But the matrix supplies the persistent directional contradiction that makes rotation possible.
Every square includes sign and value; color reinforces meaning but never carries it alone.
Cells aims for a different outcome. Its diagonal values range from +0.3 to +0.5, encouraging every color to gather with itself. Most cross-type values lie between -0.6 and -0.8, keeping those color regions separate.
If that were the entire matrix, the result would be isolated islands. Two reciprocal +0.2 bridges—A with B, and C with D—let selected islands touch. The system forms something closer to tissue: distinct regions with limited adhesion.
This preset also reveals why one metric cannot define success. Cells often moves slowly and reports high stability. In Galaxy, that would mean the pursuit has died. In Cells, settled structure is the intended result. The same average speed has different meaning under a different rule network.
Soup uses milder values and partial chase relationships:
The name “food chain” is descriptive, not literal. Nothing is consumed and no energy changes hands. But the asymmetry produces the spatial pattern of following and fleeing, with enough neutral or weak relationships to keep the world irregular.
Soup is useful when studying the difference between a closed cycle and an open chain. Galaxy distributes pursuit around all five types. Soup leaves loose ends and weakly coupled actors, so its motion is less globally synchronized.
Chaos uses ±0.9 off the diagonal and makes each pair inverted-symmetric:
matrix[i][j] = -matrix[j][i]Whenever one type approaches another, the reverse relationship pushes away with equal strength. There is no gentle self-cohesion to absorb the conflict. Every pair is a pursuit, and nearly every local arrangement contains incompatible directions.
Chaos is not a failed preset. Its success condition is persistent non-settlement. That is why the tuning gate exempts it from the cluster requirement applied to the structured presets.
The fastest way to learn the matrix is also the least spectacular: make a controlled change.
Randomizing many cells produces novelty, but it destroys explanation. If the world changes, you do not know which relationship mattered. Instead:
0.2 to 0.4, not the full range.The interface interpolates manual matrix changes over ten rendered frames. This is not part of the physics; it is a UX decision. An instant discontinuity makes the world appear to jump for no visible reason. The short transition lets the reorganization remain legible while still feeling immediate.
As soon as you edit a cell, the preset name becomes Custom. The label is a small but important piece of scientific honesty: you are no longer observing the canonical Galaxy or Cells rule set, even if you changed only one hundredth.
Set A ← B from +0.9 to 0. A no longer participates in the primary pursuit edge. Watch whether the global rotation weakens, fragments, or reorganizes around the remaining four links.
In Cells, move one strong cross-repulsion toward zero. You are not adding attraction; you are removing exclusion. Watch whether the two colors mix, merely touch more often, or remain separated because other relationships dominate.
In Soup, swap the signs of one asymmetric pair. The former pursuer becomes the one that flees. Observe whether the change stays local or redirects a longer chain of motion.
When a world is worth keeping, save it under My Discoveries or share its URL. Both features store the full matrix, particle count, preset label, and random seed, so the opening can be reproduced rather than remembered approximately.
The matrix defines what each encounter means. It does not determine how quickly time advances, how neighbors are found, how the world wraps, or why the same seed can replay the same opening. Those belong to the engine beneath the matrix.
That is where Part 3 begins.
More to read
The first version made only two things: singular clumps and expanding dust. One repulsion zone changed everything.
Fixed time, deterministic seeds, a toroidal world, and the spatial hash that lets two thousand particles remain an experiment.
The renderer is not decoration. It makes distance, motion, relationships, and failure legible without changing the physics underneath.