Steamworks with Unity

As we got greenlit, we are preparing the final steps before releasing. This also includes the implementation of Steam related stuff like archievements and the overlay which appears when you press “Shift + Tab” in a Steam game. We use Unity as game engine. This means that we have to use Steamworks.net which is a C# wrapper of the original Steam sdk.

However testing the implementation proved to be difficult because it only worked if we build the game, upload it on Steam and download it as a game. We found out that the reason behind this is that Unity itself is not the Steam game. So our coder tried out some really weird stuff by making Unity itself a game.

Unity as Steam Game

Unity with Steamworks

Unity as Steam game

When you start a game from Steam, Steam injects their plattform related components like the overlay into the application. Now when you download a game from Steam, a download folder with the current game is created. This folder is usually located in “..\Steam\steamapps\common”.

In order to trick Steam, all you have to do is to replace the contents of your game with Unity and rename the Unity.exe in the name of your game. When you have done this, start your game over the Steam hud. Now Unity will be launched instead of your game and Steam thinks that it is the actual game.

After you launched Unity, all Steam related icons and gizmos will pop up in your unity editor. However Unity has several graphical layers so these injected things may not appear correctly but it is sufficient to debug your Steam archievements.

Steps how to set it up:

Here is a summary of the steps you have to do in order to set this up. Keep in mind that you have a valid appid which you get when you pass greenlight.

  1. Include Steamworks.net in Unity.
  2. Build your game.
  3. Upload it on steam.
  4. Download it from Steam with your publisher account.
  5. Open the download folder. (Right click on game > Properties > Locale Data > Search Local Data)
  6. Copy the content where Unity.exe is located into this folder. (Usually Unity/Editor)
  7. Rename Unity.exe in “YourGame.exe”.
  8. Start your game from Steam.

Additionally, our coder has made a youtube video where he shows how to set this thing up: