Spray paint would be an item with special cursor functionality (like blueprints) for labeling different parts of your factory in big, bold letters that can be easily read at high zoom levels. The purpose is to make large, complex factories easier to understand and navigate, especially for new players on multiplayer servers. It would also help when sharing screenshots of your factory to places like reddit. But the main purpose, I think, is that it would just look cool and fit in with the industrial theme of Factorio!
Appearance, crafting & usage:
The spray paint item would have an icon that looks like an aerosol spray can. It could be crafted in an assembling machine, requiring oil, iron plates and plastic (subject to balancing). The spray paint item would have a limited number of uses (like repair packs), so over time you'd have to produce more than just one item, but each item should have enough durability that you'd consider it cheap and don't have to worry too much if you make a mistake and have to repaint something.
When you put the spray paint item under your cursor you can do five things:
- Drag a box over an area with LMB (like blueprinting). This would create a text frame and open a UI window for entering text. This text would be rendered in the game world within the text frame, using a nice stencil-style font based on the Factorio logo. When the text length exceeds the size of the text frame, it would break at the nearest character and automatically flow to the next line if possible, or be cropped.
- In the text entry UI you would also be able to adjust the font size (size 1 = 1 tile line height, size 2 = 2 tiles line height, and so on, up to a maximum of like 10) and toggle an option to show the text on the map like train stops (to complement this addition, train stops could be given the same option, so we can avoid cluttering the map with redundant text labels).
- The supported scripts should be Latin and maybe Cyrillic and Greek. Support for Japanese, Chinese, etc would probably be a major technical challenge.
- Click on a ground tile and then click again on another tile. This would draw an arrow from the first tile to the second tile. Arrows are always a little less than 1 tile thick and have a maximum length of like 20. After the first click, a preview of the arrow is shown, and it's snapped along the cardinal directions.
- When the base of one arrow meets the base of another arrow at a 90 degree angle, they'll adjust their length slightly to create nice corners.
- Arrows also have a UI but it doesn't open automatically. In it you can customize the end caps (single arrowhead, double arrowhead, or no arrowheads = line)
- Left-click on an existing text frame or arrow. This would open the UI window where you can edit the decal.
- Right-click and hold on an existing text frame or arrow. This would remove a decal with a nice dissolve effect.
- Shift-right-click to copy decal settings and shift-left-click to paste decal settings.
Decals can obviously be painted onto concrete and stone tiles, but they could also be painted onto grass where it could be blended with a fine, spotted texture to make it look more realistic.
See attached a mediocre mockup of how decals could be used in a factory.