> For the complete documentation index, see [llms.txt](https://gamelauncher.gitbook.io/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gamelauncher.gitbook.io/documentation/getting-started/how-it-works.md).

# How it works

### How Game Launcher Works

Game Launcher is a standalone program designed to make installing, updating, and repairing your game fast, efficient, and lightweight. Here's how it works:

***

#### Installation, Patching, and Repair

When you create a patch for your game, you need to upload the contents of the `Output` folder to your hosting server. This folder includes three main subfolders:

* **InstallerPatch (optional):**\
  Contains the full game packaged in a single file. If a user doesn't have the game installed, this file will be downloaded.
* **RepairPatch:**\
  Contains all the files from the latest version of the game. If the launcher detects any missing or corrupted files on the user's side, only those files will be downloaded.
* **IncrementalPatch:**\
  Contains the data to update from a previous version to a newer one. If the user already has an older version installed, only the necessary files to bring it up to date will be downloaded.

> The launcher automatically determines the best update method by comparing patch sizes. It always chooses the smallest and most efficient option.

***

#### Creating Your Own Patches

You can create your own patches for both your **game** and the **launcher**. These are handled separately in their own dedicated workspaces.

> Want to learn how to create patches step by step? Check the full guide here: [Creating Launcher Version](/documentation/creating-launcher-version/1.-deploy-your-launcher.md)

***

#### Binary Diff vs. Full File Updates

Game Launcher uses a technique called **Binary Diff** to make patching smarter and more efficient by updating only the parts of files that actually changed.

**Real-world Example:**

Imagine you have a file named `MyEnvironment.map` that is 10 GB in size.\
You make a small change in your game engine, such as adding a new sound. With traditional patching, the entire 10 GB file would need to be downloaded again, even for a tiny change.

But with Game Launcher:

* The system detects the exact difference in the file using Binary Diff.
* It generates a small patch containing only the changed data.
* The launcher applies this patch directly to the existing file on the user's device.

> The result: the user downloads just a few megabytes instead of the entire file. Faster updates, less bandwidth, and a better user experience.

Without Binary Diff, any minor change would force a full file re-download—even if it’s just one byte. Not ideal, right? That’s why Game Launcher makes a big difference.

***

#### Key Benefits of Game Launcher

* **Saves bandwidth** for you and your users
* **Faster updates** with smaller downloads
* **Smart auto-detection** of the best patch method
* **Separate patching systems** for game and launcher updates
* **Binary Diff technology** for ultra-lightweight patches
