code/__DEFINES/~aphelion_defines/graffiti.dm 
| GRAFFITI_MAX_LAYERS | Most layers one graffiti piece holds. |
|---|---|
| GRAFFITI_MAX_LAYER_NAME | Longest layer name, in characters. |
| GRAFFITI_MAX_NAME | Longest piece name, in characters. |
| GRAFFITI_MAX_DESCRIPTION | Longest piece description, in characters. |
| GRAFFITI_WIDTH | Width of a piece that covers one tile. |
| GRAFFITI_WIDE_WIDTH | Width of a piece that covers two tiles side by side. |
| GRAFFITI_HEIGHT | Height of every piece. |
| GRAFFITI_MAX_COLORS | Most colours one piece's palette may hold: as many as one grid character can index. |
| GRAFFITI_ALPHA_CEILING | The most alpha placed graffiti is drawn with, 80%, so the surface shows through: a colour this opaque or more is stored opaque, and opaque paint is drawn at it. |
| GRAFFITI_LIBRARY_CAP | Most pieces an account's library keeps, besides its Unfinished slot. |
| GRAFFITI_STACK_CAP | Most pieces stacked on one tile. A full stack refuses new paint. |
| GRAFFITI_COST | Spraycan charges a finished piece costs, halved for taggers. |
| GRAFFITI_COMPOSITE_SHARE_BURST | How many ms of composites may build up for a burst. |
| GRAFFITI_REVEAL_STRIP | Width of the column strip one paint job step reveals, in pixels. |
| GRAFFITI_MISS_LIMIT | Rounds in a row a placement may miss its surface: the last of them drops it. |
| GRAFFITI_PIECE_MAX_BYTES | Size limit of one exported or imported piece. |
| GRAFFITI_LIBRARY_WRITE_PACE | A player's library write waits this many times as long as the account's last write took, and at least a second, so one account's writes take at most a twentieth of the server's time: 50 adversarial pieces take 139 ms to write on average and 209 ms at most (measured), 14-21% of the time at one write a second. |
| GRAFFITI_MAP_MAX_BYTES | Size limit of a map's graffiti file. |
| GRAFFITI_MAP_DIRECTORY | Where each map's graffiti file lives. |
| GRAFFITI_SHEET_DIRECTORY | Where each map's sprite sheet files live, in a directory per map. |
| GRAFFITI_LIBRARY_DIRECTORY | Where each account's library file lives. |
| GRAFFITI_MAP_UNIQUE_CAP | Most unique arts one map file keeps: 2,000 dense art records of 3,670 bytes take 7.3 MB, as measured, and a sparse one takes 680 bytes. |
| GRAFFITI_MAP_PLACEMENT_CAP | Most placements one map file keeps: 4,000 placements packed as JSON strings take about 1.2 MB (measured on a full map), and their decals at 2,261 bytes each 9 MB at worst. With the arts (at most about 5.4 MB under GRAFFITI_MAP_ART_BYTES) and the GRAFFITI_ICON_CACHE caches (1.5 MB) that is about 17 MB at worst, besides the placement indexes (not measured), since sheet files keep every other icon at 0 bytes of server memory; a load adds GRAFFITI_DECODE_BUDGET while it runs. |
| GRAFFITI_MAP_ART_BYTES | Most bytes of art one map keeps, counting each unique art's pal, grid and glow text: about 1,500 dense
one-tile arts, or 400 translucent ones of 1,000 colours at 12-14 KB a tile, while typical art meets
GRAFFITI_MAP_UNIQUE_CAP first. The owner's ruling (2026-10-20) halved it from 10 MiB, which takes the worst case at
the caps from about 22.5 to 17 MB; 10 MiB of art and 4,000 placements wrote about 13.5 MB, so 5 MiB writes about
8 MB. Both new figures are worked out from the measured ones at 10 MiB. |
| GRAFFITI_DISPLAY_BUDGET | Most unique arts shown in one round: everything within the map caps. Ranking still orders evictions and loading. |
| GRAFFITI_CKEY_PLACEMENT_CAP | Most placements one account keeps on one map: a tenth of GRAFFITI_MAP_PLACEMENT_CAP. |
| GRAFFITI_FORMAT | The format every piece file carries. A file with any other is refused. |
| GRAFFITI_FORMAT_VERSION | The piece file version this server writes and accepts. |
| GRAFFITI_MAP_VERSION | The map file version this server writes: anchors record their surface, and placements carry no name or description. |
| GRAFFITI_ANCHOR_STATION | Anchor kind of a placement on a fixed station tile. |
| GRAFFITI_ANCHOR_RESERVED | Anchor kind of a placement in reserved space, such as a condo. |
| GRAFFITI_KIND_WALL | graffiti_surface_kind() of a wall. Anchors keep the kind as their surface, and decals as their kind. |
| GRAFFITI_KIND_FLOOR | graffiti_surface_kind() of a floor with ground. |
| GRAFFITI_KIND_WINDOW | graffiti_surface_kind() of a tile under a full-tile window fastened down, whose graffiti is on the glass. |
| GRAFFITI_ADMIN_PAGE | Placements per page of the admin panel. |
| GRAFFITI_GLOW_NONE | graffiti_art_glow_kind() of an art with no glowing paint. |
| GRAFFITI_GLOW_ALL | graffiti_art_glow_kind() of an art whose paint all glows. |
| GRAFFITI_GLOW_MIXED | graffiti_art_glow_kind() of an art with both glowing and unlit paint. |
| GRAFFITI_INFO_CKEY | A placement's ckey, in its SSgraffiti.placement_info entry. |
| GRAFFITI_INFO_ART | A placement's art hash, in its SSgraffiti.placement_info entry. |
| GRAFFITI_INFO_AT | When a placement was placed, in its SSgraffiti.placement_info entry: ten-digit unix seconds in text. |
| GRAFFITI_INFO_PID | A placement's id, in its SSgraffiti.placement_info entry. |
| GRAFFITI_INFO_WHO | A placement's painter's character name, in its SSgraffiti.placement_info entry. |
| GRAFFITI_INFO_ROUND_ONLY | Whether a placement lasts this round only, in its SSgraffiti.placement_info entry. |
Define Details
GRAFFITI_ADMIN_PAGE 
Placements per page of the admin panel.
GRAFFITI_ALPHA_CEILING 
The most alpha placed graffiti is drawn with, 80%, so the surface shows through: a colour this opaque or more is stored opaque, and opaque paint is drawn at it.
GRAFFITI_ANCHOR_RESERVED 
Anchor kind of a placement in reserved space, such as a condo.
GRAFFITI_ANCHOR_STATION 
Anchor kind of a placement on a fixed station tile.
GRAFFITI_CKEY_PLACEMENT_CAP 
Most placements one account keeps on one map: a tenth of GRAFFITI_MAP_PLACEMENT_CAP.
GRAFFITI_COMPOSITE_SHARE_BURST 
How many ms of composites may build up for a burst.
GRAFFITI_COST 
Spraycan charges a finished piece costs, halved for taggers.
GRAFFITI_DISPLAY_BUDGET 
Most unique arts shown in one round: everything within the map caps. Ranking still orders evictions and loading.
GRAFFITI_FORMAT 
The format every piece file carries. A file with any other is refused.
GRAFFITI_FORMAT_VERSION 
The piece file version this server writes and accepts.
GRAFFITI_GLOW_ALL 
graffiti_art_glow_kind() of an art whose paint all glows.
GRAFFITI_GLOW_MIXED 
graffiti_art_glow_kind() of an art with both glowing and unlit paint.
GRAFFITI_GLOW_NONE 
graffiti_art_glow_kind() of an art with no glowing paint.
GRAFFITI_HEIGHT 
Height of every piece.
GRAFFITI_INFO_ART 
A placement's art hash, in its SSgraffiti.placement_info entry.
GRAFFITI_INFO_AT 
When a placement was placed, in its SSgraffiti.placement_info entry: ten-digit unix seconds in text.
GRAFFITI_INFO_CKEY 
A placement's ckey, in its SSgraffiti.placement_info entry.
GRAFFITI_INFO_PID 
A placement's id, in its SSgraffiti.placement_info entry.
GRAFFITI_INFO_ROUND_ONLY 
Whether a placement lasts this round only, in its SSgraffiti.placement_info entry.
GRAFFITI_INFO_WHO 
A placement's painter's character name, in its SSgraffiti.placement_info entry.
GRAFFITI_KIND_FLOOR 
graffiti_surface_kind() of a floor with ground.
GRAFFITI_KIND_WALL 
graffiti_surface_kind() of a wall. Anchors keep the kind as their surface, and decals as their kind.
GRAFFITI_KIND_WINDOW 
graffiti_surface_kind() of a tile under a full-tile window fastened down, whose graffiti is on the glass.
GRAFFITI_LIBRARY_CAP 
Most pieces an account's library keeps, besides its Unfinished slot.
GRAFFITI_LIBRARY_DIRECTORY 
Where each account's library file lives.
GRAFFITI_LIBRARY_WRITE_PACE 
A player's library write waits this many times as long as the account's last write took, and at least a second, so one account's writes take at most a twentieth of the server's time: 50 adversarial pieces take 139 ms to write on average and 209 ms at most (measured), 14-21% of the time at one write a second.
GRAFFITI_MAP_ART_BYTES 
Most bytes of art one map keeps, counting each unique art's pal, grid and glow text: about 1,500 dense
one-tile arts, or 400 translucent ones of 1,000 colours at 12-14 KB a tile, while typical art meets
GRAFFITI_MAP_UNIQUE_CAP first. The owner's ruling (2026-10-20) halved it from 10 MiB, which takes the worst case at
the caps from about 22.5 to 17 MB; 10 MiB of art and 4,000 placements wrote about 13.5 MB, so 5 MiB writes about
8 MB. Both new figures are worked out from the measured ones at 10 MiB.
GRAFFITI_MAP_DIRECTORY 
Where each map's graffiti file lives.
GRAFFITI_MAP_MAX_BYTES 
Size limit of a map's graffiti file.
GRAFFITI_MAP_PLACEMENT_CAP 
Most placements one map file keeps: 4,000 placements packed as JSON strings take about 1.2 MB (measured on a full map), and their decals at 2,261 bytes each 9 MB at worst. With the arts (at most about 5.4 MB under GRAFFITI_MAP_ART_BYTES) and the GRAFFITI_ICON_CACHE caches (1.5 MB) that is about 17 MB at worst, besides the placement indexes (not measured), since sheet files keep every other icon at 0 bytes of server memory; a load adds GRAFFITI_DECODE_BUDGET while it runs.
GRAFFITI_MAP_UNIQUE_CAP 
Most unique arts one map file keeps: 2,000 dense art records of 3,670 bytes take 7.3 MB, as measured, and a sparse one takes 680 bytes.
GRAFFITI_MAP_VERSION 
The map file version this server writes: anchors record their surface, and placements carry no name or description.
GRAFFITI_MAX_COLORS 
Most colours one piece's palette may hold: as many as one grid character can index.
GRAFFITI_MAX_DESCRIPTION 
Longest piece description, in characters.
GRAFFITI_MAX_LAYERS 
Most layers one graffiti piece holds.
GRAFFITI_MAX_LAYER_NAME 
Longest layer name, in characters.
GRAFFITI_MAX_NAME 
Longest piece name, in characters.
GRAFFITI_MISS_LIMIT 
Rounds in a row a placement may miss its surface: the last of them drops it.
GRAFFITI_PIECE_MAX_BYTES 
Size limit of one exported or imported piece.
GRAFFITI_REVEAL_STRIP 
Width of the column strip one paint job step reveals, in pixels.
GRAFFITI_SHEET_DIRECTORY 
Where each map's sprite sheet files live, in a directory per map.
GRAFFITI_STACK_CAP 
Most pieces stacked on one tile. A full stack refuses new paint.
GRAFFITI_WIDE_WIDTH 
Width of a piece that covers two tiles side by side.
GRAFFITI_WIDTH 
Width of a piece that covers one tile.