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.
SteamMatchmaking
to manage matchmaking lobbies. (#704, #825, #828)ParentalSettings
to LoggedOnCallback
. (#707)SteamUser.EmailAddrInfoCallback
. (#836)DepotManifest.Deserialize()
. (#841)Licence
fields to SteamApps
callbacks. (#844)CMClient.CurrentEndPoint
to expose currently connected remote server address. (#848)PICSChangesCallback
. (#865)SteamUser.LogOn
will now use the Cell ID specified in SteamConfiguration
as a fallback. (#722)TryAnotherCM
or ServiceUnavailable
. (#773)NetHookNetworkListener
or a customer IDebugNetworkListener
instead. (#774)SteamClient
object, where relevant. (#777)ContentServerDirectoryService
. (#761)SteamApps
functions with duplicated inputs. (787)BREAKING CHANGES
Name
property on ProtoContractAttribute
, ProtoMemberAttribute
, and ProtoEnumAttribute
.Foo
, the corresponding property FooSpecified
has been removed. Use ShouldSerializeFoo()
instead.[Serializable]
attribute.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)SteamKit2.Internal.Unified
namespace have moved to SteamKit2.Internal
. (#827)SteamMatchmaking
to manage matchmaking lobbies. (#704, #825, #828)ParentalSettings
to LoggedOnCallback
. (#707)SteamUser.EmailAddrInfoCallback
. (#836)DepotManifest.Deserialize()
. (#841)Licence
fields to SteamApps
callbacks. (#844)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)TryAnotherCM
or ServiceUnavailable
. (#773)NetHookNetworkListener
or a customer IDebugNetworkListener
instead. (#774)SteamClient
object, where relevant. (#777)ContentServerDirectoryService
. (#761)SteamApps
functions with duplicated inputs. (787)BREAKING CHANGES
Name
property on ProtoContractAttribute
, ProtoMemberAttribute
, and ProtoEnumAttribute
.Foo
, the corresponding property FooSpecified
has been removed. Use ShouldSerializeFoo()
instead.[Serializable]
attribute.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)SteamMatchmaking
to manage matchmaking lobbies. (#704)ParentalSettings
to LoggedOnCallback
. (#707)SteamUser.LogOn
will now use the Cell ID specified in SteamConfiguration
as a fallback. (#722)TryAnotherCM
or ServiceUnavailable
. (#773)NetHookNetworkListener
or a customer IDebugNetworkListener
instead. (#774)SteamClient
object, where relevant. (#777)ContentServerDirectoryService
. (#761)SteamApps
functions with duplicated inputs. (787)BREAKING CHANGES
Name
property on ProtoContractAttribute
, ProtoMemberAttribute
, and ProtoEnumAttribute
.Foo
, the corresponding property FooSpecified
has been removed. Use ShouldSerializeFoo()
instead.[Serializable]
attribute.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)SteamDirectory.LoadAsync
that accepts a maximum number of servers to return. (#577)ServerRecord.TryCreateSocketServer
to try parse a record from a string. (#578)GameID
for mods and shortcuts. (#602)WebAPIRequestException
with further details. (#603)WalletInfoCallback.Balance64
for large Steam Wallet balances. (#607)DepotManifest
. (#615)CDNClient.DownloadManifestAsync
and CDNClient.DownloadDepotChunkAsync
for advanced consumers that perform their own server and key management. (#678)ContentServerDirectoryService
for the discovery of ContentServers. (#699)IDictionary<string, object>
instead of having to pass each argument as a named parameter. (#675)BREAKING CHANGES
Dictionary<string, object>
, rather than Dictionary<string, string>
. (#668)
byte[]
are encoded to a URL safe representation.null
are treated as empty strings.string
by calling object.ToString()
and encoded to a URL safe representation.Same as Beta 2 but fixed a bug with encoding byte[]
parameters in WebAPI
.
CDNClient.DownloadManifestAsync
and CDNClient.DownloadDepotChunkAsync
for advanced consumers that perform their own server and key management. (#678)IDictionary<string, object>
instead of having to pass each argument as a named parameter. (#675)BREAKING CHANGES
Dictionary<string, object>
, rather than Dictionary<string, string>
. (#668)
byte[]
are encoded to a URL safe representation.null
are treated as empty strings.string
by calling object.ToString()
and encoded to a URL safe representation.SteamDirectory.LoadAsync
that accepts a maximum number of servers to return. (#577)ServerRecord.TryCreateSocketServer
to try parse a record from a string. (#578)GameID
for mods and shortcuts. (#602)WebAPIRequestException
with further details. (#603)WalletInfoCallback.Balance64
for large Steam Wallet balances. (#607)DepotManifest
. (#615)SimpleConsoleDebugListener
. (#219)UFSClient
sending an extra DisconnectedCallback
when connecting. (#509)BREAKING CHANGES
SteamFriends.SetPersonaName()
and SteamFriends.SetPersonaState()
are no longer Job-based. (#491)SimpleConsoleDebugListener
. (#219)UFSClient
sending an extra DisconnectedCallback
when connecting. (#509)BREAKING CHANGES
SteamFriends.SetPersonaName()
and SteamFriends.SetPersonaState()
are no longer Job-based. (#491)SteamConfiguration
, which replaces the previous assortment of individual configuration properties and parameters.
SteamConfiguration
permits both TCP and UDP, both can now be used (depending on server ranking). (#417)ArgumentNullException
to the public API surface when passing null into methods that would have previously triggered a NullReferenceException
.SteamUserStats.GetLeaderboardEntries
. (#421)[unassigned]
if SteamFriends.SetPersonaState()
is called too early. (#442)SteamUnifiedMessages.UnifiedService<>.SendMessage
. (#469)AsyncJob
. (#481)BREAKING CHANGES
[Obsolete]
.SteamClient
constructor now accepts a SteamConfiguration
object, which is a container for various configuration settings.
SteamClient
constructor to specify a specific protocol type (TCP or UDP), use SteamConfiguration
instead.SteamConfiguration
instead.SteamConfiguration
when constructing a SteamClient
, the server list will be private to that SteamClient
instance.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
.SteamClient.ConnectedCallback.EResult
, as it could only ever be EResult.OK
.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 ServerRecord
s instead of IPEndPoint
s.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)SteamID.Render(bool)
has been changed to render Steam3 by default instead of Steam2. (#471)CallbackMgr
thread. (#481)