I think your whole theory is wrong. What you want to do is to essentially update the game. Instead of passing around raw packaged files you should provide the whole rebuilt game (you could use some launcher that check for file differences and the calculates which files need to be changed/removed/etc).
(Have posted in Slack group but will post here too).
You can’t directly download files from other players, each player has to have all the assets on their local machine and they won’t be able to connect unless the checksums match. Unreal Tournament has a ‘download the server map if I don’t have it’ kind-of-thing going on, but it’s not easy to wrap your head around since it’s a bit of gnarly C++ and backend to get it working.
So what if every object on my map was a mobile actor and for every map change I just cleared the world of actors and spawned a new set in? So the .umap never changes but the list of actors it spawns does?
Then if I wanted to support new maps I would create a map in the editor as I normally would but then just export the actor/location to a long list?
One issue I see is that lighting would have to be dynamic (which for my game is fine) but also I would not be able to have any vertex painting on any of the mesh.
Anyone know of any other way around this map content distribution limitation?
The map references it’s content to everything in the /content file folder structure. e.g. /materials/MaterialGrasTexture or vehicle code.
now if anything on PC1 is changed and not the exactly same way on PC2 then you have a lost reference or problem:
e.g. the material is replaced on PC1 and not PC2 you have a different result or missing reference.
If the vehicle code is changed on PC1 and not PC2 you have differnt stuff working even if the filenames are the same.
thats why you need version control like Perforce, Git, SVN to make sure everyone in the team works on and with the same /content files and folders.
and this is just for the production pipeline. If you later want to add maps to a cooked version of the game you need a solution like in UT3 that not only
transmits the missing map file, but checks ALL the referenced assets of that map if…
a) they are already in the cooked version or not (ouch, as in the cooked version you don’t even have the /materials/materialGras files anymore). re-using saves filespace.
b) you include everything don’t have already is transmitted along with the map, with the right refernces and does not overwrite anything on the target machine.
That are the basic considerations.
If you want to avoid all that, then release Version1 of youre game with e.g. 3 maps and later release Version2 of youre game with 10 maps and with increased filesize as the whole /content is transmitted.