Working with Unity
Scratchpads
Side Unity projects that let several agents build at once, each in its own editor, and how their work comes back into your game.
With one editor, agents wait in a queue: while one recompiles, the others wait, and a Play Mode run during someone else's recompile tells you nothing. A scratchpad gives each agent its own Unity, so they all build at once.
What a scratchpad is
A scratchpad is an empty Unity project with your project's Unity version, packages and ProjectSettings, without your scenes and art. It's stored in your project at .sspace/scratchpads/<id>, which is gitignored.
The app manages the scratchpads: it runs each one's editor and streams the selected one into the Scratchpads panel, which you open from New session (+). Agents create them through satura_exec and give each one a name. You can also watch them side by side in the panel's grid.
A scratchpad's first boot imports for minutes, like any new Unity project.
Why use one
- No queue. Every agent has its own editor, so compiles and Play Mode runs don't collide.
- Your game left alone. Experiments, and the stray prefabs they leave behind, stay in the scratchpad until the agent exports them.
- A quick try. Want to test something without touching your game? Spin one up.
Tune a scratchpad
Open a Tuner on any scratchpad and tune it live while the other agents keep building. Copy Changes goes to the agent working there.
Modes and players
Each scratchpad has its own Unity mode. One agent can grind in Headless NoGraphics while another streams in Normal. A stopped scratchpad keeps its mode.
A scratchpad also has its own multiplayer group: an agent can add clones to it the same way as to your project.
Bringing work home
When the work is done, the agent exports it. Export copies assets back into your project together with their .meta files and everything they reference by GUID, so references stay intact. It never replaces a file in your project unless the agent passes overwrite. Import works the same way in the other direction.
await scratchpad.export('water-shader', ['Assets/Shaders/Water'])
Review what came back in the Git panel before you commit it.
Stop and remove
A scratchpad's editor runs only while the Scratchpads panel is open. Its files stay until you remove it.
A scratchpad can be stopped, restarted, renamed or removed. Remove deletes its Library, Temp, Logs and obj folders and moves the rest to the Trash.
For agents
A scratchpad object has the same calls as unity, bound to its editor:
const pad = await scratchpad.create('water-shader', { mode: 'headless-graphics' })
await pad.exec('Print(Application.dataPath);')
await pad.play()
await pad.handles.call('DropCube')
await pad.tuner.open({ scene: true })
unity.at(path) gives the same calls for a scratchpad's folder. If the app isn't running, scratchpad calls fail with a clear message. The full API is in the engine's scratchpads guide.