Steamworks.NET is a C# Wrapper for Valve's Steamworks API, it is intended for use with Unity. This project relies on dynamic libraries created by CSteamworks. (Prebuilt and included for ease of use)
Steamworks.NET was designed to be as close as possible to the original C++ API, as such the documentation provided from Valve largely covers usage of Steamworks.NET. Niceties and C# Idioms can be easily implemented on top of Steamworks.NET.
The included CSteamworks.dll was built with VS2010, and as such requires Microsoft Visual C++ 2010 Redistributable Package (x86). You must also ship this to customers via Installation -> Installers on the Steam Partner Website.
Steamworks.NET currently supports Steamworks SDK 1.28.
- Author: Riley Labrecque
- License: MIT
- Discussion
- Reporting Issues
- 1-on-1 support is available by donating $40 USD or greater.
- Support can be obtained via Email or Steam
- I can only help with Steamworks.NET specific issues, general API questions should be asked on the Steamworks discussion board.
To use Steamworks.NET you must be a Steamworks developer. Steamworks.NET requires Unity Pro for the plugin functionality.
- Clone or download a Zip Archive: Stable (2.0.0) -- Master (Cutting-edge Development)
- Extract and copy Steamworks.NET's
Plugins/
andEditor/
folders into yourAssets/
folder. - Open
Plugins/Steamworks.NET/redist/steam_appid.txt
and replace480
with your own AppId. - Launch your Unity project. It should copy steam_appid.txt (and steam_api.dll if your on windows) into the root of your project.
- Close Unity and relaunch the project so that it loads the newly copied steam_appid.txt & steam_api.dll.
If you plan on shipping a Linux build (do it!) then you must edit Plugins/Steamworks.NET/redist/linux/launchscript
and replace REPLACEWITHYOURGAMENAME
with your games name.
Your game must then be launched through the script (which will be copied to the output folder and renamed to your executables name automatically.)
Check out these sample projects to get started:
If you are not using Unity then you have two routes that you could take.
- A: Copy
Plugins/Steamworks.NET
into your C# project. In Visual Studio open your project properties, change to the Build tab and includeSTEAMWORKS_WIN
,STEAMWORKS_LIN
, orSTEAMWORKS_OSX
inConditional compilation symbols
. - This is only recommended if your binary is not portable across platforms already. If you ship on multiple platforms you must have multiple build targets for each platforms. Please prefer the second route.
- B: The peferable route is to build the standalone assemblies, with the project file located in
Standalone/
. Alternatively you can download the prebuilt binaries (2.0.0). - Further instructions are provided by the README.md in the
Standalone/
folder.
If you wish to use the functions from sdkencryptedappticket.dll
then you will need to manually place the dll/so/dylib in the following location:
- Windows: Next to steam_api.dll
- OSX: In
/Contents/Frameworks/MonoEmbedRuntime/osx/
- Linux: Next to CSteamworks.so
sdkencryptedappticket.dll
can be found in the Steamworks SDK.
- Only x86 builds are currently supported
- Steamworks.NET does not currently support ISteamAppTicket or ISteamGameCoordinator.
- The following Interfaces are largely untested (but should be completely functional):
ISteamMatchmaking (May require some work!)
ISteamNetworking
ISteamUGC
ISteamUnifiedMessages
ISteamGameServer
ISteamGameServerHttp
ISteamGameServerNetworking
ISteamGameServerStats
ISteamGameServerUtils
- The following are Unity specific and are out of our control, ALL Steamworks wrappers for Unity experience these.
- When used from within the Unity Editor, Steam will think you are in game constantly. This is normal and does not effect usage.
- The Overlay and Steam Controller only work when launched from Steam directly. (A small number of Steamworks features rely on the overlay being present. Prefer using a Local Content Server for testing.)