SteamKit 2.0.0-Beta.1
Pre-release
Pre-release
- 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.