paint is a physics engine
Third of three on player-authored worlds. The changelog is the leaderboard argues for the scoring; from lambdamoo to voyager covers the thirty-five years of people who tried. This one is about the cliff that killed all of them.
Two of the best creation systems ever shipped are Garry’s Mod’s Wiremod and Media Molecule’s Dreams.
Wiremod gives you gates and chips and wires you string between props, plus Expression 2 — a real language with a code editor, where a chip you write replaces a wall of wired arithmetic. Dreams gives you constructive solid geometry you sculpt by hand, a paint tool that snaps to surfaces, and logic gadgets you clip onto objects to make a door open or define how something behaves, all on a gamepad, with no text anywhere.
Both work. Both produced enormous bodies of real player work. And almost nobody who is fluent in one is fluent in the other.
That split gets explained as a fact about people — some of us are programmers and some of us are artists, and tools should serve one or the other. It isn’t a fact about people. It’s an artifact of how both systems decided what counts as authoring.
the cliff is the whole story
Every attempt at letting players author a live world has died in the same place, and it isn’t the sandbox and it isn’t the servers.
Robot Odyssey shipped in 1984. You wire logic chips inside the fiction, package circuits into reusable chips, and test them in a lab. It is the acknowledged ancestor of everything Zachtronics has made, and it is routinely called the hardest educational game ever built. The design was right. The entry cost ate it.
LambdaMOO had users writing object-oriented code inside a running world in 1990 — a small priesthood of them, with a much larger population living in what the priesthood made. Second Life had LSL and a creator economy, and the same ratio. Screeps asks for JavaScript before you can play at all. Space Engineers hides its programmable block behind experimental mode, and the scripts live on the Workshop because writing your own means learning the C# API.
Meanwhile LittleBigPlanet and Dreams got people who have never typed a semicolon to make things other people played — and stopped short of a persistent shared world with anything at stake.
The interesting version of this genre has never had both halves at once, and everyone has treated that as a constraint rather than a bug in the tooling.
make the paint physical
Here’s the move, and it’s smaller than it sounds.
Stop treating appearance and mechanism as different kinds of thing. A pigment is not a colour value. A pigment is a recipe over refined inputs that yields a surface with mass, friction, conductivity, and emissivity — actual properties the solver reads.
Now follow what that does. Emissivity means the paint participates in light transport. Friction means a machine built out of it behaves differently than the same machine in another colour. Conductivity means the paint is part of the circuit.
A player who only ever mixes pigment is authoring physics, in the small, whether or not anyone tells them so. They are not in a beginner mode or a training area. They are working at the shallow end of the same system a person writing a solver is working at, and their work shows up in other people’s machines.
That gives you a ladder with no rung missing:
- material — a recipe. Minutes. No code.
- part — geometry, behaviour, and a list of typed ports. Tens of lines, or a wired graph.
- assembly — parts chained through those ports. A machine, a building, a district. Composition, not text.
- field — a physical relation bound to a volume. Gravity that falls off differently, a medium with authored viscosity, a light model somebody wrote. Local law.
One verb the whole way up: define it, fabricate it, put it somewhere. What changes across the ladder is how much you have to say, not what kind of act it is. Nobody is locked out at the bottom and nobody hits a ceiling at the top, because there is no seam between the beginner tool and the real one. There is only one tool.
fabricate, don’t upload
The other half is that authoring has to happen in the world, at a machine, with materials.
An upload button is the wrong interface for this and not for UX reasons. A fabricator that consumes a bill of materials, draws power, and occupies itself for a measured span gets you four things free:
Authoring is rate-limited by physics. You can’t iterate forty times an hour on a physics field, because printing one costs weeks of machine time and a supply chain. What you ship is what you thought about.
Authoring is visible. A large fabricator running for four days is a landmark. People walk past it, ask what it is, and occasionally try to stop you.
Workshops are worth defending. Materials in a hopper, a definition mid-print, a queue — all of it capturable. Conflict gets a reason to exist that isn’t a scoreboard.
The compile error becomes set dressing. A definition the verifier can’t bound is a machine refusing to print, in-world, with a stated reason. The most alienating artifact in programming turns into a thing that happens to your character.
the part where it doesn’t blow up
Letting players write imperative code that runs inside the physics solver is a catastrophe. Unbounded compute on the hot path every tick, determinism gone, and a code execution surface sitting in the middle of the simulation loop. Screeps shipped a remote code execution path through a modified console.log and its community had been building tooling on top of the hole for years. That’s the genre’s standing failure and it is not rare.
So the top of the ladder is declarative. You don’t write a step function; you declare a relation over quantities the solver already tracks, plus a budget, plus which of the engine’s invariants you intend to break inside your volume. The engine compiles that into a bounded operator it schedules itself. No loops, no allocation, no entropy, no wall-clock, provable per-tick ceiling, refused at the fabricator if the verifier can’t bound it.
The reason to believe this is expressive enough: Ludii’s game description language has been proven universal over finite games while remaining a context-free grammar. Statically analyzable and genuinely expressive is a design discipline, not a contradiction.
And a declaration has a second use. If authors must state what their thing promises — what it conserves, where it’s continuous, what it can take — then those promises are falsifiable, and the world can tell you whose promise turned out to be wrong. That is the whole basis for scoring any of this.
what you get
Where two authored things meet, nobody specified the meeting.
Two fields overlap and the composition order is resolved by a rule neither author read. A part holds together inside a damping volume and shears at the boundary. A pigment’s emissivity makes somebody’s light model produce energy.
None of those are studio bugs. They’re consequences of composition, and there is a new one every time anybody publishes anything. A studio’s supply of mistakes is a fixed number that only goes down. The supply of seams grows with the catalogue — faster than the catalogue, because it’s pairs.
Eco settled the part people doubt most, which is whether any of this can be binding rather than advisory. Its players propose, debate and pass laws, and the server enforces them: if the government caps you at ten trees a day, the eleventh is refused. Player-authored rules, mechanically real. Eco stopped at social law. There’s no reason to stop there.
The cliff was never about difficulty. Writing a physics relation is hard and should be, the same way a grandmaster’s opening prep is hard — that’s the deep end and deep ends are fine.
The cliff was that every system built so far put a wall between the people making it look like something and the people making it do something, then shipped two different tools and wondered why only one room ever filled up.
Make the paint physical and there is no wall. There’s a shallow end, and it’s the same water.
Sources: Robot Odyssey ↗ · Robot Odyssey: the hardest computer game of all time, Slate ↗ · LambdaMOO ↗ · Space Engineers: Programmable Block ↗ · Screeps: How a game about programming exposed thousands of players to remote code execution, Isaac King ↗ · Eco wiki: Laws ↗ · Eco wiki: Government ↗ · Ludii’s game description language is universal, Browne et al. ↗