# Application Settings

Customize your application behavior, appearance, and integrations. ⚙️

***

## Overview

Application Settings give you full control over how your game behaves across all platforms and environments.

{% hint style="info" %}
**Access Settings**: Go to your application → Click **Settings** tab
{% endhint %}

***

## General Settings

### Basic Information

| Setting              | Description                                   | Example                                   |
| -------------------- | --------------------------------------------- | ----------------------------------------- |
| **Application Name** | Display name shown in dashboard and launcher  |                                           |
| **Description**      | Brief game description (supports markdown)    | "Epic fantasy adventure with multiplayer" |
| **Application ID**   | Unique identifier (auto-generated, read-only) |                                           |

***

### Application Icon

Upload a custom icon for your application:

**Requirements:**

* ✅ Format: PNG, JPG, or ICO
* ✅ Size: 512x512 pixels (recommended)
* ✅ Max file size: 5MB
* ✅ Transparent background supported

**Upload Steps:**

1. Click on the icon placeholder
2. Select image file
3. Adjust crop if needed
4. Click **Save**

{% hint style="success" %}
**Tip**: Use a square image with transparent background for best results!
{% endhint %}

***

## Control Panel

### App Status Control

Manage your app's availability and communicate status to players.

**Settings:**

| Setting              | Description                          | Default |
| -------------------- | ------------------------------------ | ------- |
| **Enable App**       | Enable or disable the app completely | ✅ true  |
| **Maintenance Mode** | Put app in maintenance mode          | ❌ false |
| **Alert Message**    | Display custom message to all users  | Empty   |

**How It Works:**

* **Enabled (Enable App: enabled)** - App appears normally in launcher, players can download and play
* **Maintenance Mode (Maintenance Mode: enabled)** - App visible but shows maintenance notice, download disabled
* **Disabled (Enable App: disabled)** - App hidden from launcher completely
* **Alert Message** - Custom message displayed on app card (works with any status)

**Use Cases:**

* **Maintenance Mode** - Display "Server maintenance in progress" during updates
* **Alert Message** - Announce "New DLC available!" or "Double XP Weekend!"
* **Disabled State** - Completely hide unreleased or deprecated games

**Example Alert Messages:**

```
"Server maintenance: 10:00 PM - 2:00 AM EST"
"New update available! Check patch notes."
"Double XP Event Active!"
"Beta Testing - Expect bugs and frequent updates"
```

{% hint style="info" %}
**Visibility:** Alert messages appear as banner on the app card in the launcher. Keep them short and actionable.
{% endhint %}

***

## Platform Settings

Configure platform-specific options for Windows, macOS, and Linux.

### Windows Platform

**Basic Settings:**

| Setting              | Description                             | Default |
| -------------------- | --------------------------------------- | ------- |
| **Enable App**       | Enable Windows platform for this app    | ✅ true  |
| **Link Only Mode**   | Launch button opens URL instead of game | ❌ false |
| **Link URL**         | URL to open when "Link Only" is enabled | Empty   |
| **Maintenance Mode** | Platform-specific maintenance           | ❌ false |

**Link Only Mode:**

When enabled, the "Play" button opens a website instead of launching the game.

**Use Cases:**

* Web-based games
* Browser-hosted games
* Redirect to external launchers (Steam, Epic)
* Early access/wishlist pages

**Example:**

```
isLinkOnly: true
linkUrl: "https://store.steampowered.com/app/123456/"

Result: "Play" button opens Steam page
```

***

**Primary Executable Configuration:**

| Setting                            | Description                     | Default |
| ---------------------------------- | ------------------------------- | ------- |
| **Executable Name**                | Name of the .exe file           | Empty   |
| **Display Name**                   | Display name for primary button | Empty   |
| **Abbreviated Name**               | Short name for UI               | Empty   |
| **Enable Custom Launch Arguments** | Enable custom launch arguments  | ❌ false |
| **Launch Arguments**               | Command-line parameters         | Empty   |

***

**Secondary Executable Configuration:**

| Setting                               | Description                               | Default      |
| ------------------------------------- | ----------------------------------------- | ------------ |
| **Enable Secondary Executable**       | Enable second executable option           | ❌ false      |
| **Secondary Executable Name**         | Name of secondary .exe file               | Empty        |
| **Secondary Display Name**            | Display name for secondary button         | Empty        |
| **Secondary Abbreviated Name**        | Short name for secondary                  | Empty        |
| **Enable Secondary Launch Arguments** | Enable arguments for secondary            | ❌ false      |
| **Secondary Launch Arguments**        | Command-line parameters for secondary     | Empty        |
| **Allow Simultaneous Execution**      | Allow both executables to run at once     | ❌ false      |
| **Play Button Display Mode**          | How to show options (Dropdown/TwoButtons) | 0 (Dropdown) |

