Client Updater
How to push a client change to every player without handing out a new archive: the manifest, the download route, and driving the updater from the command line.
The updater sends changed client files to your players. They open the launcher, it fetches what differs, and the game starts. No new archive is handed out.
How It Works
Three parts:
client/in your server directory is the master copy.manifest.txtis an index of every file in it with a hash. The launcher compares it against what the player has and downloads only the differences.- The website serves both, at
/downloads/client/and/downloads/client/manifest.txt. A server without the website cannot push client updates.
Files not listed in the manifest are not touched.
Pushing an Update
Change the files in client/, then rebuild the index:
server\windows\manifgen.exe client -o client\manifest.txt -cache client\data\launcher_cache.json
On Linux the same tool is in server/linux/. The flags name the index it writes and the cache file
the launcher reads alongside it.
Players get the change the next time they open the launcher. Nothing on the server needs restarting; the website serves the new manifest as soon as it exists.
If you do not rebuild the index, nothing happens. The manifest is the only thing the launcher reads.
What Is Never Overwritten
The updater leaves the player’s own files alone even when they differ: their saved login, their remembered token, and their client settings. Without this, every update would reset each player’s graphics options and log them out.
Pointing Players at Your Server
Each player’s launcher.ini needs your site under [Update] URL. It is empty by default, so a
launcher that has not been configured does not check for updates.
[Update]
URL = https://your-server.example.com
Fill it in before you distribute the client/ folder and no player has to do it themselves.
The launcher covers the rest of that file.
From the Command Line
The launcher takes flags, which is how you test an update before your players see it.
launcher.exe -update
Fetches changed files and exits. It does not log in and does not start the game. Use it to confirm a rebuilt manifest is being served and resolves to the files you meant.
launcher.exe -status
Prints whether the server is up and what it is running, then exits.
launcher.exe -skip-update
Starts the game without checking for updates. It also skips the check that refuses to start a client whose files do not match the server, so this is for development rather than for players.
Adding an account makes it an unattended login:
launcher.exe -email [email protected] -password secret
There is no separate switch for command-line mode. It engages when the flags describe what to do.
When an Update Does Not Arrive
Check in this order:
- The index was not rebuilt. Run
manifgenagain. - The website is not running. It serves the update.
[Update] URLis empty in that player’slauncher.ini.- The file is one the updater does not touch, listed above.
launcher.exe -update against your own server identifies which one it is.