Auto updater progress


Hello again and Happy New Year!

I am back with some update about my progress on auto updater.

I hoped to finish my auto updater until now, but because of many different circumstances it's not finished yet, so I can only post some devlog to let you know I did some progress.

Working on auto updater is not very exciting, because that's mostly backend work not changing much from end user perspective. Also I spent most of the time working on version updater tool which also is not very useful for users, but it supposed to make it easy to prepare updates when I finish updater system.

Sooo, I think that hardest part is already finished. As I mentioned most of the time I worked on version updater tool. The idea behind version updater tool is:

  1. It let me keep track of my project versions (that's not very important since this can be achieved by many other ways too, but well, since it is required anyway for proper updates it's like some side effect of main purpose)
  2. It keep archive of all added versions (also not so important, but required and may be useful too)
  3. Generate update data which may be distributed from the server and used by clients for auto update

Last point is the main purpose of this tool (other two was just required to achieve the third one). You can see tool itself on some screenshots I prepared (attached to this post). It is raw and looks simple, but since it's just some backend tool it is not required to look very cool, it should be just working and be easy to use. Even it looks simple, main logic wasn't so easy and fast to code. So how it works?

When I finish some changes on my project and I feel like it should be published as new version I can just export project as you usually do in Godot. That way I should have directory with all files required to run latest version of my project (all required files + .pck files with resources). Then I can just pack that exported project folder to .zip archive and add this .zip file as new version to my updater tool. What my updater tool do is checking for all modified/removed/added files (by comparing with previous version) and prepare update data (containing only required differences). What is also cool is that .pck files are not compared as a whole files, they are also checked for internal differences and new diff .pck is created containing only changed or new resources. Also some additional metadata is created which supposed to be used by clients to make it easier to find required files etc.

With this tool creating new updates and patches should be pretty straightforward and shouldn't add almost any complexity to overall project workflow (since anyway I don't have to prepare update by hand, I just supply exported latest version and all hard work is done by tool). What is still required is to prepare client side updater which will be downloading prepared data and use it to update client as required. That shouldn't be so hard considering that preparing all that diff files was already pretty complex, so I consider client side updater to be that more simple part (even though there will be some challenges too with that part).

Anyway I won't be able to finish client side updater now, because it's pretty hard time when it comes to my regular job. Recently we had a lot of work, I think this month will also be pretty hard and I will do a lot of overtime, so I won't have time for my projects, so that's why I create this post and hopefully I will create next one already with new updater being released.

By the way, currently you won't be able to test even old version of my project (because of "no realms available" message), but that's only because TLS certificate used by client is too old already. I don't want to upload new version with updated certificate only. I will update certificate when I publish new version with auto updater.

Get EWF Multiplayer test

Download NowName your own price

Comments

Log in with itch.io to leave a comment.

So your really building a architecture for the longrun . Very cool . 

Yes, I'm trying at least. We will see how and where it will go, but I think this auto updater could be useful even for other projects too or I can work on it some more and release it as a standalone tool for everyone.