Quick answer: The overlay hooks your renderer when the game starts, so the game must be launched by Steam (or have Steam running with an app ID in development), and SteamAPI_Init must run before the graphics device is created. The overlay only redraws when you present frames, so games that render on demand look frozen. Also check the player's overlay setting and other overlays.
The Steam overlay matters more than it looks: it is where players accept invites, see achievements and open the store page from your game. When Shift+Tab does nothing, invites and in-game purchases quietly break with it.
- Cause 1: the game was not launched through Steam
- Cause 2: Steam initialized after the graphics device
- Cause 3: the game does not present frames
- Cause 4: the overlay is disabled
- Cause 5: other overlays and injectors
- Engine-specific notes
- When overlay features silently fail
- Related problems
- Frequently asked questions
Cause 1: the game was not launched through Steam
Steam injects the overlay into processes it starts. A game started from its folder, from your IDE or from a launcher you wrote is not hooked unless the Steam API is initialized with Steam running, and even then the overlay is most reliable when Steam launched the game. For development, use the Steam client's Play button on a build installed through a test branch, or add your local build as a non-Steam game only for overlay tests.
Cause 2: Steam initialized after the graphics device
The overlay hooks the rendering API when the device is created. If your code creates the window and graphics device first and calls SteamAPI_Init later, the hook may miss the device. Initialize Steam as early as possible in startup, before any rendering setup. Engine integrations usually handle this when you use their built-in Steam support; custom initializations added later in startup are where it breaks.
Cause 3: the game does not present frames
The overlay draws on top of your frames. If the game stops presenting (a menu that renders only when something changes, a paused game that stops drawing, or Godot's low processor usage mode), the overlay opens but appears frozen or never visibly appears. Keep presenting at a steady rate while the overlay is active. Steam tells you when it opens:
// C++ Steamworks
STEAM_CALLBACK(Game, OnOverlay, GameOverlayActivated_t);
void Game::OnOverlay(GameOverlayActivated_t* p)
{
overlayOpen = p->m_bActive != 0; // pause gameplay, keep rendering
}
Cause 4: the overlay is disabled
- Steam's global setting: Settings > In Game > Enable the Steam Overlay while in-game.
- Per game: right-click the game, Properties > General > Enable the Steam Overlay while in-game.
- The overlay shortcut may have been changed from Shift+Tab, or your game may capture Shift+Tab itself.
Cause 5: other overlays and injectors
Recording and monitoring tools (RivaTuner/MSI Afterburner, some capture software), other launchers' overlays and mod injectors hook the same rendering calls. Ask affected players to close them one at a time. Antivirus and anti-cheat software can also block the overlay's DLL injection.
Engine-specific notes
- Unity: initialize Steamworks.NET or Facepunch early in a bootstrap scene; see the Unity overlay post below.
- Godot: the Vulkan renderer needs Steam's Vulkan layer; see the Godot overlay post below. Low processor usage mode freezes the overlay.
- Unreal: OnlineSubsystemSteam initializes early in packaged and standalone builds; the overlay does not appear in Play-in-Editor.
When overlay features silently fail
A broken overlay usually surfaces as “invites don't work” or “purchase did nothing”. Bugnet's SDKs for Unity, Godot and Unreal file errors automatically with the player's OS, hardware and recent log lines, and pull your Steam reviews into the same dashboard, and an in-game report form gives players a way to tell you before they leave a review.
Related problems
- How to Fix the Steam Overlay Not Showing in Unity
- How to Fix the Steam Overlay Not Rendering in a Godot Vulkan Game
- How to Fix Steam Friend Invites and Join-Game Not Working
Frequently asked questions
Why does the Steam overlay not open in my game?
The game was not launched through Steam, SteamAPI_Init ran after the graphics device was created, the overlay is disabled in Steam settings, or another overlay or injector conflicts.
Why does the Steam overlay appear frozen?
The overlay only updates when the game presents frames. Games that stop rendering while paused or render on demand make it look frozen.
How do I know when the Steam overlay opens?
Listen for the GameOverlayActivated_t callback, or your engine wrapper’s equivalent, and pause gameplay while keeping rendering running.
Init Steam before the renderer, keep presenting frames, and test from the Steam client.