Ability to change SurfaceAppearance textures live in a running server

Currently, Roblox doesn’t support the editing of texture maps of SurfaceAppearances in a live, running game. We are only limited to those which are set in Studio and published to the game.

Use Case:
This would be useful for any type of in-game UGC involving meshes or any case where you’d want to swap many textures on a mesh.

In our game, we allow players to upload custom liveries to their police cars. We get hundreds of these uploaded to the game every day. (Yes, our staff manually approves them on top of Roblox approval.) Currently, we’re limited to using Decals to apply said textures onto a car body mesh. There are obvious limitations with Decals- mainly the fact that we have to use a separate decal/image for each side of the mesh. Whereas a SurfaceAppearance supports UV wrapping a single image onto the mesh. UV maps would work much better when applying a livery to the curved and edges of a car. Decals often get stretched or cut off on the non-flat surfaces.

This could be useful for any range of applications where you’d want to change the texture of a mesh in-game. For example, a prop in the game catches on fire, we want to replace the default texture with a burned texture. Currently, you must have a duplicate of every mesh for each unique texture you want to use. Not only is this not ideal for the developer workflow and game setup, but this is very limiting in cases where you want the ability to swap between many different textures or even if you don’t know what textures it will use until the server is already running live.

Why cant we use the MeshPart.TextureID property? Two reasons: 1. It doesn’t support PBR maps and 2. We loose the ability to recolor the MeshPart (our textures have some transparent area, the mesh is recolorable by players in game).

19 Likes

Yeah, I definitely agree. As someone who has made a lot liveries in ER:LC, it would definitely be easier to not have to keep track of so many decals. Along with that, it would be much easier for livery designers to make better looking liveries that aren’t limited by the limitations of decals.

On the larger scale, I can see this be put to use in many instances which could help developers save a lot of time.

4 Likes

Big support from me, this is really a significant design flaw with current SurfaceAppearances. The listed reason is “performance” but in my testing from loading dozens unloaded textures into different SurfaceAppearances all at once through a command bar script shows no measurable performance loss, though the textures are blank white for a few seconds while it’s computing.

Even if there was a performance loss, it’s still no reason why we shouldn’t be able to set them at all. Currently it is flat out impossible to set the texture tint of a MeshPart at runtime unless it comes with a SurfaceAppearance.

4 Likes

Glad that someone is finally making a feature request for this! I ran into the same problem a bit ago when testing out the capabilities of editable meshes/images.

6 Likes