I’ve created a module which simulates the “wetness” of anything with a surfaceappearance and roughness map using EditableImages. You can see this working in the video below.
- Note that for now I have only made a select few assets compatible which is why certain objects and the terrain are not changing as well.
I’m very happy with how well this looks and would love to hear your thoughts on the results, but I do also have some concerns.
How it works:
The basic idea is very simple. With roblox’s EditbleImages I simply change the roughness texture of these assets.
My original approach was to load and modify EditableImages for each separate roughness map at runtime for truly dynamic runtime simulations, but this quickly exhausted the memory budget for EditableImages, especially since roblox seems to require you to load all textures of an object into an EditbleImage (i.e. the color, normal, and metallness maps had to be loaded as well) in order for me to modify one of them.
As I did not know how to fix this (please let me know if you do) I instead opted for creating a simple plugin which would create the different decals for each roughness texture step through the CreateAssetAsync() and CreateAssetVersionAsync() methods. A simple module then just switches out these already generated textures/surfaceappearances.
This is the version shown in the video.
My main concern:
While this does work very well and is easier then my original approach, I am mainly worried about the amount of assets that are created in this way. Currently I’m using 12 steps, that means 12 additional roughness textures are generated per object (with a differing roughness map AssetID).
I have tried to implement multiple deduplication techniques, so duplicates shouldn’t occur. I’ve also ensured that the newly generated decals are of low quality (256x256 for most and 512x512 for larger assets) as this is more than enough quality for a roughness map and at least minimizes the storage required for them on Roblox’s servers.
However, the issue remains that eventually I will possibly have a few hundred different objects with different roughness textures, meaning several thousand decals.
I have rarely uploaded many assets in a short time and was unable to find a clear limit stated anywhere. So I’m wondering whether this system is really scalable.
Any feedback or replies on the general results and the system itself, suggestions for different approaches, fixes/improvements for the current system, or answers to the questions I posed are all very welcome.

