Steamworks Documentation
Steam Overlay

Overview

The Steam overlay is a piece of the Steam user interface that can be activated over the top of almost any game launched through Steam. It lets the user access the friends list, web browser, chat, and in-game DLC purchasing.

The default key for a user to access the overlay while in a game is SHIFT+TAB, but they can change it in their Steam->Settings dialog.

Requirements

Your game does not need to do anything special for the overlay to work, it automatically hooks into any game launched from Steam! While in development and running your game in a debugger, the overlay is loaded when you call SteamAPI_Init. As such you'll need to make sure to call SteamAPI_Init prior to initializing the OpenGL/D3D device, otherwise it won't be able to hook the device creation.

The overlay supports games that use DirectX 7 - 12, OpenGL, Metal, and Vulkan. The overlay will not be active in software-rasterized games.

macOS: Overlay support for 10.15 (Catalina) requires adding entitlements to your build configuration. Details are provided on the platforms page.
NOTE: The overlay is automatically disabled for 'Software' app types. If you need the overlay enabled, you can do so by:
  • Making sure your Steam account has the Edit App Metadata permission
  • Navigate from the App's landing page to > Edit Steamworks Settings > Installation tab > General Installation
  • Check box for Enable Steam Overlay for Application
  • Publish

Activating the overlay from your app

There are a set of functions in the Steamworks API that give you direct access to triggering the game overlay.

Communication from the overlay to your game

The following signals (callbacks) are sent from Steam to your game, based on user action in the overlay:
  • GameOverlayActivated_t
    Posted when game overlay activates or deactivates. The game can use this to pause or resume single player games.
  • GameServerChangeRequested_t
    Posted when the user selects a friends game to join, contains details about the game server to join.
  • GameLobbyJoinRequested_t
    Posted when the user selects a friends game to join, contains details about the lobby to join.

Frequently Asked Questions

NOTE: You may find additional answers on the customer facing support site such as this topic: Steam Community Overlay does not Activate.

Q. Why is the Steam overlay crashing my app?

A. The Steam overlay is used in thousands of games and as such it has been very thoroughly tested and is rarely the cause of a crash. However, because of the way it injects itself into the game, it does often expose memory leaks or memory corruption in the usage of your rendering API that may not have impacted game play.

To diagnose overlay crashes with DirectX for example, try to determine how D3D got into a bad state by using the d3d debug runtime with all (info/warning/error/notice) level spew turned on. It might give some hints to orphaned d3d resources. If you don’t find anything that way there may be a more general memory corruption issue. If these always occur on shutdown then it’s likely a shutdown ordering issue with the game not cleaning up as it shuts down.

If after debugging the app is still crashing in the overlay, please notify us in the Steamworks Development Group.

Q. Why isn't the Steam overlay showing up in my app?

A. First ensure that you meet the Requirements above. If you do meet the requirements and it's still not showing up, make sure you're launching the app through the Steam client, either directly from the lobby/quick launch list, or by calling SteamAPI_RestartAppIfNecessary.

Q. My game is using D3D12 on Win7, and the Steam overlay is not working. Why?

A. Please refer to this Microsoft document on how to add Steam overlay support.