Stormancer.Server.Plugins.Steam 4.1.4

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.1.4                
NuGet\Install-Package Stormancer.Server.Plugins.Steam -Version 4.1.4                
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.1.4" />                
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.1.4                
#r "nuget: Stormancer.Server.Plugins.Steam, 4.1.4"                
#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.1.4

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

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.

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 net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.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.42-pre 100 10/30/2024
4.2.1.41-pre 115 10/20/2024
4.2.1.39-pre 88 10/15/2024
4.2.1.38-pre 93 10/3/2024
4.2.1.37-pre 86 9/30/2024
4.2.1.36-pre 92 9/30/2024
4.2.1.35-pre 83 9/30/2024
4.2.1.34-pre 88 9/26/2024
4.2.1.33-pre 104 9/26/2024
4.2.1.32-pre 88 9/26/2024
4.2.1.31-pre 106 9/9/2024
4.2.1.30-pre 98 8/29/2024
4.2.1.29-pre 80 7/26/2024
4.2.1.28-pre 89 7/24/2024
4.2.1.16-pre 105 7/9/2024
4.2.1.15-pre 75 7/3/2024
4.2.1.14-pre 92 6/10/2024
4.2.1.7-pre 86 5/30/2024
4.2.1.6-pre 111 5/28/2024
4.2.1.5-pre 118 5/6/2024
4.2.1.4-pre 130 4/11/2024
4.2.1.3-pre 116 4/9/2024
4.2.1.2-pre 115 4/8/2024
4.2.1.1-pre 114 4/8/2024
4.2.1-pre 99 3/13/2024
4.2.0.17-pre 99 3/11/2024
4.2.0.16-pre 125 2/22/2024
4.2.0.15-pre 203 11/15/2023
4.2.0.14-pre 105 11/12/2023
4.2.0.13-pre 147 10/24/2023
4.2.0.12-pre 137 10/20/2023
4.2.0.11-pre 135 9/29/2023
4.2.0.10-pre 132 9/6/2023
4.2.0.9-pre 123 8/30/2023
4.2.0.8-pre 132 8/30/2023
4.2.0.7-pre 125 8/21/2023
4.2.0.6-pre 184 8/2/2023
4.2.0.5-pre 152 7/31/2023
4.2.0.4-pre 135 7/28/2023
4.2.0.3-pre 158 6/27/2023
4.2.0.2-pre 138 6/26/2023
4.2.0.1-pre 141 6/26/2023
4.2.0-pre 129 6/21/2023
4.1.5-pre 155 6/15/2023
4.1.4.1-pre 159 5/9/2023
4.1.4 271 5/9/2023
4.1.4-pre 148 4/11/2023
4.1.3.2-pre 162 4/5/2023
4.1.3.1-pre 130 4/5/2023
4.1.3 225 4/4/2023
4.1.3-pre 176 1/17/2023
4.1.2.11 171 7/31/2023
4.1.2.10 467 9/28/2022
4.1.2.10-pre 162 9/12/2022
4.1.2.5-pre 189 8/2/2022
4.1.2.4-pre 213 7/1/2022
4.1.2.3-pre 255 5/4/2022
4.1.2.2-pre 176 5/4/2022
4.1.2.1-pre 160 5/3/2022
4.1.2-pre 204 4/14/2022
4.1.1.4-pre 183 3/15/2022
4.1.1.3-pre 175 2/28/2022
4.1.1.2 505 2/7/2022
4.1.1.1 489 2/1/2022
4.1.1.1-pre 200 1/28/2022
4.1.1 537 1/21/2022
4.1.0.17 488 1/21/2022
4.1.0.16 481 1/19/2022
4.1.0.16-pre 211 1/7/2022
4.1.0.15-pre 197 1/7/2022
4.1.0.14-pre 197 12/21/2021
4.1.0.13 325 12/15/2021
4.1.0.13-pre 244 10/28/2021
4.1.0.12-pre 265 10/21/2021
4.1.0.8-pre 259 10/18/2021
4.1.0.7-pre 262 10/18/2021
4.1.0.6 350 10/14/2021
4.1.0.6-pre 291 10/8/2021
4.1.0.5-pre 268 10/1/2021
4.1.0.4-pre 247 9/17/2021
4.1.0.3-pre 246 7/7/2021
4.1.0.2-pre 257 7/6/2021
4.1.0.1-pre 216 7/5/2021
4.0.5-pre 297 6/30/2021
4.0.4.2-pre 264 6/15/2021
4.0.4.1-pre 295 6/11/2021
4.0.4 410 5/23/2021
4.0.4-pre 247 5/3/2021
4.0.3 463 4/29/2021
4.0.2 399 3/1/2021
4.0.1.4-pre 235 2/11/2021
4.0.1.3-pre 208 2/11/2021
4.0.1.2-pre 219 2/11/2021
4.0.1.1-pre 285 2/10/2021
4.0.1-pre 250 2/10/2021
4.0.0.1 507 12/4/2020
3.0.5.4 489 10/20/2020
3.0.5.4-pre 404 9/8/2020
3.0.5.3-pre 293 8/20/2020
3.0.5.2-pre 310 8/20/2020
3.0.5.1-pre 358 8/19/2020
3.0.5-pre 374 8/13/2020
3.0.4-pre 431 6/29/2020
3.0.3-pre 336 6/5/2020
3.0.2.2 493 5/27/2020
3.0.2.2-pre 361 5/11/2020
3.0.2.1-pre 371 5/11/2020
3.0.2-pre 328 4/22/2020
3.0.1-pre 382 4/17/2020
3.0.0.2-pre 379 4/7/2020
3.0.0.1-pre 320 4/7/2020
3.0.0-pre 361 4/2/2020
2.1.0.2-pre 389 3/30/2020
2.1.0.1-pre 370 3/29/2020
2.1.0-pre 349 3/24/2020
2.0.0-pre 358 3/12/2020
1.2.1-pre 409 3/4/2020
1.2.0-pre 436 3/4/2020
1.1.0 523 2/21/2020
1.1.0-pre 368 2/22/2020
1.0.0 584 1/31/2020

Fixed
*****
- Destroy Steam lobby when last Steam player leave the party.
Changed
*******
- Improve logging in case of lobby creation failure.
- Compatibility with Users version 8.0.0