As a Roblox developer, it is currently too hard to load user generated models in game.
If Roblox is able to address this issue, it would improve my development experience because I would be able to let players upload models to Roblox and then load them in games.
InsertService cannot be used to load free models anymore. I had no idea this was ever changed, and it was extremely disappointing to learn that all the previous methods you could use to do this are gone. There are a lot of use cases I previously had for this that I can no longer achieve.
In the past, free models have frequently been used to allow loading lots of data in a compact and efficient way which is easy for players to share. The inability to load free models, mixed with the inability to export data from Studio, mixed with plaintext and TextBox limitations requiring users to upload content to GitHub gists or pastebin make this kind of UGC content impossible to scale.
This would also allow this type of content to be moderated through Roblox, instead of potentially allowing bad models to be loaded from off-site with no feasible way to perform moderation on the inserted content besides blacklisting specific links, which can just get reuploaded anyways.
A model permissions system similar to audio permissions would solve this really well.
In combination with a more “secure” scriptless method of loading models, similar to the one used internally to load the avatar context menu would be really really cool.
Generally, models would be loaded and processed into a different form that confines to game rules anyways, rather than just being directly inserted.
Problems in detail and further considerations
The inability to do this requires the maintenance and support of a custom model format which rivals the rbxm format. These formats may represent barely any data but may still be hundreds of times the size of an rbxm.
Not only are there barely any means to get this kind of stuff into a game due to TextBox limits, it’s difficult to get it out of Studio too. It isn’t possible to export binary data from Studio. It also isn’t trivial to load binary data in game. Thus, solutions often include encoding in plaintext, making the size of modules 2x, or even 4x larger depending on whether base64, or smaller but more complex 0-127 range packing is used.
I want to let players build stuff and then upload those builds to Roblox so that they can be loaded in a game and the parts in them can be processed by the server and inserted. I don’t want to own every asset uploaded by every user, it’s not feasible or realistic.
On top of this, while debug.loadmodule
isn’t enabled, the idea that it eventually could be is relevant. The ability to load modules within models inside of sandboxes would be incredibly useful and powerful for user generated content.
As far as I am aware, I also don’t believe it’s possible to load public modules via InsertService now, e.g. modules named with MainModule
. I used to use this to load data inside of modules but I don’t think this is possible anymore unless there is an exception for public module functionality.