docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Changelog

    All notable changes to this package will be documented in this file.

    The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

    [1.0.0] - 2026-10-19

    Added

    • Added documentation to help you install, configure, and use the Steamworks API package.

    [1.0.0-pre.2] - 2026-09-26

    Added

    • SteamDispatchMode parameter on SteamAPI.InitEx/Init and GameServer.InitEx, to choose who reads each pipe's callbacks
    • SteamCallbacks.RunFrameCallbacks, SubmitCallback and DeliverQueuedCallbacks, for reading an ExternalPoll pipe on your own schedule

    Changed

    • Renamed namespaces from Unity.Steam.Interop* to Unity.Steamworks.*: Unity.Steamworks.Interop, Unity.Steamworks.Runtime, Unity.Steamworks.Editor, and matching test namespaces.
    • Renamed SteamCallbacks.PumpIntervalMilliseconds to PollIntervalMilliseconds

    Added

    • New Steamworks SDK importer in Project Settings > Steamworks
    • Generated SteamworksRuntimeSettings.cs in its own Unity.Steamworks.Settings assembly under Assets/Plugins/Steamworks/Settings, exposing the configured app id to game code and calling SteamAPI.RestartAppIfNecessary at player startup when the ENABLE_RESTART_STEAM_APP_HOOK scripting define is set and an App Id is configured

    Changed

    • SDK importer now only pulls in necessary native libraries
    • SteamworksSettings and SteamAppIdFileCreation moved to Unity.Steamworks.Editor; settings are stored in ProjectSettings/SteamworksSettings.asset and no longer ship with a build
    • A missing SDK is reported in Project Settings > Steamworks and by a console warning on editor load listing each library's state
    • SDK detection recognizes a correctly configured Steam native library anywhere in the project, not just under Assets/Plugins/Steamworks
    • The editor logs when the SDK is imported or detected on load

    Removed

    • Public API for Steamworks SDK management has been removed
    • Unity.Steamworks.Runtime.SteamworksSettings and its Resources asset; read SteamworksRuntimeSettings instead
    • CGameID.EGameIDType.k_EGameIDTypeP2P and CGameID.IsP2PFile, which the SDK does not define
    • The ISteamNetworkingConnectionSignaling/ISteamNetworkingSignalingRecvContext structs, which could not work against Valve's library; ConnectP2PCustomSignaling and ReceivedP2PCustomSignal now take these objects as IntPtr

    Fixed

    • SteamNetworkingConfigValue_t.SetString tags the value as a string option, not a pointer
    • gameserveritem_t includes m_nCurrentFriendCount and m_nTotalFriendCount
    • CGameID.AppID() and ModID() match the SDK for shortcuts
    • SteamNetworkingIPAddr works as a Dictionary/HashSet key
    • SteamNetworkingIdentity getters no longer read memory the GC may have moved
    • Matchmaking response sinks no longer let an exception reach native code when disposed during a callback, and AddFriendToList reads its bool correctly under IL2CPP

    [1.0.0-pre.1] - 2026-09-04

    Added

    • *Async wrappers returning Task<TCallResult> for every Steamworks method that produces a call result.
    • InteropHelpers.RequiredClient / RequiredGameServer, returning a generated wrapper's Steam interface pointer and throwing when it is null.

    Changed

    • Generated wrappers now resolve and check their Steam interface pointer directly instead of a separate client-availability check.
    • Steam interfaces now resolve lazily on first use instead of eagerly in Init().
    • Native bool values now marshal with UnmanagedType.U1 instead of UnmanagedType.I1.

    Removed

    • Android support.

    Fixed

    • A null interface pointer no longer crashes the process; it now throws InvalidOperationException instead.
    • An interface not yet resolvable at Init() time (e.g. ISteamInput) no longer stays permanently unusable.

    [0.2.0-exp.1] - 2026-08-07

    Changed

    • A newly created SteamworksSettings asset no longer defaults its app id to 480 (Steam's public test app, Spacewar). The default is now unset, so a project that never configures one fails rather than initializing Steam as somebody else's game. Existing assets keep their serialized value and are unaffected.

    Added

    • The editor now writes the steam_appid.txt that Steam's native library reads, from the app id in the settings asset, when the project does not already have one. Previously this was only available as a button on the Project Settings > Steamworks page, so a project could look correctly configured and still fail to initialize.
    • -steamworksAppId=<id> on the editor command line, for a project created by tooling and therefore without settings of its own. It takes precedence over an app id the project already set, and reports the difference. A project with neither an asset nor the switch is left untouched.

    [0.1.0-exp.1] - 2026-07-31

    This is the first release of Steamworks API wrapper.

    Experimental first release: per-interface flat wrappers generated from Steamworks SDK 1.65 (ISteamUser, ISteamFriends, ISteamUserStats, ...), callback structs and constants, and a hand-written lifecycle and dispatch runtime with typed callback subscriptions and async call-result support. Includes the "Hello Steam" sample.

    Every public type and member carries an XML documentation comment — a summary, a <param> per parameter, a <typeparam> per type parameter and a <returns> for every non-void return. Where the SDK's headers documented a declaration, that text is what the summary says; the generator supplies one describing the member otherwise. Package documentation lives in Documentation~/index.md.

    In This Article
    Back to top
    Copyright © 2026 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)