Hey folks! I'm working on an automatic asset streaming system. Basically what it does: -generates an asset bundle for each model with low res textures ( 128x128 ) -generates asset bundles with higher quality textures and writes their paths in the main object asset bundle -generates scene bundles which contain a list of asset bundle paths and positions -from a scene asset bundle automatically streams the whole level ( with low resolution ) -after the level itself is initially loaded starts streaming the higher resolution textures ( the higher resolution is based on user preference ), with dependent on distance to an object order ( for say the objects nearer to the player get their higher resolution textures loaded first ) Additional Features: -terrain support -customizable texture resolutions -multiple texture resolutions -easy to use -great reusability - all the textures are grouped and once streamed are cached by unity - shared assets between scenes get downloaded just once There are two approaches for doing the low resolution thing : -Packing all the lower quality models into a scene asset bundle -Packing all of them separately Both methods have their pros and cons I've wen with the second one. I'm posting a sample scene, for you to test the speed. Not streamed - http://dl.dropbox.com/u/22188686/NotStreaming/WebPlayer/WebPlayer.html Streamed - http://dl.dropbox.com/u/22188686/Streaming/WebPlayer/WebPlayer.html The streamed one IS a bit slower. The actual speed benefit in this particular case comes when there are many scenes that reuse the assets. I'm creating the FASTER streaming option ( all the low res textures are packed in a single asset bundle ) some time soon. I'll post that too. Benchmarks and feedback are welcome!
Any updates to this Jedy, we are looking for a way to stream in a small asset pack with smaller mip into the game from our content server, then as the bundle is in and running pull in a texture with a higher quality.. ?
Well the functionality is completed. It's currently being implemented into our game. Anyway due to the lack of interest I haven't really created a package ready for the asset store.
Jedy, Ok thanks for the reply. Im wondering how much savings you get, and are you loading in just a small texture or just a mip level? For example if a barrel was loaded in with 128x128 mip level, then the 512x512 gets loaded are you seeing lag times, popping in of the textures ? Since most web games rely on internet speed. Also are you creating 2 asset bundles, the merge the texture on once fully loaded. Would this work on mobile devices? sorry just seeing based upon what you found if its a direction we should take
Well here is some raw data : From a 20Mb webplayer it went down to 3Mb with 128x128 textures. The textures replacement doesn't create any sort of spikes or noticeable lag. I haven't tested this on a mobile phone. And I'm creating a single asset bundle containing the level itself with low res textures ( better than individual low res textures - they have too much overhead ), and different asset packs with higher res textures.