Stormancer.Server.Plugins.Steam 4.2.1.14-pre

This is a prerelease version of Stormancer.Server.Plugins.Steam.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Stormancer.Server.Plugins.Steam --version 4.2.1.14-pre                
NuGet\Install-Package Stormancer.Server.Plugins.Steam -Version 4.2.1.14-pre                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Stormancer.Server.Plugins.Steam" Version="4.2.1.14-pre" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Stormancer.Server.Plugins.Steam --version 4.2.1.14-pre                
#r "nuget: Stormancer.Server.Plugins.Steam, 4.2.1.14-pre"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Stormancer.Server.Plugins.Steam as a Cake Addin
#addin nuget:?package=Stormancer.Server.Plugins.Steam&version=4.2.1.14-pre&prerelease

// Install Stormancer.Server.Plugins.Steam as a Cake Tool
#tool nuget:?package=Stormancer.Server.Plugins.Steam&version=4.2.1.14-pre&prerelease                

Steam

Server Application

Secrets

Get base URI from script arguments

# Get BaseUri
if ($args.count -lt 1)
{
    echo "Missing Uri argument"
    return 1
}
$baseUri = $args[0]

Steam Api Key

Format : 32 hexadecimal characters.

Invoke-RestMethod -Method Put -Uri "$baseUri/_secrets/[GameOrPublisherAccount]/secrets/steam_apiKey" -ContentType "text/plain" -InFile "$PSScriptRoot\Secrets\steam_apiKey.txt"

[GameOrPublisherAccount] should be replaced by the Game or Publisher Stormancer account.

Steam Lobby metadata bearer token key

Use it when you want to enable joining Stormancer parties from Steam lobby invitations.

Format : 32 bytes (binary)

$steamBearerTokenPath = "$PSScriptRoot\Secrets\steam_lobbyMetadataBearerTokenKey"
if (-not(Test-path "$steamBearerTokenPath" -PathType leaf))
{
    dotnet tool run stormancer manage secrets generate --output "$steamBearerTokenPath" --size 32
}
Invoke-RestMethod -Method Put -Uri "$baseUri/_secrets/[GameOrPublisherAccount]/secrets/steam_lobbyMetadataBearerTokenKey" -ContentType "application/octet-stream" -InFile "$steamBearerTokenPath"

[GameOrPublisherAccount] should be replaced by the Game or Publisher Stormancer account.

<span style="color:red">BE CAREFUL, The key will be created randomly and overwritten by the script if it doesn't exist, so don't forget to backup it on first setup!</span>

Party configuration

Setup the party using a party creation event handler :

public class PartyEventHandler : IPartyEventHandler
{
    public Task OnCreatingParty(PartyCreationContext ctx)
    {
        ctx.PartyRequest.ServerSettings
            .ShouldCreatePlatformLobby(true)
            .MaxMembers(2)
            .SteamLobbyType(LobbyType.FriendsOnly);

        return Task.CompletedTask;
    }
}

C++ client

Plugin configuration

By default steam.hpp includes steam_api.h. This behavior can be disabled by setting STORM_NOINCLUDE_STEAM. To use a different include path to steam_api.h, set STORM_STEAM_INCLUDE.

Configuration keys:

	/// <summary>
    /// Keys to use in Configuration::additionalParameters map to customize the Steam plugin behavior.
    /// </summary>
    namespace ConfigurationKeys
    {
        /// <summary>
        /// Enable Steam authentication.
        /// If disabled, the Steam plugin will not be considered for authentication.
        /// Default is "true".
        /// Use "false" to disable.
        /// </summary>
        constexpr const char* AuthenticationEnabled = "steam.authentication.enabled";

        /// <summary>
        /// The lobbyID the client should connect on authentication. 
        /// Automatic connection to a Steam lobby on successful authentication should occur when the game has been launched by a lobby invitation.
        /// You can get the LobbyID by searching the "+connect_lobby" parameter in the command line arguments (argv).
        /// </summary>
        constexpr const char* ConnectLobby = "steam.connectLobby";

        /// <summary>
        /// Should Stormancer initialize the Steam API library.
        /// Default is "true".
        /// Use "false" to disable.
        /// </summary>
        constexpr const char* SteamApiInitialize = "steam.steamApi.initialize";

        /// <summary>
        /// Should Stormancer run Steam Api callbacks.
        /// Default is "true".
        /// Use "false" to disable.
        /// </summary>
        constexpr const char* SteamApiRunCallbacks = "steam.steamApi.runCallbacks";
    }

Enable steam invitations on game launch

