## What everyone sees

Strokes appear for everyone while they are drawn, and nothing is sent while nobody draws. Anyone
may erase anyone's stroke, as on a real whiteboard. A player who joins later sees the ink that was
already there, up to `lateJoinerBytes`, newest strokes first. `keepLeaversInk` decides whether a
player's ink stays when they leave.

## The settings

| Setting | On | Raise it for | Lower it for |
|---|---|---|---|
| `spacing` | `Pen` | Lighter traffic | Smoother lines |
| `sendInterval` | `Pen`, `Eraser` | Lighter traffic | Strokes that appear sooner for others |
| `eraseInterval` | `Eraser` | Lighter traffic | Quicker rubbing out |
| `lateJoinerBytes` | `PenWorld` | More ink for players who join later | Less to send when someone joins; 0 sends none |
| `inkLifetime` | `PenWorld` | Ink that stays longer; 0 keeps it | Ink that fades sooner |
| Ink lines | `PenWorld` | More strokes on screen at once | Less to draw |

The pen inspector shows about how much a pen sends while drawing with its own settings, and the
`PenWorld` inspector shows the same for the whole scene.

## Presets

The `PenWorld` inspector has three buttons that set every pen and eraser in the scene and the
late-joiner amount at once:

| Preset | Spacing | Send every | For players who join later | For |
|---|---|---|---|---|
| Light | 8 mm | 0.2 s | 16 KB | Busy instances |
| Balanced | 4 mm | 0.1 s | 64 KB | The defaults |
| Smooth | 2.5 mm | 0.05 s | 128 KB | Drawing worlds with few players |

From an editor script, `SyncPreset.Light.Apply(world, pens, erasers)` does the same.
