Non-sequential Asset ID Generation Coming Soon

This topic was automatically opened after 10 minutes.

If this change is applying to assets like decals, can we have a function to get an image ID from decal ID? A lot of games use a “custom image” for icons or graffiti and such. The only way to currently get the image ID is just by reducing the decal ID by 1 until an image asset is found. (Which is already a hacky way to do it) This change would make that impossible.

This has been suggested before: It's Impossible to Get an Image ID From a Decal ID

119 Likes

I’m slightly worried about how long the numbers will be, as that is what’s currently happening with badges. Will there be a future change to the number system used (e.g. base 16)?

22 Likes

while i agree that this change is good for privacy and such, i think this fundamentally breaks the classic method that people use to get image ids from decal ids.

Roblox provides no API to do so natively as far as i can tell, and the alternatives i’m aware of have significant downsides (can’t use InsertService for assets not owned by the game creator, and rbxthumb:// only goes up to 420x420, which is a DRASTIC downgrade compared to having the actual image ID)

in scenarios where the developer wants the player to be able to customize how they like, this could really hurt the player’s experience. not everyone will know what an image ID is, and they’ll be confused when they paste in a decal ID and nothing happens.
to even be able to get an Image ID yourself, you either have to open an entire Studio instance just to paste it into a Decal and copy it from there, or have third party extensions installed that can figure it out for you, increasing the friction and barrier to entry.

PLEASE consider implementing some sort of Decal:GetImageID() API before making this change, or perhaps raise the resolution of rbxthumb. i’m sure most developers would appreciate it.

56 Likes

Base 16/64 will not happen. Changing from numbers to strings would be a very breaking change, and probably would be a massive change internally for Roblox’s database schemas. Luau is the only place we would have to worry about due to not having an integer type, but Luau guarantees integer values with no loss up to 2 ^ 53 (which is a huge number).

9 Likes

Second this. While I’d appreciate the side effect of preventing asset leaks, the workarounds to get an image id from a decal id will get much more complicated.

NobleReign pretty much summarized the pain of the lack of an official method, the only known method working after the change would be to use a proxy and call to https://assetdelivery.roblox.com/v1/asset?id={id}, parse XML and extract the asset ID from the Content.url property.

Using an external proxy alone adds a certain level of unreliability, and who knows if this XML format will ever change?

EDIT: I created a resource to deploy your own image → decal proxy, check it out here:

22 Likes

Kind of iffy about this update, is there a way to get the image id?

12 Likes

If it is just for visual displaying in a higher base would be ok. I am pretty sure that is what they meant at least.

EDIT: Although, it wouldn’t be too hard to check what base a number is in. For example, 0x before base16. Allowing this to be put as the asset id might be good. For processing it would just do a base conversion back to a standard integer.

Also just realized 0x could be a collision with the actual id. A better option would be to have a different url option that accepts hex.

13 Likes

And to think this whole problem would have been fixed if they just deprecated decals being created on the website… still don’t understand why you can’t just upload images themselves

20 Likes

Not sure why would this affect too many people, but it’s nice to know when roblox is planning to do some changes. The only issue i could see, is having to get an image id from a decal or clothing item through script, but I’m not sure why would someone need to do that?
For games that require players to input an id, just show the player how to use IMAGEID not DECALID, and same for clothing. There’s no reason, under any circumstance, a developer would need to get imageid from a clothing/ugc asset/decal that they don’t own unless they’re planning to steal it. If the asset is used with the uploader’s consent, it should be only inserted by the uploader (eg a custom texture/livery for a car, or custom shop in-game which allows the player to use a custom image, etc). All of these should be done by the player, with the consent of the player. This seems like a nice change to me, and would be nice to see this preventing leaks, assets stealing etc. Hopefully in the future we can also have an option to block our assets from being downloaded at all, from the website (extensions) or exported from studio.

11 Likes

Adding on to this, the transition would be fairly easy. For legacy created decals, just display the Content.url prop on the page.

12 Likes

This was very much needed and huge problem when it comes to upcoming brands or Roblox events.

14 Likes

Does this apply to catalog items?

15 Likes

Why is there a need to update IDs? First accounts IDs and now assets.

13 Likes

how does one of these asset ids look like?

10 Likes

Many reasons, including leak accounts abusing it to leak events and partnerships

11 Likes

I’m surprised this took this long given this was a massive security risk beforehand.

While I support this change,

can we PLEASE have an API to get an image from a texture-based asset

because otherwise every hack we’ve come up with will break with this update.

22 Likes

Most players don’t know the difference between the image and decal IDs. Not everyone is a developer. Having to explain the instructions of getting the image id should not be the way this is done.

10 Likes

Are there any plans to stop creating decal assets, especially since the decal instance expects an image id, not a decal id, making the decal web asset rather redundant.

It seems rather wasteful to take up two asset ids for every image uploaded to the site, with one asset being completely useless — even if the maximum asset id limit is never reached.

18 Likes

This, unfortunately, isn’t easy to do. Getting an image ID from a decal ID isn’t something you can easily instruct players to do. It also requires players to know the difference between decals and images in the first-place which isn’t something all players (and seemingly even some developers given that Studio has the ability to do automatic conversion for it) understand fully.

As far as I know, iterating over IDs has never been the process for this? Instead, there are some other APIs that are used to get these IDs, and hence, that would be mostly unaffected by this? Perhaps I’m wrong, and this is the process?

8 Likes