This is more of a “is it possible?” type post rather than a cry for help, but in short: I have a game with a high average session length, meaning that my servers don’t shut down very often. Some servers in my game often last for multiple days before shutting down. This means that when I publish a minor update like adding one cosmetic item, it can sometimes take days for it to be live in all servers, and I don’t want to shut down all the servers just to add one small item.
I was thinking about ways of potentially importing new assets into the game live using InsertService:GetLatestAssetVersionAsync()
and InsertService:LoadAssetVersion()
. In theory, this is a good idea, as it would fetch the latest asset version and compare it with the last asset version it noted, and if there was a difference, it’d import the new asset version.
When solely importing classes like models and animations, this actually works! However, in my codebase, all cosmetic items have some associated “metadata” which tells other scripts in the game information about them. The information contains things like the item’s display name, icon, price, etc. This information is in a ModuleScript which we update every time I add a new item. Scripts that want to display this information will simply ignore any cosmetics that it can’t find information for.
The problem is that this ModuleScript is required by scripts once at runtime, after which point obviously can not be updated with the new metadata about cosmetics I add. This is the problem I’m wondering if it’s even possible to solve. Perhaps there is a better way of storing the information that would allow for more dynamic updates?
I’m interested to hear if anyone has tried to do something similar in the past and if they were able to come up with a solution. Ideally, I don’t want to set up external solutions like an external database to store this type of information, but if it’s the only way to make it possible then I’m interested in hearing about such implementations.
Thanks in advance