How to make website to use as external database

Basically, I was making a game based on user generated content but then i realised insertservice was not going to work for that, so i decided that the only other option was to make a website to use as external database from which users could upload .rbxm files and they would be serialized so they can be inserted into the game, How could i even get started with this?

I’m not sure this fits the category.

So you want players to be able to go into studio, create a model, then upload that model as and rbxm file to a website, then it will automatically be inserted into your game?

Does this happen at runtime? How do you you upload rbxm files to a game during runtime?

sorry I have more questions than answers you can ignore if you want

First of all, you can’t just load rbxm files directly as they are in roblox’s proprietary binary format, meaning that they would need extra parsing using something like CloneTrooper’s roblox file parser which you would have to integrate into a web server and database. (While roblox’s .rbxmx file format is XML and could be used instead, it would still need additional parsing)

Only then would you be able to serve the raw data via HttpService and load in the game but this is still extremely tedious as you would not only have to make every part and item with Instance.new() but then also set all of the properties (which can’t just be put in a for loop!) manually which is a massive hassle.
Scripts also won’t work as the .Source property of scripts is locked to only be accessible via studio and plugins, maening you’ll have to use something like Adonis’s loadstring but then that causes the issue of the code always executing as if it was in ServerScriptService, causing a multitude of issues.
Also, keep in mind that HttpService can ratelimit you.

Simply using InsertService (after the user would have uploaded their model to the library) would have not only been effective but also much easier, like so:

local asset = game:GetService("InsertService"):LoadAsset([assetid])
asset.Parent = game.Workspace
-- do whatever you need to do here
2 Likes

Well, I was planning on serializing the models and adding that to the database, not actually importing .rbxm files, which i believe isn’t possible. I could then just read drom the database and create the instances.

Well i’m glad to know that it is possible, that said i forgot to add that InsertService:LoadAsset() does not work with assets you don’t own.
(Hopefully) There would be a point where i couldn’t realistically get every asset uploaded for the game, so I’m pretty sure te external database thing is the only option.