Pretty sure this was mentioned before, but it would be really nice to have, even if it was implemented incredibly simply:
To cut on join time, have the downloaded game basically be a data file for all the assets, and when you run the game, it launches you into the server like normal, but references the data file for assets instead of fetching from the website. In the case of changes in assets, it would just do a diff with the asset list, and download from the site as you join, like it normally does.
This should save Roblox a bunch on their networking, and it will save players a bunch on their networking (mobile people matter). I’m not mobile personally, but I have incredibly slow internet, so I feel like I would significantly benefit from it not all being used every time I join a place.
Later on, you might decide to load the asset changes with a simple loading bar, before you enter the game, but personally, I’d rather just have such a common sense feature sooner than later.
P.S. would also keep me from feeling bad for not preloading all my GUI too, because, like, I have 40 GUI images.
Wouldn’t really do anything. CSG, mesh decals etc are stored on their servers and load time won’t really change. It’s not even bad atm its only a few seconds.
I mentioned a couple days ago something similar but I called them “asset packs”, where developers can list assets that they want players to preload / be preloadable, since assets take up the majority of the loading time and this would also give developers more control over what is preloaded. I think these asset packs would be the preferred solution.
The entire game probably changes often in minor ways so with your suggestion they’d have to check for diffs every time, which sounds like a pretty big hassle to implement considering Roblox files are singular and binary format, so this solution is not worth it I think.
Not entirely worth it, but being a downloadable has more future use, and is easier to understand for users.
Large file diffs would be a hassle, but not really all too bad, it should be much smaller than the amount of cost of loading the assets every time.
As for load time. In asset-heavy games, it takes me 30 seconds - 2 mins to load into the game. Also, the point would be to have assets be local, not server based.
Yeah, not sure if my point got across, but I was trying to say that if you preload just the assets (images/meshes/unions/etc) that would already give you a large benefit.
The usual shpiel aside, this idea would be pretty great for singleplayer games - you can already accomplish this by handing out copies of a place file to run in Studio. You’d have to be totally okay with people being able to take your assets of course, since players are downloading everything unlike the exploits used to download most info from a game. I’d really like to support this idea but with Roblox being pre-programmed as an online game it’s not practical (and again, if you really want an optimized singleplayer game you can always just have people run a place file).
This would just be an asset bundle. I assumed it’s be compressed/encrypted however Roblox normally does so whenever it sends it online, so users have no more access to it than they had before.
You already give the client all the client side assets, but for those concerned, I definitely think this should be an optional feature, something you opt-in to.
I wasn’t thinking single-player games, but that would be an interesting thing to do with this; have a single player version of a game where you allow players to download the entire game instead of just assets.
Try saving a place to your HDD, then restarting your PC without an internet connection, then opening the place, it’s what I call “offline mode”. A few weeks ago, I did this on my laptop because I was going to be away from internet, and none of the assets loaded. If there really is a cache, shouldn’t the assets all load?
In Studio, caching only works for rbxcdn.com, whereas rbxasset(id):// first goes to assetgame.roblox.com, which is inaccessible. On the client, the caching is more aggressive (zero-latency), with background updates.