Releases: SteamRE/SteamKit
Releases · SteamRE/SteamKit
SteamKit 2.3.0-Beta.1
- Added
SteamMatchmaking
to manage matchmaking lobbies. (#704) - Added
ParentalSettings
toLoggedOnCallback
. (#707) - Added annotations for C#8 Nullable Reference Types. (#721)
SteamUser.LogOn
will now use the Cell ID specified inSteamConfiguration
as a fallback. (#722)- SteamKit will now try skip a CM that responds to a logon attempt with
TryAnotherCM
orServiceUnavailable
. (#773) - Removed debug messages for each packet send/recieve event. This can be accomplished through
NetHookNetworkListener
or a customerIDebugNetworkListener
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 onProtoContractAttribute
,ProtoMemberAttribute
, andProtoEnumAttribute
. - For any given property, e.g. a propery named
Foo
, the corresponding propertyFooSpecified
has been removed. UseShouldSerializeFoo()
instead. - Protobuf classes are no longer marked with the
[Serializable]
attribute.
- Attributes vary slightly, particularly with regards to the
- The
appid
parameter inSteamApps.GetDepotDecryptionKey
is no longer optional. (#689) CDNClient
no longer supports CS servers. Some public methods have had their signatures changed to accomodate this. (#725)
SteamKit 2.2.0
- 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
andCDNClient.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 thanDictionary<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 callingobject.ToString()
and encoded to a URL safe representation.
- Arguments of type
SteamKit 2.2.0-Beta.3
Same as Beta 2 but fixed a bug with encoding byte[]
parameters in WebAPI
.
SteamKit 2.2.0-Beta.2
- Added overloads for
CDNClient.DownloadManifestAsync
andCDNClient.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 thanDictionary<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 callingobject.ToString()
and encoded to a URL safe representation.
- Arguments of type
SteamKit 2.2.0-Beta.1
- 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)
SteamKit 2.1.0
- 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 extraDisconnectedCallback
when connecting. (#509) - Updated Steam enums and protobufs.
BREAKING CHANGES
SteamFriends.SetPersonaName()
andSteamFriends.SetPersonaState()
are no longer Job-based. (#491)
SteamKit 2.1.0-Beta.1
- 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 extraDisconnectedCallback
when connecting. (#509)
BREAKING CHANGES
SteamFriends.SetPersonaName()
andSteamFriends.SetPersonaState()
are no longer Job-based. (#491)
SteamKit 2.0.0
- 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.
- If the
- Added
ArgumentNullException
to the public API surface when passing null into methods that would have previously triggered aNullReferenceException
. - 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]
ifSteamFriends.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 aSteamConfiguration
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), useSteamConfiguration
instead. - If you were using various properties to modify timeouts etc., use
SteamConfiguration
instead. - If you do not provide a
SteamConfiguration
when constructing aSteamClient
, the server list will be private to thatSteamClient
instance. - If you create multiple clients from a single configuration, the server list will be shared among those clients.
SteamClient.ConnectedUniverse
is nowSteamClient.Universe
. This is now set from the configuration, and is no longerEUniverse.Invalid
when not connected.SteamClient.ConnectionTimeout
is now read-only. Setting this property is now performed onSteamConfiguration
.
- If you were using the
- Removed
SteamClient.ConnectedCallback.EResult
, as it could only ever beEResult.OK
. - Servers are now represented by
ServerRecord
objects, not IP addresses.CMListCallback
now returns a collection ofServerRecord
objects, not IP addresses. (#434)CMListCallback
now also includes WebSocket servers. (#434)SteamClient.Connect
now optionally accepts aServerRecord
instead of optionally accepting anIPEndPoint
. You can create aServerRecord
for a particular protocol type or set of protocol types.IServerListProvider
now deals withServerRecord
s instead ofIPEndPoint
s.
- Disabling server list fetching from the directory is now done via
SteamConfiguration
instead ofSmartCMServerList
. SteamDirectory
helper methods now accept aSteamConfiguration
rather than just a cellid.SteamFriends.GetPersonaName()
,SteamFriends.GetFriendPersonaName
andSteamFriends.GetClanName
can all now return null if the value is unknown. (#443)WebAPI
used to throw aWebException
on non-success status code, or other failure. It now throwsHttpRequestException
. (#446)CDNClient
andWebAPI
now exposeTask
-based asynchronous methods. This replaces the previous synchronous methods.SteamID.ToString()
now prints a Steam3 string by default. For the older Steam2STEAM_X:Y:Z
format, useSteamID.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)
SteamKit 2.0.0-Beta.2
- 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)
- Added hashing and equality support to
ServerRecord
. (#476) - Added HTTPS support to CDNClient.
- Updated package dependency
Microsoft.Win32.Registry
. (#470) - Updated Steam enums (#463)
BREAKING CHANGES
SteamID.ToString()
now prints a Steam3 string by default. For the older Steam2STEAM_X:Y:Z
format, useSteamID.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)
SteamKit 2.0.0-Beta.1
- 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.
- If the
- Added
ArgumentNullException
to the public API surface when passing null into methods that would have previously triggered aNullReferenceException
. - 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)
- 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]
ifSteamFriends.SetPersonaState()
is called too early. (#442) - Fixed order of handlers being non-deterministic. (#442)
- Fixed exception when using
SteamUnifiedMessages.UnifiedService<>.SendMessage
. (#469)
BREAKING CHANGES
- Removed all methods and properties that were marked as
[Obsolete]
. - The
SteamClient
constructor now accepts aSteamConfiguration
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), useSteamConfiguration
instead. - If you were using various properties to modify timeouts etc., use
SteamConfiguration
instead. - If you do not provide a
SteamConfiguration
when constructing aSteamClient
, the server list will be private to thatSteamClient
instance. - If you create multiple clients from a single configuration, the server list will be shared among those clients.
SteamClient.ConnectedUniverse
is nowSteamClient.Universe
. This is now set from the configuration, and is no longerEUniverse.Invalid
when not connected.SteamClient.ConnectionTimeout
is now read-only. Setting this property is now performed onSteamConfiguration
.
- If you were using the
- Removed
SteamClient.ConnectedCallback.EResult
, as it could only ever beEResult.OK
. - Servers are now represented by
ServerRecord
objects, not IP addresses.CMListCallback
now returns a collection ofServerRecord
objects, not IP addresses. (#434)CMListCallback
now also includes WebSocket servers. (#434)SteamClient.Connect
now optionally accepts aServerRecord
instead of optionally accepting anIPEndPoint
. You can create aServerRecord
for a particular protocol type or set of protocol types.IServerListProvider
now deals withServerRecord
s instead ofIPEndPoint
s.
- Disabling server list fetching from the directory is now done via
SteamConfiguration
instead ofSmartCMServerList
. SteamDirectory
helper methods now accept aSteamConfiguration
rather than just a cellid.SteamFriends.GetPersonaName()
,SteamFriends.GetFriendPersonaName
andSteamFriends.GetClanName
can all now return null if the value is unknown. (#443)WebAPI
used to throw aWebException
on non-success status code, or other failure. It now throwsHttpRequestException
. (#446)CDNClient
andWebAPI
now exposeTask
-based asynchronous methods. This replaces the previous synchronous methods.