int main(int argc, char* argv[])
{
	auto config = Stormancer::Configuration::create(STORM_ENDPOINT, STORM_ACCOUNT, STORM_APPLICATION);
	for (int argi = 0; argi < argc; argi++)
	{
		config->processLaunchArguments.push_back(argv[argi]);
	}
}
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
4.2.1.34-pre 10 9/26/2024
4.2.1.33-pre 12 9/26/2024
4.2.1.32-pre 29 9/26/2024
4.2.1.31-pre 73 9/9/2024
4.2.1.30-pre 68 8/29/2024
4.2.1.29-pre 58 7/26/2024
4.2.1.28-pre 62 7/24/2024
4.2.1.16-pre 81 7/9/2024
4.2.1.15-pre 54 7/3/2024
4.2.1.14-pre 71 6/10/2024
4.2.1.7-pre 59 5/30/2024
4.2.1.6-pre 77 5/28/2024
4.2.1.5-pre 94 5/6/2024
4.2.1.4-pre 106 4/11/2024
4.2.1.3-pre 82 4/9/2024
4.2.1.2-pre 89 4/8/2024
4.2.1.1-pre 88 4/8/2024
4.2.1-pre 77 3/13/2024
4.2.0.17-pre 75 3/11/2024
4.2.0.16-pre 99 2/22/2024
4.2.0.15-pre 177 11/15/2023
4.2.0.14-pre 85 11/12/2023
4.2.0.13-pre 125 10/24/2023
4.2.0.12-pre 113 10/20/2023
4.2.0.11-pre 112 9/29/2023
4.2.0.10-pre 109 9/6/2023
4.2.0.9-pre 100 8/30/2023
4.2.0.8-pre 107 8/30/2023
4.2.0.7-pre 100 8/21/2023
4.2.0.6-pre 158 8/2/2023
4.2.0.5-pre 131 7/31/2023
4.2.0.4-pre 113 7/28/2023
4.2.0.3-pre 134 6/27/2023
4.2.0.2-pre 111 6/26/2023
4.2.0.1-pre 115 6/26/2023
4.2.0-pre 105 6/21/2023
4.1.5-pre 132 6/15/2023
4.1.4.1-pre 133 5/9/2023
4.1.4 219 5/9/2023
4.1.4-pre 127 4/11/2023
4.1.3.2-pre 137 4/5/2023
4.1.3.1-pre 107 4/5/2023
4.1.3 200 4/4/2023
4.1.3-pre 149 1/17/2023
4.1.2.11 145 7/31/2023
4.1.2.10 436 9/28/2022
4.1.2.10-pre 141 9/12/2022
4.1.2.5-pre 160 8/2/2022
4.1.2.4-pre 188 7/1/2022
4.1.2.3-pre 232 5/4/2022
4.1.2.2-pre 147 5/4/2022
4.1.2.1-pre 133 5/3/2022
4.1.2-pre 178 4/14/2022
4.1.1.4-pre 159 3/15/2022
4.1.1.3-pre 151 2/28/2022
4.1.1.2 476 2/7/2022
4.1.1.1 457 2/1/2022
4.1.1.1-pre 175 1/28/2022
4.1.1 504 1/21/2022
4.1.0.17 460 1/21/2022
4.1.0.16 451 1/19/2022
4.1.0.16-pre 184 1/7/2022
4.1.0.15-pre 172 1/7/2022
4.1.0.14-pre 172 12/21/2021
4.1.0.13 298 12/15/2021
4.1.0.13-pre 221 10/28/2021
4.1.0.12-pre 238 10/21/2021
4.1.0.8-pre 228 10/18/2021
4.1.0.7-pre 237 10/18/2021
4.1.0.6 325 10/14/2021
4.1.0.6-pre 265 10/8/2021
4.1.0.5-pre 240 10/1/2021
4.1.0.4-pre 223 9/17/2021
4.1.0.3-pre 224 7/7/2021
4.1.0.2-pre 232 7/6/2021
4.1.0.1-pre 204 7/5/2021
4.0.5-pre 271 6/30/2021
4.0.4.2-pre 236 6/15/2021
4.0.4.1-pre 271 6/11/2021
4.0.4 383 5/23/2021
4.0.4-pre 237 5/3/2021
4.0.3 433 4/29/2021
4.0.2 373 3/1/2021
4.0.1.4-pre 211 2/11/2021
4.0.1.3-pre 196 2/11/2021
4.0.1.2-pre 188 2/11/2021
4.0.1.1-pre 276 2/10/2021
4.0.1-pre 225 2/10/2021
4.0.0.1 491 12/4/2020
3.0.5.4 455 10/20/2020
3.0.5.4-pre 381 9/8/2020
3.0.5.3-pre 269 8/20/2020
3.0.5.2-pre 299 8/20/2020
3.0.5.1-pre 330 8/19/2020
3.0.5-pre 350 8/13/2020
3.0.4-pre 407 6/29/2020
3.0.3-pre 310 6/5/2020
3.0.2.2 466 5/27/2020
3.0.2.2-pre 332 5/11/2020
3.0.2.1-pre 344 5/11/2020
3.0.2-pre 317 4/22/2020
3.0.1-pre 358 4/17/2020
3.0.0.2-pre 353 4/7/2020
3.0.0.1-pre 292 4/7/2020
3.0.0-pre 337 4/2/2020
2.1.0.2-pre 367 3/30/2020
2.1.0.1-pre 344 3/29/2020
2.1.0-pre 324 3/24/2020
2.0.0-pre 332 3/12/2020
1.2.1-pre 397 3/4/2020
1.2.0-pre 410 3/4/2020
1.1.0 494 2/21/2020
1.1.0-pre 346 2/22/2020
1.0.0 568 1/31/2020

Changed
*******
- Updated dependency to Users to support new abstraction lib.
Added
*****
- Added support for the new Steam Authentication tokens introduced with the Steamworks SDK 1.57. Supports both the new and old authentication protocol. Switch to the new protocol happens by adding a `version` field to the auth parameters with `v1` as the content.
- Added support for multiple appIds, the client advertises its appId when sending the authentication request. If no appId is set, it defaults to the appId provided in the server configuration (field `steam.appId`). Additional authorized appId are configured by setting the `steam.appIds` server configuration to a list of steam app ids.
- Added `defaultAuthProtocol` field to the steam auth config section. This enables developer to chose the default Steam auth protocol to use if the client doesn't provide it. Defaults to v0001, the oldest protocol. This can be useful if you use a modified steam.hpp in the game client that doesn't advertise its protocol version and doesn't use v0001.
- Don't call Steam leave lobby web API on player leave lobby because it doesn't work with webAPI tokens.

Fixed
*****
- When all steam players leave the party, cleanup lobby id to make sure that the next joining player create a new steam lobby.

Changed
*******
- Do not emit an error log when the steam client miss some features.