Ali Şahan Yalçın
DocsThe Steam overlay

Social and platform

The Steam overlay

Opening it, pausing for it, and why it does not appear in the editor.

Why it does not work in Play In Editor

The overlay is not an API you call. It is a renderer Steam loads into your process during initialisation, and it draws by hooking the graphics device. It can only hook a device created after it loads.

The editor's window and graphics device exist from editor startup. Steam initialises when you press Play, minutes later. Nothing that matters was hooked, so there is nothing to draw into.

This is a property of the editor, not of your project, and no plugin can change it.

Test the overlay with Play > Standalone Game or in a packaged build. Those are separate processes where SteamForge initialises Steam before the graphics device exists.

Checking whether it can work

Run this in the console:

code
1
steam.Overlay
code
1
2
3
4
5
6
7
--- SteamForge overlay ---
  Will draw        : yes
  Reason           : Ready
  Renderer loaded  : yes
  Enabled in Steam : yes
  Process          : game
  RHI at Steam init: none yet

RHI at Steam init is the line that decides everything. none yet means Steam got in before the graphics device, which is what you want. A named device means it was built first, and no amount of correct looking Steam state will produce an overlay.

You can read the same thing from Blueprint with Get Overlay Status on the SteamForge Overlay subsystem, which also gives you a plain language explanation.

Opening it

NodeWhat it opens
Show OverlayA top level page: Friends, Community, Players, Settings, Stats, Achievements
Show Overlay To UserA page about a player: profile, chat, trade, add friend
Show Overlay To Web PageA URL in Steam's browser
Show Overlay To StoreA store page, optionally adding to the cart
Show Invite DialogSteam's own friend picker for inviting to a lobby

Each returns false when the overlay cannot appear, so a UI button can report that rather than looking broken.

Use Is Overlay Ready to gate overlay buttons in your UI. Steam can be perfectly connected in a build where the overlay cannot appear.

Pausing for it

Bind On Overlay Activated.

OutputMeaning
Is OpenWhether it just opened or closed
User InitiatedFalse when your game opened it

Pause, and release mouse capture. While the overlay is open it owns input, and a game that keeps simulating behind it will get the player killed while they read a message.

User Initiated lets you skip pausing for an invite dialog you raised yourself.

WARNING: A single player game that does not pause for the overlay is the most common Steam review complaint that is purely a bug. It is two nodes.

Toast placement

Set Notification Corner and Set Notification Inset move Steam's achievement and invite toasts so they clear your own HUD. Set them once at startup. The default is bottom right, which is exactly where most games put their own notifications.

The on screen keyboard

On a Steam Deck in gamepad mode there is no OS keyboard, so a text field in your game is unreachable without this.

NodeWhat it does
Show Text InputSteam's full screen keyboard
Show Floating Text InputA smaller keyboard that overlays part of the screen
Dismiss Text InputClose whichever is open

The result arrives as On Text Input Finished, with whether they submitted and what they typed.

Show Text Input returns false outside Big Picture on a desktop, which is correct: there is a real keyboard right there, so use your own field.

INFO: The floating keyboard reports dismissal with no payload at all. Steam exposes no way to know whether the player submitted or what they typed, so it is reported as a cancel and your own field stays the source of truth. That is a Steam limitation.

Getting the overlay into a shipped build

The overlay works reliably when the Steam client launched the process. For a shipping build, turn on Restart Through Steam If Needed in Project Settings. If the player started the game any other way, Steam quits and relaunches it properly.

It is ignored in the editor and on App ID 480, because Steam relaunches whatever app is registered under the ID rather than your executable, and on 480 that is Valve's Spacewar demo.