GuiObject CanvasFrame

Currently, creating minimaps and do anything dynamic image related is a pain in the ass. The largest hoop to jump through is the large amounts of Gui Frames necessary to render an image.

There’s an arbitrary limit of frames you can display to a client until they start dropping frames. Each Frame houses properties that are replicated to the client and could potentially change at any time.

Before you know it, you’re racking your brain trying to come up with optimizations to recycle frames before your computer explodes.
Even changing the BackgroundColor of the Frames seems to be performance intensive after a while.


What I’m looking for is either

  1. The best logic-based way to optimize something like a minimap (dynamic or static) with whatever we already have
    or
  2. A CanvasFrame that allows us to shade specific portions of the Frame a Color3 without all the extra bulk we get currently from Frames.

Not sure if this would be easy to implement or optimize, but would certainly be really neat to see in game.

3 Likes

Complete support. Not only would this be useful for minimaps, but procedural images and textures as well.

I’m all for this, would be a very useful thing to have.

I’ve been avoiding a full mini-map for my game because of that lag you mentioned. I hope they at least consider this.

Support.

I can also think of numerous different requests regarding a similar object.

Have you already forgotten the whole “this is why we can’t have nice things” aspect to a feature like this?

I don’t know why everybody uses Frames to display images. Is it a fad or something? TextLabels seem more logical to me since Frames are for holding stuff.

whut
The client’s GUI doesn’t get replicated to the client. That’s just weird. And the number of frames is dependent of your CPU’s available power. Every frame goes through a draw call via the CPU to tell the GPU to stick something on the screen. Ways around this are to have batches of draw calls that only incur a few CPU cycles and graphics APIs that skip the CPU (such as the upcoming DirectX12 and AMD’s Mantle API).

Roblox are not interested in implementing support for those APIs due to the lack of mobile support and how little those gains would be put in use. Basically the people with the best systems would benefit the most, whereas legacy and mobile users would see nothing.

Sending off batches of calls is something I have little to no knowledge in and therefore I can’t say much here :frowning:

Any employee opinions on this?

Bump