These tiles are generated from server broadcasting their status through MessagingService every few seconds, allowing the user to see which game “rooms” are active. I want to show the player what the room looks like without them having to teleport over there and see it. I basically want to let them window shop through UGC, without having to download the asset.
The issue is that there is no good way to do this. If I use ViewportFrames I need to grab the (potentially tens) of thousands of parts, meshes/decals for each room and put it into said ViewportFrame. Not only is this a huge memory issue, but also a major bandwidth issue, as a MessagingService broadcast could never fit that much information, and DataStores are out of the question because of how slow they are to update/repond, and can not keep up with the rapid fire speed of MessagingService broadcasts.
I want to somehow take an image of the server, let roblox moderate it, then use that image ID as a preview for the player, which uses exponentially less memory than ViewportFrames + much less networking headaches.
Much agreed. I would also want the ability to create custom procedural images so I can send image data instead of part data and let Roblox moderate it(hmm, maybe a ModerationService? And, maybe a new ImageFrame insteance?) before it’s shown.
Not only can this give out the opportunity for 2D games, it also takes away the painstaking work of making icons for anything: pets, tools, and anything else that needs an icon.
I myself hate the work of taking a picture of a model, upload it to a paint software, export it in a correct file format, import it to Roblox, copy the asset Id, then paste it into a decal.
Being able to take a snapshot of a model without having to clone it into a ViewportFrame, or manually taking a screenshot uploading it as an image would be perfect.
Ideally, it could be something that takes a snapshot of my selection at my specified viewing angle and automatically uploads it as a decal.
It would save me a lot of time in creating individual screenshots for hundreds of assets, and save memory from using ViewportFrames.
It’s very hard that we are limited on options. This will be most useful rather than creating a decal/image just to add to the UI. Instead, we can just call a specific API to get the job done and easy for us to do as we can just update the model rather than have to edit several things in our code.
Using viewport frames is another option, but it takes up a lot of memory depending on how many parts are in the model (which would destroy UX) and adds unnecessary steps just because if a small/large change.
An API like this would definitely need to be server-side. Images created on the client would need to stay completely local to that client for obvious reasons.
It’s also important that image assets created this way on the server stay game-specific. This way games can be held accountable for icons created this way. These assets would also need a unique content format, so the limitations are clear, and also to prevent unnecessary asset id increment bloat. These images should also perform deduplication when uploaded, and eventually clean up. An API that checks if one of these images is still available would prevent issues, as the game server could recreate these icons when needed