Plate I

Fluoddity

a field guide to a universe that only exists inside one GPU

as observed by Oops! All Paperclips

The hardest part is getting global parameters in the…

a room curated by Oops! All Paperclips — it renders live from their thread; when the thread grows, so does the room

“The hardest part is getting global parameters in the ballpark of something interesting. It can be tough to know what order of magnitude is right for global settings like drag, lateral-force or sensor gain. The right answers will depend heavily on your implementation. Fail case can look like this:”

— @all-paperclips.bsky.social, at the door

Fig. 1

The hardest part is getting global parameters in the ballpark of something interesting. It can be tough to know what order of magnitude is right for global settings like drag, lateral-force or sensor gain. The right answers will depend heavily on your implementation. Fail case can look like this:

collected 27 May 2026 · field notes →

Fig. 2

In general I'm just throwing around "x=slider*10"s and "y=slider*.0001"s for many global constants to see what happens. When starting from zero, I typically look at a sample of 64 randomly initialized behaviors at a time with ~10k particles per behavior. I'm trying to get something like this:

collected 27 May 2026 · field notes →

Fig. 3

Let's call these clumps of same-behavior particles 'cohorts'. In the above, random behaviors are showing diversity. There's movement and it's not all blurry gas. This is an example of maybe a less desirable state. It's too "cold" Most cohorts are doing nothing. The rest just kind of wander/clump.

collected 27 May 2026 · field notes →

Fig. 4

I think you'll find many settings have a strong effect on "temperature". These guys are too hot. Very little structure. Looks like brownian motion or something.

collected 27 May 2026 · field notes →

Fig. 5

This is what 64 randomly generated agent behaviors looks like on one of my saves. It's pretty hot, but there's tons of diversity. Once I find something like this. I'll stop touching the global parameters so much and focus on artificial selection to refine interesting finds.

collected 27 May 2026 · field notes →

Fig. 6

At this point I'll usually drop to 9, 16, or 25 cohorts depending on temp (Hotter environments need fewer, larger cohorts or they'll all mix) Here I tried selecting that vortex at the top middle of the previous video. This is pretty interesting, but quite hot.

collected 27 May 2026 · field notes →

Fig. 7

So down to 9 cohorts, each with a small mutation from the selected vortex thing, and there's this fascinating little triangle in the top left

collected 27 May 2026 · field notes →

Fig. 8

I'll do a few rounds of selection on this smaller grid, frequently rerolling uninteresting crops.

collected 27 May 2026 · field notes →

Fig. 9

Sometimes I'll fiddle with the global settings like so, but i usually revert the fiddles. Mostly I'm just tuning mutation rate for max diversity, selecting for "haven't seen _that_ before", and frequently rerolling mutations or backing up after a dead end.

collected 27 May 2026 · field notes →

Fig. 10

Eventually I'll go down to one cohort, set a middling mutation rate and just kind of browse. If something catches my eye, I'll save it or record it for you fine people.

collected 27 May 2026 · field notes →

Fig. 11

All the examples here are running at 600hz. I'll sometimes go up to 2khz update frequency but 1000-1300 is usually what I target. Adjusted depending on world size to maintain realtime performance.

collected 27 May 2026 · field notes →

Fig. 12

As far as specific parameters: trail_decay should probably be between 0.9 and 0.995 to start off, defined ~like this in your diffusion stage: new_trail = mix(new_deposits,diffused_old_trail,trail_decay); I typically have ~.6 particles per pixel of trail texture w/ sensor distance of ~5 trail pixels

collected 27 May 2026 · field notes →

Fig. 13

I like to set axial forces (accelerate/decelerate) pretty low relative to lateral/turning forces. Mostly a matter of taste, but I think it helps promote 'high local temp, low global temp' environments with dynamic motion that doesn't just zip right off the screen. Happy hunting!

collected 27 May 2026 · field notes →