modular_aphelion/modules/graffiti/code/registry.dm 
| GRAFFITI_COMPOSITE_SHARE | Of each second, how many ms every painter's composites together may take, freehand sessions' and paint job steps alike. Past it they wait their turn in SSgraffiti's composite line, so with many painters each one's come further apart rather than time dilating. A typical one-tile composite takes 11-15 ms, so about ten painters keep the full spacing. Measured on one build (2026-10-20), it took a hundred freehand painters at the topic limit from 670 to 102 ms/s of composites and +57.2% to +3.0% time dilation, and twenty adversarial ones from +16.0% to +0.8%. |
|---|---|
| GRAFFITI_LOAD_SHARE | Percent of each tick the background load of the map's graffiti takes at most (load_yield()), so it spreads over the lobby without the server feeling it: a full map of adversarial art took about 22 s of work, about 90 s at this share. |
| GRAFFITI_COMPOSITE_LINE_GRACE | How long a painter waiting in SSgraffiti's composite line keeps its place without asking again, as one no longer due stops asking. SScustom_sprite_work asks for every waiting painter each tick it gets through its queue. |
| GRAFFITI_SAVE_DEBOUNCE | How long a map's graffiti file waits after a change before it is written. A full map of dense art takes about 300 ms to write (measured), so a minute; the round-end save and Shutdown() still write the last changes. |
| GRAFFITI_SHEET_STATES | Tile composites packed into one sprite sheet at load: of the packings whose sheet files stay within 256 KiB, the one with the fewest bytes a state, measured on worst-case art: 32 a sheet takes 1,791 bytes a state, largest sheet 113 KB; 64 takes 1,811, largest 225 KB; 128 reaches 448 KB. |
| GRAFFITI_CKEY_UNIQUE_CAP | Most unique arts one account keeps on one map: a tenth of GRAFFITI_MAP_UNIQUE_CAP. |
| GRAFFITI_MAP_READ_VERSIONS | The map file versions this server reads. Version 1's anchors may record wall rather than their surface, and its
placements the piece's name and description: loading converts the one and drops the other, and the next save writes
the file as GRAFFITI_MAP_VERSION. |
| GRAFFITI_DECODE_BUDGET | Most bytes, estimated, of decoded art a map's load keeps at once for its merges and sheets: about 400 dense one-tile arts. Art past it is decoded again where it is needed. Freed memory stays with the process, so this bounds what a load adds to the server's high-water mark. |
| /datum/json_savefile/custom_sprites/graffiti/map | A map's graffiti file, held to GRAFFITI_MAP_MAX_BYTES. |
| /var/SSgraffiti | The graffiti on the current map: the art and placements its file keeps, which of them show this round, and the sheet files they show from. |
Define Details
GRAFFITI_CKEY_UNIQUE_CAP 
Most unique arts one account keeps on one map: a tenth of GRAFFITI_MAP_UNIQUE_CAP.
GRAFFITI_COMPOSITE_LINE_GRACE 
How long a painter waiting in SSgraffiti's composite line keeps its place without asking again, as one no longer due stops asking. SScustom_sprite_work asks for every waiting painter each tick it gets through its queue.
GRAFFITI_COMPOSITE_SHARE 
Of each second, how many ms every painter's composites together may take, freehand sessions' and paint job steps alike. Past it they wait their turn in SSgraffiti's composite line, so with many painters each one's come further apart rather than time dilating. A typical one-tile composite takes 11-15 ms, so about ten painters keep the full spacing. Measured on one build (2026-10-20), it took a hundred freehand painters at the topic limit from 670 to 102 ms/s of composites and +57.2% to +3.0% time dilation, and twenty adversarial ones from +16.0% to +0.8%.
GRAFFITI_DECODE_BUDGET 
Most bytes, estimated, of decoded art a map's load keeps at once for its merges and sheets: about 400 dense one-tile arts. Art past it is decoded again where it is needed. Freed memory stays with the process, so this bounds what a load adds to the server's high-water mark.
GRAFFITI_LOAD_SHARE 
Percent of each tick the background load of the map's graffiti takes at most (load_yield()), so it spreads over the lobby without the server feeling it: a full map of adversarial art took about 22 s of work, about 90 s at this share.
GRAFFITI_MAP_READ_VERSIONS 
The map file versions this server reads. Version 1's anchors may record wall rather than their surface, and its
placements the piece's name and description: loading converts the one and drops the other, and the next save writes
the file as GRAFFITI_MAP_VERSION.
GRAFFITI_SAVE_DEBOUNCE 
How long a map's graffiti file waits after a change before it is written. A full map of dense art takes about 300 ms to write (measured), so a minute; the round-end save and Shutdown() still write the last changes.
GRAFFITI_SHEET_STATES 
Tile composites packed into one sprite sheet at load: of the packings whose sheet files stay within 256 KiB, the one with the fewest bytes a state, measured on worst-case art: 32 a sheet takes 1,791 bytes a state, largest sheet 113 KB; 64 takes 1,811, largest 225 KB; 128 reaches 448 KB.