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:
steam.Overlay--- SteamForge overlay ---
Will draw : yes
Reason : Ready
Renderer loaded : yes
Enabled in Steam : yes
Process : game
RHI at Steam init: none yetRHI 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
| Node | What it opens |
|---|---|
| Show Overlay | A top level page: Friends, Community, Players, Settings, Stats, Achievements |
| Show Overlay To User | A page about a player: profile, chat, trade, add friend |
| Show Overlay To Web Page | A URL in Steam's browser |
| Show Overlay To Store | A store page, optionally adding to the cart |
| Show Invite Dialog | Steam'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.
| Output | Meaning |
|---|---|
| Is Open | Whether it just opened or closed |
| User Initiated | False 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.
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.
| Node | What it does |
|---|---|
| Show Text Input | Steam's full screen keyboard |
| Show Floating Text Input | A smaller keyboard that overlays part of the screen |
| Dismiss Text Input | Close 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.
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.