I participate in the development of a certain game and are finally tired of uploading a new copy of the game each time, considering that it already weighs 3+ gigs. We decided to do the cool thing in advance and make either a launcher for the game right away, but then quickly retreated from this idea and decided to make at least a clean update.
Task:
The essence of the update should be that somewhere on the server / hosting (including virtual) are all these 3+ gigs of the game, when a new version comes out - it is uploaded there via FTP with the replacement of files. When a new version comes out, players can simply run the update and they will check all the game files with those on the hosting and replace the old ones with the new ones (but they will not upload the same ones).
How do I guess this should work?
I don't know for sure about that. I suppose it is necessary to make a byte check of each file to know for sure that it is old or new, but then it will be long and there will be a large load on the server (probably, after all, hundreds of people will download the game, and moreover they will download it almost on the day of release updates all at once).
Another option is to compare the sizes of SHA1 or something like that. But what if only 1 character is changed in the file, is there any chance that this method will miss any change?
Tools for this:
I have not worked with the files yet as detailed as necessary here. I mainly worked with web technologies: PHP, JS, and everything related to them or lies side by side. I read them, they can be used with for example WinJS, PHP-GTK or I really liked PHP Desktop with its capabilities. But it sounds like some way through the back seat. I am not very familiar with C ++ and I think to try to implement something like this in C #.
But I’m almost sure that you don’t need to think of anything, where there may already be a ready-made solution, so that you can create a regular update.exe which will go through all the files and replace the necessary ones. I found some kind of electron-builder who might do something like that, but first I would like to hear the opinion of more experienced people on this topic.