Stormancer.Server.Plugins.GameSession 6.2.2.2-pre

This is a prerelease version of Stormancer.Server.Plugins.GameSession.
dotnet add package Stormancer.Server.Plugins.GameSession --version 6.2.2.2-pre
                    
NuGet\Install-Package Stormancer.Server.Plugins.GameSession -Version 6.2.2.2-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.GameSession" Version="6.2.2.2-pre" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Stormancer.Server.Plugins.GameSession" Version="6.2.2.2-pre" />
                    
Directory.Packages.props
<PackageReference Include="Stormancer.Server.Plugins.GameSession" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Stormancer.Server.Plugins.GameSession --version 6.2.2.2-pre
                    
#r "nuget: Stormancer.Server.Plugins.GameSession, 6.2.2.2-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.
#:package Stormancer.Server.Plugins.GameSession@6.2.2.2-pre
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Stormancer.Server.Plugins.GameSession&version=6.2.2.2-pre&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Stormancer.Server.Plugins.GameSession&version=6.2.2.2-pre&prerelease
                    
Install as a Cake Tool

This plugin adds support for P2P & client-server game sessions to a Stormancer application. It supports:

  • P2P and Client/Server game sessions
  • Electing an host in P2P game sessions
  • Managing game servers (requires adding ServerPools.hpp to the game server)
  • Game session startup/shutdown events
  • Game session results aggregation and processing in P2P (allows comparing game results from all peers) and Client/server (only the server sends game results)
  • Public or access restricted game sessions.

Setting up game servers

The gamesession system supports starting game servers to run the game session.

Development game servers

The development game server pool enables gamesessions to wait for the connection of a non authenticated gameserver to host the game session. This enables starting the game server manually from a developer computer, in the debugger or on the cmd prompt.The clients and game server uses the normal P2P connectivity system, supporting NAT traversal. This avoids the need of any configuration on the developer network.

ctx.HostStarting += (IHost host) =>
{
    [...]

    //Declares a development server pool named dev.
    host.ConfigureServerPools(c => c.DevPool("dev"));

    //Declares a gamesession type using the pool configured above.
    host.ConfigureGameSession("gamesession-server", c => c
        .UseGameServer(c => c
            .PoolId("dev")
            )
        .CustomizeScene(scene=>scene.AddSocket())
    );

    [...]
}

Hosting game servers on local docker

The docker server pool enables game servers to be run as docker container on Stormancer cluster. Containers are automatically started on the node running the less game instances. Other policies could be put in place if necessary.

ctx.HostStarting += (IHost host) =>
{
    [...]

    //Declares a docker server pool named docker, that uses the image 'game-server-image:latest'
    host.ConfigureServerPools(c => c.DockerPool("docker", b => b.Image("game-server-image:latest")));

    //Declares a gamesession type using the pool configured above.
    host.ConfigureGameSession("gamesession-server", c => c
        .UseGameServer(c => c
            .PoolId("docker")
            )
        .CustomizeScene(scene=>scene.AddSocket())
    );

    [...]
}

Other tasks are required to host game servers on docker:

Grid configuration

For the game servers to connect to the Stormancer cluster from inside docker containers, the grid nodes must not be bound to localhost. They must publish public, or at least LAN IP addresses. To do that, in the node configuration file, set both publicIp and loadbalancedIp to an interface accessible by docker containers, for instance:

