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)