riperiperi / FreeSO

Re-implementation of The Sims Online.
http://freeso.org
Mozilla Public License 2.0
817 stars 95 forks source link

[Client, Server] New Updater #132

Closed riperiperi closed 5 years ago

riperiperi commented 5 years ago

The current update path is very primitive:

The key word you're looking for here is "manually". There are many chances for this process to go wrong (and it has) and a lot of time is typically spent preparing these updates. Other issues include the increasing size of our updates, and the increasing chance that something will either be corrupted or not extract. There are no safeguards when this happens, and the user often has to reinstall the FreeSO client, which the launcher doesn't make too easy.

The solution is to rethink how we do updates entirely. The less files we have to update, the less intrusive it will be to push out corrective updates for both us and our users, especially for minor updates that just change objects or PIFF patches. Catching things that go wrong and re-updating when they do will save a lot of hassle for users that are affected often.

Automated update generation

Incremental Updates

Update binaries are getting larger and larger, as they contain all of the files used by the FreeSO client. This includes our additional objects, 3D city, ui etc... The thing is, most of these files do not change between game versions, and most likely never will. If we discover a bug with a single library or object, it doesn't make sense pushing out an update with 128MB of content to fix it.

The solution is to instead only update the files that have changed from the last patch. With the above in mind, that means the following:

Note that this means a few things for servo - specifically that for the most optimal calculation of differences we will need to make sure the buildbot does not build clean every time. This will mean it could leave multiple dlls unmodified, meaning they do not need to be included in the incremental update.

New update installation (server)

New update delivery

New update installation

This issue is still WIP, but it is the current focus of development. As a result the Admin API angular app will probably be cleaned up too.