OpenSteamworks 1.2.2

dotnet add package OpenSteamworks --version 1.2.2
                    
NuGet\Install-Package OpenSteamworks -Version 1.2.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OpenSteamworks" Version="1.2.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OpenSteamworks" Version="1.2.2" />
                    
Directory.Packages.props
<PackageReference Include="OpenSteamworks" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OpenSteamworks --version 1.2.2
                    
#r "nuget: OpenSteamworks, 1.2.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OpenSteamworks@1.2.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OpenSteamworks&version=1.2.2
                    
Install as a Cake Addin
#tool nuget:?package=OpenSteamworks&version=1.2.2
                    
Install as a Cake Tool

OpenSteamworks

Use Steam's internal ClientAPI. With this you can build custom tools to interact with the local Steam Client to provide functionality not available through the official Steamworks API.

Features

  • Raw access to underlying ClientAPI interfaces
  • Managed helpers to make using ClientAPI easier

Requirements

You'll need to provide your own binaries, versioned exactly the same as Manifests/<platform manifest>, regardless of connection mode choice.

This library does not check the version, instead various issues will manifest at runtime like segfaults, wrong functions being called, issues connecting to existing clients, etc.

Connection modes

Locally running Steam Client

This library can connect to a locally running Steam Client (referred to as ExistingClient). This connection mode requires that the version of this library matches the locally installed Steam Client version, if the versions don't match, you cannot connect to the local client. This is the mode you should use when building small apps like compat tool or library managers that enhance ValveSteam.

When developing OpenSteamworks, you may pin your local Steam Client's version for ease of development. This is not recommended for long-time use though, as running an outdated Steam Client may lead to security issues or nonfunctionality. Also, you won't get cool new Steam features.

Environment

No special environment is expected, as this is the mode apps use to connect.

Limitations
  • No access to some APIs, such as IClientVR
  • Limited access to some APIs, such as IClientCompat, IClientApps
  • Exact version match is required.
  • Native ConCommands do not work (custom ones work fine)
Features
  • Poking and prodding around the locally running client.

Global instance

This is the preferred way of using this library, as it minimizes the chance of version incompatibility.

  • You will act as the locally running Steam Client, and apps will connect to your process.
  • This is the preferred mode when making a custom frontend for Steam.
  • You should mark your process with SteamPIDFile so that apps can detect Steam is running.
Environment

Running as the global instance requires a very specific environment. On Windows:

  • A registry key (HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Valve\Steam\SteamPID) needs to be world-writable.
  • The Steam Client Service (or an alternative) should be installed.

On Linux:

  • You are expected to run inside the Steam Runtime, and pin required libraries.
  • steamservice.so is required to be running for Proton to work correctly, see serviced for details.

On any platform:

  • Driver query EXEs, 32-bit support libraries, environment variables and more ancillary files may be expected.
Limitations
  • The environment is quite tricky.
  • Has a risk of corruption if two clients are running at the same time.
  • Cannot interface with the currently running client.
Features
  • Access to ConCommands and ConVars to tweak client functionality
  • Full access to every API
  • Hooking functions is supported
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on OpenSteamworks:

Package Downloads
OpenSteamworks.Messaging.SharedConnection

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.2.2 220 5/17/2025
1.2.1 250 5/16/2025
1.2.0 291 4/29/2025
1.1.9 285 3/5/2025
1.1.8 200 11/25/2024
1.1.7 189 11/7/2024
1.1.4 273 9/24/2024