Please complete one of the following sentences:
As a Roblox developer, it is currently too hard to . . .
As a Roblox developer, it is currently impossible to . . .
Currently the approach commonly used to do this is to take the Decal asset id (1156386453), then keep subtracting 1 from this id until an Image asset is found with the same owner as the original Decal asset.
This has two issues:
You use up a lot of requests to find the Image asset (i.e. you have to check ids 1156386452 → 1156386451 → 1156386450 → 1156386449 → 1156386448 → 1156386447 for the sample above). During peak hours, asset ids can be ~25–30 apart! There obviously is a search limit too, you don’t want to keep searching infinitely if the asset is not found…
This does not work at all for Decals owned by groups, where the Image asset is owned by the uploader.
If Roblox is able to address your issue, how would it improve your game and/or your development experience? Please be as specific as possible.
We would be able to robustly retrieve the Image belonging to a Decal with much lower failure rates.
Use case: I use this runtime to allow players to pick images from the catalog (or their own inventory). Users always pick Decal assets, so those have to be converted to Image assets before they can be applied to, for example, in-game Decals.
(An alternative would be to seamlessly load the associated Image whenever a Decal asset id is assigned to Decal instances, a bit like Studio does nowadays, but that does result in an unavoidable extra Http request for every unique Decal used…)
100,000% support for this kinda feature, even this far into the future past when this was originally posted. Heck, even another alternative would be if InsertService didn’t do the whole “In order to successfully insert a model, it must be owned either by the place creator or by the user Roblox.” when it comes to Decals. I’m fine with not inserting models, because I realize the piracy attempts there, but when you’re taking a Decal, it’s just an image, that is extremely easy to take from the site and put into Studio anyways. It’s more about giving the users good features that allow more creativity into the future.
Please Roblox. Do something to allow us to use decals that users submit into the game. And before anyone tries to claim that “allowing a user to put a decal in a game is dangerous because they can do bad things with it and it could get your game shutdown.” If the moderation system works, that won’t happen.
It is currently too hard to retrieve an image url from a decal id from a script. There is no clean method of getting it currently. Right now you have to write code to subtract one number from the decal id and verify it and repeat until you get the correct image.
There is a way to get the image url with InsertService, however this is not viable for other people’s decals, since InsertService restricts calls to only your assets.
Edit: Roblox has added API support for this. Use rbxthumb for any Roblox asset thumbnail!
They should just remove decals altogether and make it so the image id is what the toolbox uses. It’s a redundant asset and only contributes to unnecessary asset id bloat. It’s trivial to create a decal instance from an image id, and a huge headache to convert the decal’s id to an image id.
A little late to seeing this, while this is a “solution” it’s not a proper one.
That forces the image quality to 420x420. If the image you want to use is already 420x420 or below, then I suppose it’s fine but in most cases these days people use 512x512 or the Roblox maximum 1024x1024 [if you upload an image above 1024x1024, it downscales to 1024x1024]
It used to be quite easy to tell someone “just remove 1 from the number of the item” but now things have gotten much harder because the difference between Image and Decal are so far apart.
While I use the method you linked to above for when someone uploads a car texture to my game as a Decal ID rather than an Image ID, it’s extremely noticeable which one is which.
These days I resort to telling people to “get the number from Studio” [as it’s the easiest way to describe how to obtain the Image ID] but users who don’t own a computer or have never opened Studio have no idea what to do.
As a Roblox developer, it is currently too hard to get user generated images into your game without having to hassle your users to find “the right ID” to use.
Crazy to see I’ve had the same gripe for 4 years now.
A few years late but it can be done using the LoadAsset function of InsertService which gets the url and allows the image to scale correctly beyond just a few hundred pixels as shown below:
Btw in this Id is the asset id of the decal.
local ImageUrl = "" -- The variable for the image url (you can change it to the url of a backup image in case an invalid id is entered)
local Loaded = game:GetService("InsertService"):LoadAsset(Id) -- Loads the asset id into the game
if Loaded:FindFirstChildWhichIsA("Decal") then -- Checks that it's a decal
ImageUrl = Loaded:FindFirstChildWhichIsA("Decal").Texture -- Gets the url for the decal
end
-- Do whatever you need to with the image here