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

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

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

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

2 Likes

Recently, this has gotten much worse. This is now happening on standard laptops.
image-602
Once again requesting someone to tweak this behavior. Standard optimization for pixel art using spritesheets is useless if they get compressed into oblivion. This quite literally ruins the game experience for a considerable portion of our player base.

1 Like

Our game has scaled up considerably to a consistent 500 CCU recently. We’ve done some pretty major optimizations to our join bandwidth and now unload images that aren’t in use, but of course we can’t change the fact that Roblox is destroying the entire game’s appeal.

This is still an abhorrent issue that our players complain about daily. 250 mobile players at any given time, and a good portion of “low spec” on PC, and the game is mutilated for all of them. It’s extremely possible that our game is being hard-capped on players by this bug merely existing.

Can I please get in touch with someone about this??? It feels awful being ignored when this is (obstensibly) such a simple fix. We are as memory-efficient as possible and just can’t do anything about this awful unnecessary compression.

3 Likes

This isn’t really a bug — sorry for only bringing it up after two years — but basically, when a device is under heavy load, Roblox tends to downscale or pixelate most images and UI labels to improve performance. I don’t know the exact technical term for this, but it definitely happens. And since your game consists almost entirely of simple UI images, it’s especially noticeable.

Also, some of the devices you tested on are very low-end — like the LG Stylo Plus 3, which is quite an old device and was actually your first example. What you’re seeing is Roblox intentionally reducing visual quality to stabilize performance. So this behavior is currently intended.

Another reason I came to that conclusion is because in the screenshots you sent, some of the shirts and pants on the characters are also very low quality — which is exactly what happens as a result of what I mentioned. So I immediately made that connection.

The template on the classic shirts is misaligned, and white patches are visible next to the red areas:

Even simple fixes can take a long time to be made, but this is still insane

2 Likes


As I originally feared, this genuinely harms our stats, and has been for a while. It is turning away players on mobile. This is not just a hypothetical, it is genuinely harming our ability to grow on mobile.

Can this please be looked at?

6 Likes

Hello Mauio,

Thank you for bringing this to our attention and for doing so with great explanations and examples.

I apologize that we’ve taken so long to get back to you, some bugs slip through the cracks - we will try to do better in this regard moving forward.

We understand your concern that the lossy nature of texture block compression significantly affects the intended aesthetic of your game, particularly with pixel art. While texture block compression is inherently lossy and, in its current implementation, unavoidable for performance on certain platforms, we acknowledge that this creates an undesirable “scalability artifact” for specific artistic styles like yours.

We are continuously working to improve our automatic scalability systems, which may mitigate such issues over time. However, we currently do not have specific work planned to directly address this particular artifact introduced by texture compression on pixelated assets.

We appreciate you bringing this to our attention as it highlights an area where current technical limitations impact creative expression. Your feedback is valuable as we continue to evaluate and prioritize improvements to our rendering and asset pipelines.

I will reach out if we do change plans and find a way to directly address this. Please let me know if you have any questions.

Best,
M0bsterLobster

Hello Mobster,

Thank you for the response. I genuinely appreciate you taking the time to explain the situation. However, I need to respectfully push back on the characterization that texture compression for sprite art is “unavoidable for performance.”


I’d like to bring up 4 key notes in my mind right now:

In my opinion, the statement “current technical limitations” makes no sense. Looking at filesizes is irrelevant for images loaded into RAM, so I ran a test where I loaded every image sheet at once (an unfeasible scenario); the result was 400 MB texture usage. Still well within workable limits; this wouldn’t even put our game over 2GB mem usage, all things considered. On average, in a real game situation, this is 100-200 MB and we can push it even lower with more optimizations.

The compression is actively harming our game’s growth. Players are leaving negative reviews specifically citing the “washed up or compressed” appearance of characters. We have 250+ mobile players at any given time who are experiencing a fundamentally broken version of our game. It’s rendering some sprites completely unrecognizable, as shown in my original report where a character became an indecipherable mess.

Uncompressed images aren’t going to push us over any limits. We unload unused assets, streaming is enabled and we have full model LoD on, join size is very low, we store everything in a very slim format. We constantly do passes over our map for perf too.

This isn’t just about our current game. We have a team of 20+ artists (and far more contributors) who have all given their time to contribute art. I’ve built an entire animation pipeline suite (including a few plugins and a Discord bot) around this system, and had plans to move beyond an RP game with it eventually.

Bonus note - here are our only two “workarounds”:

  1. Upscale sprites
    • We would need to upscale every sprite by 4x, 8x, or even more to “trick” the compression algorithm into preserving some quality. This would make our game less optimized, use more memory, and cause longer load times.
  2. Custom pixel rendering system
    • In short, we forego all sense of optimization and manually render pixels. This is INCREDIBLY CPU taxing and memory intensive, given that our options for rendering are somewhat slim (EditableImages now compresses themselves on mobile as well), so we’d have to generate pixels out of Frames.

It really hurts (and I do mean that, it hurts) to hear that this use case is not being considered in the name of “performance”… especially considering how performant images are compared to 3D models. Is there any consideration for developers to be able to mark assets as “important”? Any heuristic system to check if images are being displayed with Pixelated resample mode? Really, I’m desperate.

7 Likes

Hi Mauio,

Thank you for the detailed follow-up and respectful pushback. We really appreciate you laying out the specifics—especially the memory data and how this impacts your game’s growth and your team’s long-term plans.

We totally get how frustrating it is that the forced workarounds lead to more memory use, longer load times, and negative player reviews. It’s clear this is a significant roadblock, and the added challenge with EditableImages only highlights it further.

We’re continuing to explore solutions that give creators like you more control over asset quality for specific cases, without forcing inefficient workarounds or slowing down the platform. This includes looking into how the engine can better understand and preserve artistic intent for styles like pixel art.

While we don’t have an immediate fix, your detailed report genuinely helps us push for prioritizing improvements in this area. We’re committed to finding a sustainable solution that supports your unique artistic vision and ensures your games deliver the intended experience, especially on mobile. We’ll keep this critical use case top of mind as we work on future platform enhancements.

Best,
M0bsterLobster

Well it’s not imagelabels, but on my iPad every game lowers textures even when its not lagging, it never used to happened, I don’t know why they did an update or something to do that

Here is why:-

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.