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.
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