**Display Modes:**

* **0 = Dropdown** - Single button with dropdown to select executable
* **1 = Two Buttons** - Two separate launch buttons side by side

**Common Use Cases:**

* 🎮 **Graphics API Selection** - DirectX vs OpenGL vs Vulkan
* 💻 **Architecture Options** - 32-bit vs 64-bit executables
* 🎨 **Build Variants** - Stable vs Experimental versions
* ⚙️ **Performance Modes** - Standard vs Low-Spec optimized

<figure><img src="https://4241524842-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FnNH3XbUy7pSptjMVADb2%2Fuploads%2FGMP0q4SbKD55zOEMzIyP%2Fimage.png?alt=media&#x26;token=0f7c8443-5a00-4a54-ba35-e13d728f537a" alt=""><figcaption></figcaption></figure>

**Player Experience:**

1. Player sees both options in launcher
2. Selects preferred executable
3. Launcher remembers their choice
4. Can switch anytime

{% hint style="info" %}
**User Preference:** The launcher automatically remembers each player's last selection for convenience.
{% endhint %}

***

### macOS Platform

| Setting              | Description              | Default |
| -------------------- | ------------------------ | ------- |
| **Enable App**       | Enable macOS platform    | ❌ false |
| **Executable Name**  | Name of the .app bundle  | Empty   |
| **Launch Arguments** | Command-line parameters  | Empty   |
| **Link Only Mode**   | Button opens URL instead | ❌ false |
| **Link URL**         | URL for link mode        | Empty   |
| **Maintenance Mode** | Platform maintenance     | ❌ false |

### Linux Platform

| Setting              | Description              | Default |
| -------------------- | ------------------------ | ------- |
| **Enable App**       | Enable Linux platform    | ❌ false |
| **Executable Name**  | Binary file name         | Empty   |
| **Launch Arguments** | Command-line parameters  | Empty   |
| **Link Only Mode**   | Button opens URL instead | ❌ false |
| **Link URL**         | URL for link mode        | Empty   |
| **Maintenance Mode** | Platform maintenance     | ❌ false |

{% hint style="warning" %}
**Platform Maintenance:** Use this to temporarily disable a specific platform (e.g., Windows only) while keeping others active.
{% endhint %}

{% hint style="warning" %}
**Admin Rights**: Only enable "Run as Admin" if absolutely necessary. Players will see UAC prompts.
{% endhint %}

**macOS-Specific Settings**

| Setting              | Description              | Example                     |
| -------------------- | ------------------------ | --------------------------- |
| **App Bundle**       | Name of the .app         |                             |
| **Launch Arguments** | Command-line parameters  | `--fullscreen`              |
| **Code Signing**     | Verify app signature     |                             |
| **Notarization**     | Apple notarization check | ✅ Required for macOS 10.15+ |

**Example Configuration:**

```
App Bundle: MyGame.app
Arguments: --fullscreen
Code Signing: Enabled
```

{% hint style="info" %}
**macOS Catalina+**: Apps must be notarized to run without warnings.
{% endhint %}

**Linux-Specific Settings**

| Setting               | Description             | Example              |
| --------------------- | ----------------------- | -------------------- |
| **Executable**        | Binary file name        |                      |
| **Launch Arguments**  | Command-line parameters | `--fullscreen`       |
| **Working Directory** | Directory to run from   |                      |
| **Dependencies**      | Required packages       | `libgl1, libasound2` |

**Example Configuration:**

```
Executable: game.x86_64
Arguments: --opengl-version=4.5
Directory: ./
```

{% hint style="warning" %}
**Dependencies**: Document required libraries in your README. Players may need to install them manually.
{% endhint %}

***

## Launch Configuration

### Launch Arguments

Customize how your game starts:

**Common Arguments:**

| Argument       | Purpose                  | Example                  |
| -------------- | ------------------------ | ------------------------ |
| `--fullscreen` | Start in fullscreen mode | `--fullscreen`           |
| `--windowed`   | Start in windowed mode   | `--windowed`             |
| `--resolution` | Set window resolution    | `--resolution=1920x1080` |
| `--quality`    | Graphics quality preset  | `--quality=high`         |
| `--language`   | Override game language   | `--language=es`          |
| `--debug`      | Enable debug mode        | `--debug`                |

**Custom Arguments:**

```bash
--server=myserver.com --port=7777 --username={player_name}
```

{% hint style="success" %}
**Variable Replacement**: Use `{player_name}`, `{player_id}` to inject player data into arguments!
{% endhint %}

