If Roblox wanted to protect our assets, they could, and it wouldn’t be that hard.
If you’ve ever used a GUI image by location and name, those images are not downloaded when a place file is downloaded.
A good reference for this if you don’t understand, download the open-source game tribe sim.
The images in the gui are referenced as /images/image name, instead of by asset ID.
So instead of an asset ID, say you had an image named “frame” uploaded locally to that place. You could put /images/frame and that would work just like having the asset ID. However, if someone steals your place, they get nothing, because there is no “frame” located in /images/ for them.
Because of this, they exist and load locally based on their name and location, never giving access to the asset ID to begin with. The thief wont know the asset ID of the item. More so, you can use an alias that wont even give them the real file name.
There used to be times when more worked this way, but now it is pushing more towards depending on asset ID.
Currently, you can protect your GUI and normal textures this way. Sadly, PBR textures do not work with this method. Something that bothers me since they moved transparency to PBR, anything like a tree that used to be protectable even with textured leaves, now no longer is protectable.
I can’t make suggestions or I would have suggested long ago they fix this so it works with more, not less.
What I would like to see is the option on everything from meshes to textures that when you upload, you can use the local path instead of the asset ID.
This would solve place theft for everything but parts and terrain really.