It’s not possible to keep it both “secure” and allow even using or viewing parts of your game. It’s not even “secure” right now – I can download all of your meshes and sounds right now, and I can copy all of the Instances and scripts that show up on the client. Downloadable games would be no different in that manner, except that everything would be in one place already.
Notably, you already download non-Roblox games, and those are not “secure”. You can steal all the meshes, images, and sounds you want from them. You can also get sued by their company’s lawyers when you redistribute those assets. Games are only “secure” because of copyright laws in the legal system. It is impossible to have assets technically secure and render them locally.
I’m pretty sure Roblox already caches images, meshes, and sounds on the file system after the first time playing the game. Check out
%localappdata%\Temp\Roblox. Those look like asset hashes that Roblox uses internally to organize assets. I’m not sure how often this cache is cleared because all of the dates are surprisingly recent. A good route to decreasing loading times would be to cache assets on the file system for longer.