Compression of pixelated ImageLabels on mobile unavoidably ruins our game's aesthetic & graphics

Overview

Our sprite-based roleplay game has a custom animation system using ImageLabels and the wonderful Pixelated resampling mode to fit many sprites and animations into one image, saving texture memory usage tremendously and providing sharp textures. This works just fine on PC, but the forced compression of textures on mobile ruins this.

For the sake of being specific, our system has a bunch of sprites packed into one image, from where an ImageLabel has its ImageRectOffset/ImageRectSize set to only show one sprite at a time. These images have a max size of 1024x1024, so I know it’s not being downscaled by Roblox.

Demonstration

Here is what it looks like on PC.

External Media

Notice the flat, aesthetically pleasing colors.


Here is what the exact same morph looks like on my Pixel 7 phone:


https://streamable.com/1t2j6o

The flatness of the colors has been ruined and reduced to a JPEG mess.

Not bad enough for you? Check out this morph that was COMPLETELY mutilated by the compression:

It’s worth noting that each of the images we use as spritesheets hover around 50-100 kilobytes due to their low-color nature, so they are by no means large images. As mentioned before, they are all also below 1024x1024, so I know they aren’t being downscaled.

Our situation now

We have spent the past 8 months aggressively optimizing our memory usage ever since Pixelated resampling came out (before then we had to use upscaled Decals to get any semblance of sharpness, which was terrible for memory). Despite this, this bug has effectively crippled progress for the time being as I don’t feel comfortable shipping out an update that destroys the game’s aesthetic for half of our playerbase.

There is nothing I can do about this as far as I know other than revert back to using upscaled images for every single sprite, which is TERRIBLE for memory usage, introduces flickering as images load, and makes development far harder.

The whole place only uses around 30 spritesheets as it currently stands. These images do NOT need to be compressed; our game is already optimized for memory usage.

More info

Tested on the following phone models:
LG Stylo Plus 3
Google Pixel 7
Huawei P30 Lite
iPhone 14

All of the above phone models have been confirmed to have this issue; given that it does not matter whether the phone is high or low-end, I am assuming this applies to all mobile devices.

First experienced: 27th July, 2023
Severity: High

Repro

Join the following game on a phone. This uses the exact same method our game does to show sprites, and it’s uncopylocked.
pixelation - Roblox
Observe that the sprites in front of you are very low-quality, and the colors are broken. On a PC, no such issue exists.

Conclusion

If any staff reading this would like to test further, need more info, or have a workaround, please contact me immediately. I do not mind reuploading all of my images if there is some way around this

19 Likes

Thanks for the report! I filed a ticket in our internal database and we’ll follow up when we have an update for you.

5 Likes

Thank you! I’d really appreciate someone looking into this when possible as it’s essentially blocking our update.

My ideal solution would be to disable mobile compression of images if they were fetched because of an ImageLabel with its resample mode set to Pixelated.

3 Likes

Just wanted to drop an update here: we don’t want to delay this update too much longer as our players have been waiting an extremely long time already. I really hope someone related to asset delivery can take a look at this soon, me and my team don’t mind helping out however possible. Even a “we’re taking a look” would mean the world to us.

If we go too much longer without some support from the engineers that originally implemented this, we’ll unfortunately have to publish our new update with these severely degraded visuals on mobile. This is not an easy choice for us and will likely result in poorer ratings on mobile, even taking into consideration the amount of optimization it brings for mobile players in terms of memory usage. Not to mention how immersion breaking it is.

We really don’t want it to come to that and would prefer that everyone were able to experience the game the same way regardless of platform, especially when the differing factor is just some image compression.

2 Likes


I’ve just noticed this bug affects UI as well (look at the sidebar on the left). I believe this directly contradicts a statement made by a staff member, if you wanted more proof that this is a serious bug:

1 Like

Once again asking for an update on this. This bug is awful for the aesthetics of our game, and in our public beta test we’ve even had numerous people reporting the compression as a bug.


image

We tried coding our own image system using Frames and the original frame data, but it’s simply far too laggy. An alternative would be for Roblox to expedite the release of the new DynamicImage class; we could use that to construct sprites. Just SOME response, any, would be welcome. We’re really passionate about our game and hate seeing the spritework of dozens of people get ruined by some compression.

3 Likes

An update and a bump: this appears to happen on PC now. It looks like the images are being downscaled rather than compressed in this scenario.
image

It goes without saying, but this is not the intended appearance of these characters.