> For the complete documentation index, see [llms.txt](https://gamelauncher.cloud/help/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gamelauncher.cloud/help/applications/upload-builds.md).

# Upload Builds and Patches

A **build** is a packaged version of your game: a ZIP file with everything a player needs to run it. You upload a build, Game Launcher Cloud processes it, and your players receive the update through your launcher.

There are two ways to upload. Pick the one that fits your build and follow that guide:

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>🌐 Upload from the Dashboard</strong></td><td>Drag and drop your ZIP in the browser. Up to 5 GB.</td><td><a href="/pages/nzy3OPBLAD7WQv1oBzUM">/pages/nzy3OPBLAD7WQv1oBzUM</a></td></tr><tr><td><strong>⚡ Upload with the CLI Tool</strong></td><td>For large builds, faster uploads and CI/CD automation.</td><td><a href="/pages/Pu8gtIiAg3DRg8KNEz9X">/pages/Pu8gtIiAg3DRg8KNEz9X</a></td></tr></tbody></table>

***

## Which method should I use?

<table><thead><tr><th width="190"></th><th>Dashboard (Web)</th><th>CLI Tool</th></tr></thead><tbody><tr><td><strong>Maximum file size</strong></td><td>5 GB</td><td>Large files (depending on your plan)</td></tr><tr><td><strong>Setup</strong></td><td>None, it is already in your browser</td><td>Download the CLI once</td></tr><tr><td><strong>Best for</strong></td><td>Small and medium builds, occasional updates</td><td>Large builds, frequent releases</td></tr><tr><td><strong>Upload speed</strong></td><td>Good</td><td>Faster on large files, direct to Cloudflare R2</td></tr><tr><td><strong>CI/CD automation</strong></td><td>Not available</td><td>Yes, scriptable on every release</td></tr></tbody></table>

{% hint style="info" %}
Both methods produce exactly the same build. Nothing changes for your players.
{% endhint %}

***

## Build Types

* **Baseline:** a standard upload containing all your files. This is the default.
* **Merge Build:** upload only the files you changed (for example a small typo fix or a menu update) and Game Launcher Cloud merges them with the existing files of the Baseline build.

***

## Prepare Your Build

Whatever method you use, the ZIP has to meet these requirements:

<table data-full-width="false"><thead><tr><th width="150">Requirement</th><th width="264">Details</th><th>Notes</th></tr></thead><tbody><tr><td><strong>Format</strong></td><td>ZIP compressed file</td><td>Must be a .zip file</td></tr><tr><td><strong>Size</strong></td><td>Up to 5 GB from the <a href="/pages/nzy3OPBLAD7WQv1oBzUM">Dashboard</a><br>Larger files with the <a href="/pages/Pu8gtIiAg3DRg8KNEz9X">CLI</a></td><td></td></tr><tr><td><strong>File structure</strong></td><td><strong>Files must be in the ZIP root</strong><br><em>(do not compress a single folder)</em></td><td>Select all your files and compress</td></tr></tbody></table>

{% hint style="warning" %}
**Important:** do not include unnecessary files like source code, logs, .git folders or development tools. They make every download bigger for your players.
{% endhint %}

<figure><img src="/files/dRNpT7kkLo564VoM6fpM" alt=""><figcaption><p>Compress your game as a ZIP</p></figcaption></figure>

{% hint style="success" %}
**Make sure to select all the files and compress, so they stay in the root of the ZIP**
{% endhint %}

<figure><img src="/files/dPD2krh3xAbqwFqBWtoI" alt=""><figcaption><p>CORRECT: Select all the files and compress as a ZIP</p></figcaption></figure>

### Recommended Structure

```
MyGame.zip
├── MyGame.exe              (Windows)
├── assets/
│   ├── textures/
│   ├── sounds/
│   └── models/
├── data/
│   ├── config.json
│   └── settings.ini
└── README.txt
```

{% tabs %}
{% tab title="Windows" %}

```
MyGame_Windows.zip
├── MyGame.exe           ← Main executable
├── MyGame_Data/         ← Unity/Unreal data
├── MonoBleedingEdge/    ← Unity runtime
├── UnityCrashHandler64.exe
└── UnityPlayer.dll
```

{% endtab %}

{% tab title="macOS" %}

```
MyGame_macOS.zip
├── MyGame.app/          ← macOS application bundle
│   └── Contents/
│       ├── MacOS/
│       ├── Resources/
│       └── Info.plist
└── README.txt
```

{% endtab %}

{% tab title="Linux" %}

```
MyGame_Linux.zip
├── MyGame.x86_64        ← Linux executable
├── MyGame_Data/
├── UnityPlayer.so
└── run.sh               ← Optional launch script
```

{% endtab %}
{% endtabs %}

***

## Build Notes

Build notes are optional, and players read them in the launcher before downloading. Good notes tell them what changed:

```markdown
**Version 1.2.0**

🎮 New Features:

- Added multiplayer co-op mode
- New character customization options
- 5 new maps in rotation

🐛 Bug Fixes:

- Fixed crash when loading large maps
- Improved FPS on low-end systems
- Fixed audio sync issues

⚖️ Balance Changes:

- Reduced weapon damage by 10%
- Increased player movement speed
```

{% hint style="info" %}
**Tip:** markdown formatting works here, so use it. "update" is not a build note.
{% endhint %}

***

## Next Steps

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>🌐 Dashboard Upload</strong></td><td>Step by step guide, up to 5 GB</td><td><a href="/pages/nzy3OPBLAD7WQv1oBzUM">/pages/nzy3OPBLAD7WQv1oBzUM</a></td></tr><tr><td><strong>⚡ CLI Upload</strong></td><td>Step by step guide for large builds</td><td><a href="/pages/Pu8gtIiAg3DRg8KNEz9X">/pages/Pu8gtIiAg3DRg8KNEz9X</a></td></tr><tr><td><strong>🧩 How Patching Works</strong></td><td>Delta patches, Smart Bundles and file verification</td><td><a href="/pages/G7EDuuyO4kDn9NxT7p7M">/pages/G7EDuuyO4kDn9NxT7p7M</a></td></tr><tr><td><strong>🌍 Environments</strong></td><td>Test in Staging before going to Production</td><td><a href="/pages/Bzo5c15XEsyTL0bEaWsM">/pages/Bzo5c15XEsyTL0bEaWsM</a></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://gamelauncher.cloud/help/applications/upload-builds.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