***

## Advanced Settings

### Directory Configuration

| Setting                 | Description                      | Default |
| ----------------------- | -------------------------------- | ------- |
| **Root Directory Name** | Name of the app's root directory | `Apps`  |

**How It Works:**

The `rootName` defines the folder structure where your app is installed:

```
Launcher Directory/
└── Apps/                  ← rootName
    └── YourApp/
        ├── Game.exe
        ├── Data/
        └── Assets/
```

**Custom Root Names:**

You can customize this to match your branding:

```
rootName: "Games"       →  Launcher/Games/YourApp/
rootName: "Apps"        →  Launcher/Apps/YourApp/
rootName: "Content"     →  Launcher/Content/YourApp/
```

{% hint style="info" %}
**Coordination:** This should match the `mainAppSubdirectoryName` setting in your launcher's advanced settings for consistency.
{% endhint %}

***

## Auto-Update Settings

### Update Behavior

{% @mermaid/diagram content="stateDiagram-v2
\[\*] --> CheckUpdate: Launcher Starts
CheckUpdate --> UpdateAvailable: New Version Found
CheckUpdate --> UpToDate: No Update

```
UpdateAvailable --> Download: Auto-Download Enabled
UpdateAvailable --> Prompt: Manual Mode

Download --> Install: Download Complete
Prompt --> UserDecision: Ask Player

UserDecision --> Download: Player Accepts
UserDecision --> UpToDate: Player Declines

Install --> [*]: Ready to Play
UpToDate --> [*]: Ready to Play" %}
```

**Configuration Options:**

**Fully Automatic Updates**

* ✅ Check on every launch
* ✅ Download automatically in background
* ✅ Install before launching
* ⚡ Players always have latest version

**Best for:**

* Multiplayer games (version consistency)
* Frequent updates
* Critical bug fixes

**Ask Before Updating**

* ✅ Check on launch
* ❓ Ask player before downloading
* ⏸️ Player can postpone
* 🎮 Can play old version

**Best for:**

* Single-player games
* Large updates (>1GB)
* Player preference

**Manual Updates Only**

* ⏸️ No automatic checks
* 🔍 Player must click "Check for Updates"
* 🎮 Full player control

**Best for:**

* Beta versions
* Development builds
* Special circumstances

***

### Update Schedule

Control when updates are checked:

| Schedule         | Description                   | Check Frequency |
| ---------------- | ----------------------------- | --------------- |
| **Every Launch** | Check on every launcher start |                 |
| **Hourly**       | Check once per hour           | Moderate        |
| **Daily**        | Check once per day            |                 |
| **Manual**       | Only when player clicks       | Never automatic |

***

## File Verification

### Integrity Checking

Ensure game files are not corrupted:

{% @mermaid/diagram content="graph TD
Launch\[Player Clicks Play] --> Check{Verify Files?}
Check -->|Enabled| Scan\[Scan Game Files]
Check -->|Disabled| Play\[Launch Game]

```
Scan --> Compare[Compare Hashes]
Compare --> Valid{Files OK?}

Valid -->|Yes| Play
Valid -->|No| Repair[Download Missing/Corrupt Files]
Repair --> Play

style Launch fill:#4f46e5,stroke:#4338ca,color:#fff
style Play fill:#10b981,stroke:#059669,color:#fff
style Repair fill:#f59e0b,stroke:#d97706,color:#fff" %}
```

**Verification Options:**

| Option                | Description                | Impact                   |
| --------------------- | -------------------------- | ------------------------ |
| **None**              | No verification            |                          |
| **Quick Check**       | Verify critical files only | ⚡ Fast, basic protection |
| **Full Verification** | Check all files            |                          |
| **On Demand**         | Only when player requests  | ⚡ Fast, manual control   |

{% hint style="info" %}
**Recommended**: Use "Quick Check" for most games. Full verification for multiplayer/competitive games.
{% endhint %}

***

## Advanced Settings

### Custom Installation Paths

{% @mermaid/diagram content="graph LR
Default\[Default Path] --> Custom\[Custom Subdirectory]

```
Default --> A[C:/Games/GameLauncherCloud/MyGame/]
Custom --> B[C:/Games/GameLauncherCloud/custom-folder/]

style Default fill:#3b82f6,stroke:#2563eb,color:#fff
style Custom fill:#f59e0b,stroke:#d97706,color:#fff" %}
```

**Options:**

* **Default**: `{appname}/` (recommended)
* **Custom**: Any valid folder name (no special characters)

**Example:**

```
Default: MyAwesomeRPG/
Custom:  mmorpg-game/
```

***

### Prerequisites

Specify required software that must be installed:

| Prerequisite                   | Description           | Auto-Install |
| ------------------------------ | --------------------- | ------------ |
| **.NET Framework**             | .NET 6.0, 7.0, 8.0    |              |
| **Visual C++ Redistributable** | 2015-2022 versions    | ✅ Yes        |
| **DirectX**                    | DirectX 11/12 runtime |              |
| **Custom Prerequisites**       | Add download URL      | ❌ Manual     |

***

## Integrations

### Discord Rich Presence

Show game activity on Discord:

{% @mermaid/diagram content="graph LR
Game\[Your Game] --> Launcher\[Launcher]
Launcher --> Discord\[Discord Client]
Discord --> Status\[Playing MyGame]
Status --> Details\[Level 5 - Forest Area]

```
style Game fill:#4f46e5,stroke:#4338ca,color:#fff
style Discord fill:#5865f2,stroke:#4752c4,color:#fff" %}
```

**Configuration:**

* **Application ID**: Your Discord App ID
* **Large Image**: Game icon/logo
* **Small Image**: Status icon
* **Details**: Custom status text

**Example:**

```
Application ID: 123456789012345678
Details: {level} - {area}
State: {player_count} players online
```

{% hint style="info" %}
**Get Discord App ID**: Create an app at [Discord Developer Portal](https://discord.com/developers/applications)
{% endhint %}

***

### Webhooks

Receive notifications about events:

{% @mermaid/diagram content="sequenceDiagram
participant Game as Your Game
participant API as Game Launcher Cloud
participant Webhook as Your Webhook
participant Discord as Discord/Slack

```
Game->>API: Event Triggered
API->>API: Process Event
API->>Webhook: POST Event Data
Webhook->>Discord: Format & Send
Discord->>Discord: Show Notification" %}
```

**Supported Events:**

* 📥 Build uploaded
* 🚀 Build published
* 👥 New player registered
* 💥 Crash reported
* 📊 Milestone reached (downloads, etc.)

**Webhook URL:**

```
https://your-server.com/webhook/gamelauncher
```

***

## Control Panel

### Maintenance Mode

Temporarily disable access to your game:

{% @mermaid/diagram content="stateDiagram-v2
\[\*] --> Active: Normal Operation
Active --> Maintenance: Enable Maintenance
Maintenance --> Message: Show Custom Message
Message --> Active: Disable Maintenance

```
note right of Maintenance
    Players see maintenance
    message and cannot launch
end note" %}
```

**Use Cases:**

* 🔧 Server maintenance
* 🐛 Critical bug discovered
* 🔄 Major update deployment
* 📊 Database migration

**Configuration:**

* **Enable/Disable**: Toggle maintenance mode
* **Custom Message**: Explain why game is offline
* **Estimated Time**: When will it be back

**Example Message:**

```
🔧 Scheduled Maintenance

We're performing server updates to improve your experience.

Expected Downtime: 2 hours
Estimated Return: 15:00 UTC

Thank you for your patience!
```

***

## Danger Zone

### Destructive Actions

{% hint style="danger" %}
**Warning**: These actions are permanent and cannot be undone!
{% endhint %}

**⚠️ Delete Application**

Permanently delete this application, all builds, analytics, and settings. This cannot be recovered.

**Before Deleting:**

* ✅ Download any important data
* ✅ Export analytics reports
* ✅ Backup builds if needed
* ✅ Notify team members
* ✅ Remove from active launchers

***

## Best Practices

### ✅ Recommendations

**🎯 Launch Settings**

Test launch arguments on all platforms before releasing

**🔄 Auto-Update**

Enable automatic updates for multiplayer games

**🛡️ Verification**

Use file verification for competitive/online games

**🔔 Notifications**

Set up webhooks to monitor important events

***

## 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>📦 Manage Builds</strong></td><td>Upload and deploy builds</td><td><a href="https://github.com/GameLauncherCloud/GameLauncherCloud-Gitbook/blob/main/docs/apps/broken-reference/README.md">https://github.com/GameLauncherCloud/GameLauncherCloud-Gitbook/blob/main/docs/apps/broken-reference/README.md</a></td></tr><tr><td><strong>🚀 Create Launcher</strong></td><td>Build your custom launcher</td><td><a href="../launchers/create-launcher">create-launcher</a></td></tr><tr><td><strong>📰 Create News</strong></td><td>Engage players with updates</td><td><a href="../news-and-announcements/create-news">create-news</a></td></tr></tbody></table>

***

{% hint style="success" %}
**Questions?** Contact <support@gamelauncher.cloud> or join our [Discord community](https://discord.com/invite/FpWvUQ2CJP)!
{% endhint %}
