For a cinema screen, is it better to use Decal or ImageLabel?

ui
decal
video

#1

Hey developers, I need your opinion on choosing which object l would suit my goal the most. I’m planning to play a short clip, something like GIF, in-game. If you have been into those cinemas on Roblox, it is a really nice experience to see pictures changing, despite the fact it does not have a soundtrack. For my project, the pictures will be played on the surface of a wide brick, not the user’s screen. However, I’m not quite sure to use either Decal or ImageLabel inside a SurfaceGui.

Some aspects I would like to know are the following.

Assuming there’s no FE-related thing going on, which one would take up more load time?

  • Which one would lag more if the texture/image is changed constantly?
  • Which one is superior in terms of quality (or clarity)?
  • Overall, which one is better in terms of effectivity for my project?

TLDR; On a brick’s surface to play a video, is it better to use ImageLabel on a SurfaceGui or Decal?

Please share me your opinion of the advantages or disadvantages, anything would help, thanks.


#2

Since cinema screens are lit, I would use a SurfaceGui with a LightInfluence of 0. That way, it stays lit even if the room is dark without having to use dynamic lighting.


#3

Good point. I can also use Decal and compensate that by adding a SurfaceLight to the cinema screen, to make the room more realistic, with a glowing light directed to the audience’s faces.

What other reasons are there to suggest ImageLabel on SurfaceGui better than a Decal?
I’m thinking more of the loading time it takes and how laggy it can be, because I want consistency of the playing time for all players and reduce memory resources. It is a big problem when talking about multiple decals being played in a short period of time.

You know that when a Decal’s texture is changed, the change can be observed throughout the server. I’m thinking that since ImageLabel is part of screen UI, the change is often observed locally when using local script. In this case, I want to play each pictures for each person at the same time.


#4

In terms of memory, instances (the decals or the surface guis) would only be a very tiny fraction of the memory consumed by the images themselves. I would say that it doesn’t matter.

In terms of bandwidth, if you can manage to fit many frames in a single image, then surface guis are better since you’ll need to download fewer images (you can manipulate ImageRectOffset and ImageRectSize to display only certain parts of an image.)

There’s something you have to be careful with when using surface guis with glass, though, since glass can clip surface guis:

image

To be honest, the efficiency of either solution probably won’t matter unless you’re planning on having several dozens of these cinema screens. Prioritize whichever looks best.

EDIT: I forgot to address this part of your reply:

If you modify the Image property of the ImageLabel inside of the SurfaceGui from the server, then that change should replicate.
You probably wouldn’t want to loop through the images from the server anyway, since lag may cause the cinema screen to become choppy. You’ll need to find a way to make sure that the screens for each player are synchronized, though.


#5

Ok, seems like the ImageLabel have more Properties to be adjusted and offers greater flexibility. ImageLabel seems to win the visual contest, it has variety of properties to explore.

I’m now interested to know more which one is more effective based on bandwith or memory required. This is very important because I’m interested to play a video with length around 5 minutes with 3 frames per second.


#6

5 minutes? At that rate you’d need to upload 900 frames! Neither solution (decals or surface guis) would make any meaningful impact on either bandwidth or memory. Please reconsider what you’re doing.


#7

No problem. I will reconsider when I complete it.