SteamKit Versions Save

SteamKit2 is a .NET library designed to interoperate with Valve's Steam network. It aims to provide a simple, yet extensible, interface to perform various actions on the network.

2.3.0

3 years ago
  • Added SteamMatchmaking to manage matchmaking lobbies. (#704, #825, #828)
  • Added ParentalSettings to LoggedOnCallback. (#707)
  • Added annotations for C#8 Nullable Reference Types. (#721)
  • Added initial support for an IPv6-aware Steam network. (#770, #845)
  • Added SteamUser.EmailAddrInfoCallback. (#836)
  • Added DepotManifest.Deserialize(). (#841)
  • Added new Licence fields to SteamApps callbacks. (#844)
  • Added CMClient.CurrentEndPoint to expose currently connected remote server address. (#848)
  • Added full update fields to PICSChangesCallback. (#865)
  • SteamUser.LogOn will now use the Cell ID specified in SteamConfiguration as a fallback. (#722)
  • SteamKit will now try skip a CM that responds to a logon attempt with TryAnotherCM or ServiceUnavailable. (#773)
  • Removed debug messages for each packet send/receive event. This can be accomplished through NetHookNetworkListener or a customer IDebugNetworkListener instead. (#774)
  • Log messages now uniquely identify the related SteamClient object, where relevant. (#777)
  • Fixed incorrect Cell ID parameter in ContentServerDirectoryService. (#761)
  • Fixed a possible exception when calling SteamApps functions with duplicated inputs. (787)
  • Fixed Web API exceptions not including the numeric HTTP response code. (#779)
  • Fixed a couple possible crashes. (#834)
  • Updated Steam enums and protobufs. (#685, #729, #810, #820, #827, #849, #858, #864, #866)

BREAKING CHANGES

  • Generated protobuf classes have changed slightly due to updating to a newer version of protobuf-net. (#686)
    • Attributes vary slightly, particularly with regards to the Name property on ProtoContractAttribute, ProtoMemberAttribute, and ProtoEnumAttribute.
    • For any given property, e.g. a property named Foo, the corresponding property FooSpecified has been removed. Use ShouldSerializeFoo() instead.
    • Protobuf classes are no longer marked with the [Serializable] attribute.
  • The appid parameter in SteamApps.GetDepotDecryptionKey is no longer optional. (#689)
  • CDNClient no longer supports CS servers. Some public methods have had their signatures changed to accommodate this. (#725)
  • WebAPI no longer logs exceptions. Callers that want this information logged should log it themselves. (#847)
  • SteamWorkshop.EnumeratePublishedFiles has been removed. Use the unified API IPublishedFile.QueryFiles instead. (#827)
  • All classes in the SteamKit2.Internal.Unified namespace have moved to SteamKit2.Internal. (#827)

2.3.0-beta.2

3 years ago
  • Added SteamMatchmaking to manage matchmaking lobbies. (#704, #825, #828)
  • Added ParentalSettings to LoggedOnCallback. (#707)
  • Added annotations for C#8 Nullable Reference Types. (#721)
  • Added initial support for an IPv6-aware Steam network. (#770, #845)
  • Added SteamUser.EmailAddrInfoCallback. (#836)
  • Added DepotManifest.Deserialize(). (#841)
  • Added new Licence fields to SteamApps callbacks. (#844)
  • Added CMClient.CurrentEndPoint to expose currently connected remote server addess. (#848)
  • SteamUser.LogOn will now use the Cell ID specified in SteamConfiguration as a fallback. (#722)
  • SteamKit will now try skip a CM that responds to a logon attempt with TryAnotherCM or ServiceUnavailable. (#773)
  • Removed debug messages for each packet send/recieve event. This can be accomplished through NetHookNetworkListener or a customer IDebugNetworkListener instead. (#774)
  • Log messages now uniquely identify the related SteamClient object, where relevant. (#777)
  • Fixed incorrect Cell ID parameter in ContentServerDirectoryService. (#761)
  • Fixed a possible exception when calling SteamApps functions with duplicated inputs. (787)
  • Fixed Web API exceptions not including the numeric HTTP response code. (#779)
  • Fixed a couple possible crashes. (#834)
  • Updated Steam enums and protobufs. (#685, #729, #810, #820, #827, #849)

BREAKING CHANGES

  • Generated protobuf classes have changed slightly due to updating to a newer version of protobuf-net. (#686)
    • Attributes vary slightly, particularly with regards to the Name property on ProtoContractAttribute, ProtoMemberAttribute, and ProtoEnumAttribute.
    • For any given property, e.g. a propery named Foo, the corresponding property FooSpecified has been removed. Use ShouldSerializeFoo() instead.
    • Protobuf classes are no longer marked with the [Serializable] attribute.
  • The appid parameter in SteamApps.GetDepotDecryptionKey is no longer optional. (#689)
  • CDNClient no longer supports CS servers. Some public methods have had their signatures changed to accomodate this. (#725)
  • WebAPI no longer logs exceptions. Callers that want this information logged should log it themselves. (#847)
  • SteamWorkshop.EnumeratePublishedFiles has been removed. Use the unified API IPublishedFile.QueryFiles instead. (#827)

2.3.0-Beta.1

4 years ago
  • Added SteamMatchmaking to manage matchmaking lobbies. (#704)
  • Added ParentalSettings to LoggedOnCallback. (#707)
  • Added annotations for C#8 Nullable Reference Types. (#721)
  • SteamUser.LogOn will now use the Cell ID specified in SteamConfiguration as a fallback. (#722)
  • SteamKit will now try skip a CM that responds to a logon attempt with TryAnotherCM or ServiceUnavailable. (#773)
  • Removed debug messages for each packet send/recieve event. This can be accomplished through NetHookNetworkListener or a customer IDebugNetworkListener instead. (#774)
  • Log messages now uniquely identify the related SteamClient object, where relevant. (#777)
  • Fixed incorrect Cell ID parameter in ContentServerDirectoryService. (#761)
  • Fixed a possible exception when calling SteamApps functions with duplicated inputs. (787)
  • Fixed Web API exceptions not including the numeric HTTP response code. (#779)
  • Updated Steam enums and protobufs. (#685, #729, #810, #820)

BREAKING CHANGES

  • Generated protobuf classes have changed slightly due to updating to a newer version of protobuf-net. (#686)
    • Attributes vary slightly, particularly with regards to the Name property on ProtoContractAttribute, ProtoMemberAttribute, and ProtoEnumAttribute.
    • For any given property, e.g. a propery named Foo, the corresponding property FooSpecified has been removed. Use ShouldSerializeFoo() instead.
    • Protobuf classes are no longer marked with the [Serializable] attribute.
  • The appid parameter in SteamApps.GetDepotDecryptionKey is no longer optional. (#689)
  • CDNClient no longer supports CS servers. Some public methods have had their signatures changed to accomodate this. (#725)

2.2.0

4 years ago
  • Added an overload of SteamDirectory.LoadAsync that accepts a maximum number of servers to return. (#577)
  • Added ServerRecord.TryCreateSocketServer to try parse a record from a string. (#578)
  • Added support for initializing a GameID for mods and shortcuts. (#602)
  • Added response details for some failed WebAPI responses. WebAPI can now throw a WebAPIRequestException with further details. (#603)
  • Added customization options to SteamKit's underlying HTTP stack. (#605)
  • Added WalletInfoCallback.Balance64 for large Steam Wallet balances. (#607)
  • Added more details to DepotManifest. (#615)
  • Added SteamKit version to default HTTP user agent. (#620)
  • Added overloads for CDNClient.DownloadManifestAsync and CDNClient.DownloadDepotChunkAsync for advanced consumers that perform their own server and key management. (#678)
  • Added ContentServerDirectoryService for the discovery of ContentServers. (#699)
  • The dynamic interface for WebAPI can now take a single un-named argument of IDictionary<string, object> instead of having to pass each argument as a named parameter. (#675)
  • Fixed concurrency issues with UDP connections.
  • Fixed final fallback connection to Steam when server list is unavailable. (#597)
  • Fixed thread safety issues in message deserialization. (#601)
  • Fixed a crash on logon when network adapter information is not available from the underlying runtime. (#630)
  • Fixed downloaded content silently ignoring a length mismatch. An exception will now be thrown in this case. (#632)
  • Fixed WebSocket CM servers not being marked as bad by the server list, and thus not being ignored on subsequent connection attempts. (#634)
  • Updated Steam protocol version. (#568)
  • Updated Steam enums and protobufs. (#565, #569, #576, #660, #698)

BREAKING CHANGES

  • WebAPI now takes a arguments dictionary as Dictionary<string, object>, rather than Dictionary<string, string>. (#668)
    • Arguments of type byte[] are encoded to a URL safe representation.
    • Arguments of value null are treated as empty strings.
    • All other arguments are converted to string by calling object.ToString() and encoded to a URL safe representation.

2.2.0-Beta.3

4 years ago

Same as Beta 2 but fixed a bug with encoding byte[] parameters in WebAPI.

2.2.0-Beta.2

4 years ago
  • Added overloads for CDNClient.DownloadManifestAsync and CDNClient.DownloadDepotChunkAsync for advanced consumers that perform their own server and key management. (#678)
  • The dynamic interface for WebAPI can now take a single un-named argument of IDictionary<string, object> instead of having to pass each argument as a named parameter. (#675)
  • Updated Steam enums. (#660)

BREAKING CHANGES

  • WebAPI now takes a arguments dictionary as Dictionary<string, object>, rather than Dictionary<string, string>. (#668)
    • Arguments of type byte[] are encoded to a URL safe representation.
    • Arguments of value null are treated as empty strings.
    • All other arguments are converted to string by calling object.ToString() and encoded to a URL safe representation.

2.2.0-Beta.1

5 years ago
  • Added an overload of SteamDirectory.LoadAsync that accepts a maximum number of servers to return. (#577)
  • Added ServerRecord.TryCreateSocketServer to try parse a record from a string. (#578)
  • Added support for initializing a GameID for mods and shortcuts. (#602)
  • Added response details for some failed WebAPI responses. WebAPI can now throw a WebAPIRequestException with further details. (#603)
  • Added customization options to SteamKit's underlying HTTP stack. (#605)
  • Added WalletInfoCallback.Balance64 for large Steam Wallet balances. (#607)
  • Added more details to DepotManifest. (#615)
  • Added SteamKit version to default HTTP user agent. (#620)
  • Fixed concurrency issues with UDP connections.
  • Fixed final fallback connection to Steam when server list is unavailable. (#597)
  • Fixed thread safety issues in message deserialization. (#601)
  • Fixed a crash on logon when network adapter information is not available from the underlying runtime. (#630)
  • Fixed downloaded content silently ignoring a length mismatch. An exception will now be thrown in this case. (#632)
  • Fixed WebSocket CM servers not being marked as bad by the server list, and thus not being ignored on subsequent connection attempts. (#634)
  • Updated Steam protocol version; (#568)
  • Updated Steam enums and protobufs. (#565, #569, #576)

2.1.0

5 years ago
  • Added SimpleConsoleDebugListener. (#219)
  • Added helper methods to convert between Clan (Group) SteamIDs and their corresponding Chat SteamIDs. (#451)
  • Added SourceLink to enable consumers to step through SteamKit's source code when debugging. (#542)
    • This requires Visual Studio v15.3 or higher.
  • Fixed several possible crashes. (#260, #294, #506)
  • Fixed NuGet package description. (#508)
  • Fixed UFSClient sending an extra DisconnectedCallback when connecting. (#509)
  • Updated Steam enums and protobufs.

BREAKING CHANGES

  • SteamFriends.SetPersonaName() and SteamFriends.SetPersonaState() are no longer Job-based. (#491)

2.1.0-Beta.1

5 years ago
  • Added SimpleConsoleDebugListener. (#219)
  • Added helper methods to convert between Clan (Group) SteamIDs and their corresponding Chat SteamIDs. (#451)
  • Added SourceLink to enable consumers to step through SteamKit's source code when debugging. (#542)
    • This requires Visual Studio v15.3 or higher.
  • Fixed several possible crashes. (#260, #294, #506)
  • Fixed NuGet package description. (#508)
  • Fixed UFSClient sending an extra DisconnectedCallback when connecting. (#509)

BREAKING CHANGES

  • SteamFriends.SetPersonaName() and SteamFriends.SetPersonaState() are no longer Job-based. (#491)

2.0.0

6 years ago
  • SteamKit 2.0 now targets .NET Standard 2.0. This means it now requires .NET Framework 4.6.1 or higher, .NET Core 2.0 or higher, or any other .NET Standard 2.0-compatible runtime.
  • Added support for WebSocket client connections.
    • Server List treats WebSocket, TCP and UDP independently, even for the same server.
    • If a server is not reachable on TCP, SteamKit will still attempt UDP and vice-versa.
  • Added SteamConfiguration, which replaces the previous assortment of individual configuration properties and parameters.
    • If the SteamConfiguration permits both TCP and UDP, both can now be used (depending on server ranking). (#417)
    • See the Breaking Changes section below for further details.
  • Added ArgumentNullException to the public API surface when passing null into methods that would have previously triggered a NullReferenceException.
  • Added HTTPS support to CDNClient.
  • Updated Protobuf message classes to expose a property indicating if any wire value was specified or not, and a method to clear the value.
  • Updated game-related GC messages and protobufs. (#459, #460)
  • Updated Steam enums and protobufs. (#456, #457, #458, #463)
  • Fixed no callback being fired when calling SteamUserStats.GetLeaderboardEntries. (#421)
  • Fixed a crash if we encountered a message that's too small to actually contain a message.
  • Fixed user's name being changed to [unassigned] if SteamFriends.SetPersonaState() is called too early. (#442)
  • Fixed order of handlers being non-deterministic. (#442)
  • Fixed exception when using SteamUnifiedMessages.UnifiedService<>.SendMessage. (#469)
  • Fixed a potential deadlock when awaiting an AsyncJob. (#481)
  • Fixed TCP connections not being correctly flagged in the server list. (#488)
  • Fixed TCP disconnections not being correctly flagged as user-initiated. (#488)

BREAKING CHANGES

  • Removed all methods and properties that were marked as [Obsolete].
  • The SteamClient constructor now accepts a SteamConfiguration object, which is a container for various configuration settings.
    • If you were using the SteamClient constructor to specify a specific protocol type (TCP or UDP), use SteamConfiguration instead.
    • If you were using various properties to modify timeouts etc., use SteamConfiguration instead.
    • If you do not provide a SteamConfiguration when constructing a SteamClient, the server list will be private to that SteamClient instance.
    • If you create multiple clients from a single configuration, the server list will be shared among those clients.
    • SteamClient.ConnectedUniverse is now SteamClient.Universe. This is now set from the configuration, and is no longer EUniverse.Invalid when not connected.
    • SteamClient.ConnectionTimeout is now read-only. Setting this property is now performed on SteamConfiguration.
  • Removed SteamClient.ConnectedCallback.EResult, as it could only ever be EResult.OK.
  • Servers are now represented by ServerRecord objects, not IP addresses.
    • CMListCallback now returns a collection of ServerRecord objects, not IP addresses. (#434)
    • CMListCallback now also includes WebSocket servers. (#434)
    • SteamClient.Connect now optionally accepts a ServerRecord instead of optionally accepting an IPEndPoint. You can create a ServerRecord for a particular protocol type or set of protocol types.
    • IServerListProvider now deals with ServerRecords instead of IPEndPoints.
  • Disabling server list fetching from the directory is now done via SteamConfiguration instead of SmartCMServerList.
  • SteamDirectory helper methods now accept a SteamConfiguration rather than just a cellid.
  • SteamFriends.GetPersonaName(), SteamFriends.GetFriendPersonaName and SteamFriends.GetClanName can all now return null if the value is unknown. (#443)
  • WebAPI used to throw a WebException on non-success status code, or other failure. It now throws HttpRequestException. (#446)
  • CDNClient and WebAPI now expose Task-based asynchronous methods. This replaces the previous synchronous methods.
  • SteamID.ToString() now prints a Steam3 string by default. For the older Steam2 STEAM_X:Y:Z format, use SteamID.Render(). (#471)
  • The default argument of SteamID.Render(bool) has been changed to render Steam3 by default instead of Steam2. (#471)
  • Async job continuations are no longer invoked on the CallbackMgr thread. (#481)