Yeah, it sounds to me like you’re using the pixel values to represent information.
So maybe break this up.
We have 32-bits of colour data per pixel. I’m assuming you’re using colour information to define what each thing. Lets say you reserve R and G for prefab information… giving you a potential of 65k prefabs (overkill? maybe, you could reduce this to like 12 bits if you wanted). Then the other channels B and A are auxililary data, whose rules are related to the prefab type the R and G say it is.
So lets say 0x000A means ‘wooden door’, and doors auxiliary data is defined as being and identifier (a value from 1 to 65536). Then 0x000A0001 (rgba) might mean “wooden door with id 1”.
Then lets say 0x000B means “door trigger”, and trigger’s auxiliary data is defined as being the identifier of the door it opens. So you would say 0x000B0001 means “door trigger that opens the door with id 1”.
Then when reading your files you’ll read those first 2 channels to get the prefab, then based on the prefab type’s rule you do what is necessary.
So you’d end up looping over your bitmap and being like:
found door, create door, assign id to it
found trigger, create trigger, assign target id to it
found rest… do this with rest
then you go back and you loop over the created prefabs and you’re like
found door, it has id X, nothing else needs to be done
found trigger, it targets door of id X… search map for that door, assign that trigger that door
so on, so forth
…
…
Of course, I don’t see how this would be at all enjoyable to create in photoshop or paint… it’d be rather tedious to be honest.
But I honestly don’t know how you’re even attempting to represent your data in these things.