This one I find problematic to reproduce. But there is absolutely no way to do that quickly on the server end. (Even with client-side icon math like we have now, this kind of thing would always be done by the server.)
The key thing here, is that if its done in icon math by softcode, bland() has to extract, decompress, then re-extract, then re-compress the png FOR EACH LAYER.
Not even to mention that sometimes byond starts doing this to disk, adding that extra overhead.
Like, let me remind you, /tg/ already does this in softcode and its *okish*
a built in byond system would be able to skip that repetition of overhead for all but the beginning and end. A significant saving over Blend().
Icon blends are much slower than the rendering done on the client.
Each Blend() on a 32x32 icon should take at max 16k cpu cycles (4ns). MAYBE 65k cycles (16ns) with less-then-optimal use of registers. if you aren't hitting that mark, you are doing something wrong.
nope.
The ability to export it as a base64 text is required for this feature, other wise we would just use the asset cache system to send the icon.
This system is used for code that has to generate icon html, but can not, at that moment, know what clients will receive the html, and sending it to all clients would be a balance breaking info leak.