---
title: "Set up Steam"
description: "Configure a Steam App ID and test authenticated clients correctly."
seo:
  noindex: true
---

{/* Copyright (c) 2026 Betide Studio. All Rights Reserved. */}

Run Steam and sign in to an account with access to your game. Set **Steam App ID** in **Project Settings → Betide → Crossplay → Steam**, then restart the editor.

The setting writes the Steam identity into `DefaultEngine.ini` and refreshes `steam_appid.txt` for PIE. **480** is Valve's shared Spacewar test app; use your own App ID for your game's achievements, inventory, Workshop, and release testing.

## Verify the client

Select **Verify** in the Steam settings. It checks runtime initialization, the active App ID, Steam login, and ownership. A successful check does not verify your multiplayer transport or individual service configuration.

The plugin starts Steam login automatically for the first eligible game instance, even when EOS is your primary Crossplay identity. Friends and other service queries do not start login themselves.

**Blueprint**

<BlueprintViewer title="Steam client status" src="/blueprints/crossplay-steam-client-status.txt" />

**C++**

Game module dependencies: `SIKBlueprints`, `SIKCore`, `SteamIntegrationShared`, `Engine`.

```cpp
#include "Auth/SIKAuthLibrary.h"

bool GetSteamPlayer(UObject *WorldContext, FString &OutSteamId, FString &OutDisplayName)
{
    OutSteamId.Reset();
    OutDisplayName.Reset();
    if (!USIKAuthLibrary::IsLoggedIn(WorldContext, 0))
        return false;
    OutSteamId = USIKAuthLibrary::GetLocalUserSteamId(WorldContext, 0);
    OutDisplayName = USIKAuthLibrary::GetLocalUserDisplayName(WorldContext, 0);
    return true;
}
```

These nodes are under **Steam Integration Kit → Auth**. Read services after authentication is ready. For the game's unified player identity, use [Login With Crossplay](/crossplay/identity).

## Test with two players

Use **two Steam accounts on separate machines**, each with access to the App ID. One local instance owns the Steam client for that app; additional PIE or Standalone instances remain excluded for that run. The owner keeps its connection across map travel.

`-NoSteam`, commandlets, and dedicated servers do not start a client login. Use `-NoSteam` for local tests that should exercise another provider without claiming Steam.

## Choose the backend and transport

**Online Services Mode** selects Auto, V1, or V2. Auto uses OSSv2 when available; keep related kit backend settings aligned. Use a [Crossplay preset](/start/presets) for the unified transport policy.

**Auto-Detect NetDriver From URL** is enabled by default: an IP address uses the IP driver, while a Steam-ID address uses Steam sockets. Dedicated servers use IP by default. Enable **Use Steam Sockets On Dedicated Server** only when you intend to connect to them through Steam IDs. Match **Game Server Port** to the server's listening port.

<Accordion>
  <AccordionItem title="Packaged builds and Steam launch">

The plugin supplies its Steam SDK integration and stages the runtime libraries. Test a packaged build with Steam running and the correct App ID. If initialization fails, check the runtime library, launch context, signed-in account, and app ownership against [Valve's initialization requirements](https://partner.steamgames.com/doc/sdk/api#initialization_and_shutdown).

For local development outside Steam, `steam_appid.txt` identifies the app. Do not include that development file in your Steam depot. **Relaunch In Steam** restarts a packaged build through Steam when needed; leave it off for Spacewar testing.

Steam login uses the account already signed into the Steam client. Logging out of the plugin session does not sign that account out of Steam.

  </AccordionItem>
  <AccordionItem title="Uploading builds">

Configure maps, depots, and the target beta branch under **Betide → Tools**. An empty branch leaves the uploaded build unassigned; this uploader cannot set Steam's default branch live.

Uploader credentials use per-developer storage or `SIK_STEAM_USERNAME` / `SIK_STEAM_PASSWORD`. They are not runtime credentials. Establish the account's SteamCMD login and Steam Guard authorization before unattended uploads.

  </AccordionItem>
</Accordion>

Next: [Steam multiplayer](/integrations/steam/multiplayer) or [platform services](/integrations/steam/platform-services).
