Codename-Recon / Gridlock

Gridlock - Turn-based strategy game
GNU General Public License v3.0
9 stars 5 forks source link

Implement Auto-Updater for the Game #26

Open HunterNN opened 9 months ago

HunterNN commented 9 months ago

This issue aims to implement an auto-updater feature directly the Godot game. The updater will run when the game starts, checking if the current version is older than the one available on GitHub releases site. If a new version is found, the updater will prompt the user for permission to download and replace the existing executable with the latest version, then restart the game.

The updater should also detect the specific system (e.g., iOS, Android) it's running on. In cases where self-updating isn't possible, the updater will simply notify users that a new version is available. This could also be helpful for a Steam release, as automatic updates are already provided.

The following links may be helpful for implementation:

Dracks commented 9 months ago

I think the url of download in the popup will be nice to have no matter what.

HunterNN commented 9 months ago

Yeah, that makes sense, especially if there are problems with the automatic process.

Dracks commented 9 months ago

Also, I think the automatic update, for minor version, I'm pretty sure can be done, we can simply switch the game.pck, and that should work (yeah, different os, will need different loginc), but when we change the engine version, that can be more tricky :)

FlygonC commented 9 months ago

Is the updater going to be part of the main application or separate? Most games I've seen usually have it separate.

HunterNN commented 9 months ago

It would be nice if it were integrated into the main application. But perhaps there are some technical reasons why it is typically offloaded to a dedicated updater.

Dracks commented 9 months ago

I expect is easy to update, since some OS, will not allow to remove a file that is loaded, and can make things crash. Then we can simply download some small app, that will do the update, we can start this app and quit the current game, let the app download the update, and start it.

Also, with an external program, is possible that we can find some option already implemented