{
    "constants": {
        "host-ip" : "xxx.xxx.xxx.xxx"
        "publicIp": "{host-ip}",
        "loadBalancedIp": "{host-ip}",
        [...]

Stormancer needs to associate local ports to the game server. To specify the range of ports to use, a delegated transport entry must be added to the grid nodes configuration:

[...]

"endpoints": {
    //udp transport
    "udp1": {
        "type": "raknet",
        "port": "{udpPort}",
        "maxConnections": 100,
        "publicEndpoint": "{publicIp}:{udpPort}"
    },
    
    [...]
    
    //delegated transport, allows specifying a pool of ports.
    "public1": {
        "type": "delegated",
        "publicEndpoint": "{publicIp}",
        "ports": {
        "min": 42000,
        "max": 44000

        }

    }
},
[...]

The node firewall must be opened for UDP in the range specified (42000-44000 in the example).

Secrets

Docker servers authentify with the grid using an encrypted token using the aes-gcm algorithm. The encryption key is stored in a cluster secret store that must be created manually. The path to the key is specified in the application' configuration in the gameServer dataProtection policy:

{
    [...]

    "dataProtection":{
	    "gameServer":{
		    "provider":"aes-gcm",
		    "key":"my-account/my-secret-store/gameServer",
		    "createKeyIfNotExists":true
	    }
        [...]
    }
}

The secrets store must be created prior to application start. If the CLI plugin Stormancer.Management.CLI is installed, it can be created using the following command:

> dotnet tool run stormancer manage secrets-store create --cluster test --account my-account --id my-secret-store

Analytics

The plugin produces the following analytics:

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.  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.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (9)

Showing the top 5 NuGet packages that depend on Stormancer.Server.Plugins.GameSession:

Package Downloads
Stormancer.Server.Plugins.Party

Provides Party related features to a Stormancer server application.

Stormancer.Server.Plugins.GameFinder

Provides Gamefinder features to a Stormancer server application.

Stormancer.Server.Plugins.GameHistory

Game history system for Stormancer server applications.

Stormancer.Server.Plugins.Spectate

Provides game data streaming APIs for replay or realtime spectate.

Stormancer.Server.Plugins.Replication

Provides server services required for object replication.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
6.2.2.2-pre 175 8/27/2025
6.2.2.1-pre 217 5/9/2025
6.2.2-pre 115 4/25/2025
6.2.1.93-pre 95 7/30/2025
6.2.1.92-pre 143 6/4/2025
6.2.1.91-pre 141 6/4/2025
6.2.1.90-pre 143 6/3/2025
6.2.1.89-pre 137 6/3/2025
6.2.1.88-pre 136 6/3/2025
6.2.1.87-pre 138 6/3/2025
6.2.1.86 208 3/3/2025
6.2.1.86-pre 206 3/3/2025
6.2.1.85 193 2/28/2025
6.2.1.85-pre 150 12/20/2024
6.2.1.84-pre 135 10/25/2024
6.2.1.83-pre 112 10/15/2024
6.2.1.82-pre 248 9/30/2024
6.2.1.81-pre 247 9/26/2024
6.2.1.80-pre 231 8/28/2024
6.2.1.76-pre 137 8/9/2024
6.2.1.75-pre 144 8/9/2024
6.2.1.74-pre 122 8/9/2024
6.2.1.73-pre 125 8/9/2024
6.2.1.72-pre 132 8/2/2024
6.2.1.71-pre 340 6/10/2024
6.2.1.70-pre 221 4/17/2024
6.2.1.69-pre 131 4/17/2024
6.2.1.65-pre 158 4/16/2024
6.2.1.63-pre 229 4/2/2024
6.2.1.61-pre 235 3/11/2024
6.2.1.59-pre 138 1/17/2024
6.2.1.58-pre 157 1/12/2024
6.2.1.57-pre 272 12/11/2023
6.2.1.56-pre 154 12/7/2023
6.2.1.55-pre 220 12/1/2023
6.2.1.53-pre 224 11/22/2023
6.2.1.52-pre 252 11/20/2023
6.2.1.51-pre 109 11/15/2023
6.2.1.50-pre 137 11/14/2023
6.2.1.49-pre 135 11/14/2023
6.2.1.48-pre 144 11/14/2023
6.2.1.47-pre 132 11/14/2023
6.2.1.46-pre 138 11/13/2023
6.2.1.45-pre 126 11/13/2023
6.2.1.44-pre 125 11/13/2023
6.2.1.43-pre 131 11/12/2023
6.2.1.42-pre 152 11/12/2023
6.2.1.41-pre 135 11/12/2023
6.2.1.40-pre 145 11/12/2023
6.2.1.39-pre 133 11/12/2023
6.2.1.38-pre 124 11/12/2023
6.2.1.37-pre 134 11/12/2023
6.2.1.36-pre 157 11/12/2023
6.2.1.35-pre 169 11/11/2023
6.2.1.33-pre 161 11/8/2023
6.2.1.31-pre 115 11/7/2023
6.2.1.30-pre 141 11/7/2023
6.2.1.28-pre 190 10/27/2023
6.2.1.27-pre 169 10/27/2023
6.2.1.26-pre 147 10/27/2023
6.2.1.25-pre 139 10/27/2023
6.2.1.24-pre 220 10/27/2023
6.2.1.23-pre 200 10/25/2023
6.2.1.22-pre 139 10/23/2023
6.2.1.21-pre 139 10/20/2023
6.2.1.20-pre 138 10/20/2023
6.2.1.19-pre 206 10/20/2023
6.2.1.18-pre 130 10/20/2023
6.2.1.17-pre 139 10/20/2023
6.2.1.15-pre 129 10/19/2023
6.2.1.14-pre 191 10/19/2023
6.2.1.13-pre 195 10/13/2023
6.2.1.12-pre 133 10/13/2023
6.2.1.10-pre 173 10/12/2023
6.2.1.9-pre 147 10/12/2023
6.2.1.7-pre 151 10/11/2023
6.2.1.6-pre 132 10/11/2023
6.2.1.4-pre 152 10/11/2023
6.2.1.3-pre 147 10/11/2023
6.2.1.2-pre 188 10/10/2023
6.2.1.1-pre 162 10/5/2023
6.2.1-pre 250 10/4/2023
6.2.0.14-pre 152 10/2/2023
6.2.0.13-pre 163 9/29/2023
6.2.0.12-pre 145 9/28/2023
6.2.0.11-pre 244 9/12/2023
6.2.0.10-pre 187 9/8/2023
6.2.0.9-pre 170 9/7/2023
6.2.0.8-pre 165 9/1/2023
6.2.0.7-pre 124 8/31/2023
6.2.0.6-pre 184 8/29/2023
6.2.0.5-pre 302 8/18/2023
6.2.0.4-pre 217 8/18/2023
6.2.0.3-pre 205 8/17/2023
6.2.0.2-pre 175 8/17/2023
6.2.0-pre 193 8/9/2023
6.1.2.35-pre 180 8/4/2023
6.1.2.34-pre 215 8/3/2023
6.1.2.33-pre 256 8/1/2023
6.1.2.32-pre 187 8/1/2023
6.1.2.31-pre 323 6/29/2023
6.1.2.30-pre 227 6/29/2023
6.1.2.29-pre 422 6/15/2023
6.1.2.28-pre 188 6/15/2023
6.1.2.27-pre 185 6/15/2023
6.1.2.26-pre 183 6/15/2023
6.1.2.25-pre 189 6/15/2023
6.1.2.24-pre 206 6/15/2023
6.1.2.23-pre 200 6/15/2023
6.1.2.22-pre 191 6/15/2023
6.1.2.21-pre 180 6/15/2023
6.1.2.20-pre 178 6/15/2023
6.1.2.19-pre 199 6/15/2023
6.1.2.18-pre 295 6/6/2023
6.1.2.17-pre 209 6/6/2023
6.1.2.15-pre 246 5/30/2023
6.1.2.14-pre 311 5/24/2023
6.1.2.13-pre 259 5/18/2023
6.1.2.12-pre 176 5/18/2023
6.1.2.11-pre 179 5/18/2023
6.1.2.10-pre 221 5/17/2023
6.1.2.8-pre 209 5/15/2023
6.1.2.7-pre 227 5/12/2023
6.1.2.6-pre 205 5/11/2023
6.1.2.5-pre 185 5/11/2023
6.1.2.4-pre 206 5/11/2023
6.1.2.3-pre 189 5/11/2023
6.1.2.2-pre 206 5/11/2023
6.1.2.1-pre 303 5/9/2023
6.1.2-pre 187 5/9/2023
6.1.1.15 411 5/9/2023
6.1.1.15-pre 193 5/5/2023
6.1.1.14-pre 170 5/5/2023
6.1.1.13-pre 173 4/30/2023
6.1.1.12-pre 211 4/30/2023
6.1.1.11-pre 177 4/27/2023
6.1.1.10-pre 212 4/24/2023
6.1.1.9-pre 223 4/21/2023
6.1.1.8-pre 183 4/21/2023
6.1.1.7-pre 221 4/21/2023
6.1.1.6-pre 200 4/21/2023
6.1.1.3-pre 219 4/13/2023
6.1.1.2-pre 191 4/13/2023
6.1.1.1-pre 199 4/13/2023
6.1.0.20-pre 230 4/11/2023
6.1.0.19-pre 190 4/7/2023
6.1.0.18-pre 204 4/6/2023
6.1.0.17 531 4/4/2023
6.1.0.17-pre 216 3/31/2023
6.1.0.16-pre 187 3/31/2023
6.1.0.15-pre 193 3/30/2023
6.1.0.13-pre 195 3/30/2023
6.1.0.12-pre 205 3/29/2023
6.1.0.11-pre 199 3/29/2023
6.1.0.10-pre 219 3/29/2023
6.1.0.9-pre 204 3/29/2023
6.1.0.8-pre 214 3/29/2023
6.1.0.7-pre 204 3/29/2023
6.1.0.6-pre 187 3/29/2023
6.1.0.5-pre 197 3/28/2023
6.1.0.4-pre 195 3/28/2023
6.1.0.3-pre 207 3/21/2023
6.1.0.2-pre 218 3/21/2023
6.1.0.1-pre 229 3/19/2023
6.1.0-pre 207 3/19/2023
6.0.3.6-pre 425 12/8/2022
6.0.3.5-pre 201 12/8/2022
6.0.3.4-pre 180 12/7/2022
6.0.3.3-pre 183 12/7/2022
6.0.3.2-pre 227 12/7/2022
6.0.3.1-pre 202 12/7/2022
6.0.3-pre 195 12/6/2022
6.0.2 483 10/28/2022
6.0.1.1 1,015 10/26/2022
6.0.1.1-pre 224 10/26/2022
6.0.0.3-pre 224 10/3/2022
6.0.0.2 1,505 9/28/2022
6.0.0.2-pre 416 9/12/2022
5.5.0.11-pre 487 8/2/2022
5.5.0.10-pre 238 7/27/2022
5.5.0.9-pre 447 7/1/2022
5.5.0.8-pre 314 6/9/2022
5.5.0.3-pre 238 5/24/2022
5.4.0.60-pre 540 4/12/2022
5.4.0.59-pre 282 4/12/2022
5.4.0.58-pre 296 3/31/2022
5.4.0.57-pre 256 3/31/2022
5.4.0.56-pre 258 3/24/2022
5.4.0.55-pre 259 3/23/2022
5.4.0.53-pre 265 3/22/2022
5.4.0.51-pre 374 3/15/2022
5.4.0.26-pre 252 3/14/2022
5.4.0.25-pre 260 3/14/2022
5.4.0.23-pre 271 3/8/2022
5.4.0.22-pre 259 3/1/2022
5.4.0.7-pre 353 2/28/2022
5.3.0.104-pre 252 3/17/2022
5.3.0.103-pre 254 3/17/2022
5.3.0 2,794 1/21/2022
5.3.0-pre 510 1/14/2022
5.2.0 1,542 12/15/2021
5.2.0-pre 400 10/26/2021
5.1.0.1 948 10/14/2021
5.0.1.2 1,341 5/23/2021
5.0.1.2-pre 798 5/12/2021
5.0.1-pre 384 5/3/2021
4.0.7 1,130 4/29/2021
4.0.6 557 4/19/2021
4.0.5 600 3/22/2021
4.0.4.1 841 3/20/2021
4.0.4 1,258 3/1/2021
4.0.3.2 583 12/18/2020
4.0.3.2-pre 464 12/17/2020
4.0.3.1-pre 417 12/17/2020
4.0.3-pre 446 12/17/2020
4.0.1.1 987 12/9/2020
4.0.0.1 1,249 12/4/2020
3.3.4 601 12/9/2020
3.3.3.2 608 12/8/2020
3.3.3.2-pre 437 12/8/2020
3.3.2.2 1,261 10/20/2020
3.3.2.2-pre 564 10/13/2020
3.3.2.1-pre 475 9/29/2020
3.3.2-pre 978 8/11/2020
3.3.1.1-pre 504 8/11/2020
3.3.1-pre 427 8/11/2020
3.3.0-pre 483 7/1/2020
3.2.3-pre 453 6/30/2020
3.2.2-pre 452 6/23/2020
3.2.1-pre 497 6/22/2020
3.2.0-pre 572 6/16/2020
3.1.3-pre 494 6/15/2020
3.1.2-pre 513 6/9/2020
3.0.2 654 6/15/2020
3.0.2-pre 534 6/5/2020
3.0.1 1,472 5/27/2020
3.0.1-pre 844 3/30/2020
3.0.0-pre 1,119 3/29/2020
2.0.0.3 713 2/20/2020
2.0.0.3-pre 936 2/22/2020
2.0.0.2 702 2/19/2020
2.0.0.1 1,264 2/19/2020
2.0.0 934 2/13/2020
1.2.1-alpha.2 426 2/19/2020
1.2.1-alpha.1 433 1/27/2020
1.1.1 1,058 1/21/2020
1.1.1-alpha.1 430 2/19/2020
1.0.0.3 1,233 1/4/2020
1.0.0.2 766 1/4/2020
1.0.0.1 1,215 1/4/2020

Changed
*******
- Don't try creating Game session monitoring events if Elasticsearch is disabled.