Stormancer.Server.Plugins.GameSession 6.2.1.86

There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Stormancer.Server.Plugins.GameSession --version 6.2.1.86
                    
NuGet\Install-Package Stormancer.Server.Plugins.GameSession -Version 6.2.1.86
                    
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.1.86" />
                    
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.1.86" />
                    
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.1.86
                    
#r "nuget: Stormancer.Server.Plugins.GameSession, 6.2.1.86"
                    
#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.1.86
                    
#: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.1.86
                    
Install as a Cake Addin
#tool nuget:?package=Stormancer.Server.Plugins.GameSession&version=6.2.1.86
                    
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.3.1-pre 87 1/20/2026
6.3.0-pre 175 12/5/2025
6.2.2.5-pre 226 10/10/2025
6.2.2.2-pre 232 8/27/2025
6.2.2.1-pre 365 5/9/2025
6.2.2-pre 159 4/25/2025
6.2.1.95-pre 81 1/18/2026
6.2.1.94-pre 85 1/5/2026
6.2.1.93-pre 149 7/30/2025
6.2.1.92-pre 193 6/4/2025
6.2.1.91-pre 191 6/4/2025
6.2.1.90-pre 192 6/3/2025
6.2.1.89-pre 186 6/3/2025
6.2.1.88-pre 182 6/3/2025
6.2.1.87-pre 188 6/3/2025
6.2.1.86 298 3/3/2025
6.2.1.86-pre 322 3/3/2025
6.2.1.85 335 2/28/2025
6.2.1.85-pre 215 12/20/2024
6.2.1.84-pre 212 10/25/2024
6.2.1.83-pre 161 10/15/2024
6.2.1.82-pre 388 9/30/2024
6.2.1.81-pre 406 9/26/2024
6.2.1.80-pre 351 8/28/2024
6.2.1.76-pre 183 8/9/2024
6.2.1.75-pre 186 8/9/2024
6.2.1.74-pre 168 8/9/2024
6.2.1.73-pre 173 8/9/2024
6.2.1.72-pre 202 8/2/2024
6.2.1.71-pre 573 6/10/2024
6.2.1.70-pre 336 4/17/2024
6.2.1.69-pre 181 4/17/2024
6.2.1.65-pre 228 4/16/2024
6.2.1.63-pre 352 4/2/2024
6.2.1.61-pre 375 3/11/2024
6.2.1.59-pre 194 1/17/2024
6.2.1.58-pre 204 1/12/2024
6.2.1.57-pre 385 12/11/2023
6.2.1.56-pre 208 12/7/2023
6.2.1.55-pre 302 12/1/2023
6.2.1.53-pre 303 11/22/2023
6.2.1.52-pre 376 11/20/2023
6.2.1.51-pre 147 11/15/2023
6.2.1.50-pre 178 11/14/2023
6.2.1.49-pre 183 11/14/2023
6.2.1.48-pre 190 11/14/2023
6.2.1.47-pre 175 11/14/2023
6.2.1.46-pre 186 11/13/2023
6.2.1.45-pre 170 11/13/2023
6.2.1.44-pre 168 11/13/2023
6.2.1.43-pre 177 11/12/2023
6.2.1.42-pre 196 11/12/2023
6.2.1.41-pre 176 11/12/2023
6.2.1.40-pre 188 11/12/2023
6.2.1.39-pre 182 11/12/2023
6.2.1.38-pre 171 11/12/2023
6.2.1.37-pre 172 11/12/2023
6.2.1.36-pre 216 11/12/2023
6.2.1.35-pre 236 11/11/2023
6.2.1.33-pre 215 11/8/2023
6.2.1.31-pre 164 11/7/2023
6.2.1.30-pre 189 11/7/2023
6.2.1.28-pre 250 10/27/2023
6.2.1.27-pre 227 10/27/2023
6.2.1.26-pre 189 10/27/2023
6.2.1.25-pre 186 10/27/2023
6.2.1.24-pre 299 10/27/2023
6.2.1.23-pre 287 10/25/2023
6.2.1.22-pre 178 10/23/2023
6.2.1.21-pre 177 10/20/2023
6.2.1.20-pre 189 10/20/2023
6.2.1.19-pre 289 10/20/2023
6.2.1.18-pre 174 10/20/2023
6.2.1.17-pre 194 10/20/2023
6.2.1.15-pre 176 10/19/2023
6.2.1.14-pre 267 10/19/2023
6.2.1.13-pre 268 10/13/2023
6.2.1.12-pre 178 10/13/2023
6.2.1.10-pre 232 10/12/2023
6.2.1.9-pre 197 10/12/2023
6.2.1.7-pre 205 10/11/2023
6.2.1.6-pre 172 10/11/2023
6.2.1.4-pre 197 10/11/2023
6.2.1.3-pre 189 10/11/2023
6.2.1.2-pre 245 10/10/2023
6.2.1.1-pre 238 10/5/2023
6.2.1-pre 359 10/4/2023
6.2.0.14-pre 193 10/2/2023
6.2.0.13-pre 223 9/29/2023
6.2.0.12-pre 187 9/28/2023
6.2.0.11-pre 356 9/12/2023
6.2.0.10-pre 228 9/8/2023
6.2.0.9-pre 220 9/7/2023
6.2.0.8-pre 211 9/1/2023
6.2.0.7-pre 176 8/31/2023
6.2.0.6-pre 238 8/29/2023
6.2.0.5-pre 437 8/18/2023
6.2.0.4-pre 290 8/18/2023
6.2.0.3-pre 259 8/17/2023
6.2.0.2-pre 225 8/17/2023
6.2.0-pre 246 8/9/2023
6.1.2.35-pre 226 8/4/2023
6.1.2.34-pre 284 8/3/2023
6.1.2.33-pre 329 8/1/2023
6.1.2.32-pre 235 8/1/2023
6.1.2.31-pre 438 6/29/2023
6.1.2.30-pre 280 6/29/2023
6.1.2.29-pre 618 6/15/2023
6.1.2.28-pre 249 6/15/2023
6.1.2.27-pre 237 6/15/2023
6.1.2.26-pre 246 6/15/2023
6.1.2.25-pre 238 6/15/2023
6.1.2.24-pre 262 6/15/2023
6.1.2.23-pre 247 6/15/2023
6.1.2.22-pre 233 6/15/2023
6.1.2.21-pre 251 6/15/2023
6.1.2.20-pre 225 6/15/2023
6.1.2.19-pre 262 6/15/2023
6.1.2.18-pre 430 6/6/2023
6.1.2.17-pre 287 6/6/2023
6.1.2.15-pre 314 5/30/2023
6.1.2.14-pre 455 5/24/2023
6.1.2.13-pre 348 5/18/2023
6.1.2.12-pre 230 5/18/2023
6.1.2.11-pre 244 5/18/2023
6.1.2.10-pre 296 5/17/2023
6.1.2.8-pre 279 5/15/2023
6.1.2.7-pre 315 5/12/2023
6.1.2.6-pre 267 5/11/2023
6.1.2.5-pre 242 5/11/2023
6.1.2.4-pre 270 5/11/2023
6.1.2.3-pre 251 5/11/2023
6.1.2.2-pre 278 5/11/2023
6.1.2.1-pre 438 5/9/2023
6.1.2-pre 259 5/9/2023
6.1.1.15 506 5/9/2023
6.1.1.15-pre 257 5/5/2023
6.1.1.14-pre 228 5/5/2023
6.1.1.13-pre 220 4/30/2023
6.1.1.12-pre 283 4/30/2023
6.1.1.11-pre 226 4/27/2023
6.1.1.10-pre 289 4/24/2023
6.1.1.9-pre 288 4/21/2023
6.1.1.8-pre 237 4/21/2023
6.1.1.7-pre 281 4/21/2023
6.1.1.6-pre 279 4/21/2023
6.1.1.3-pre 292 4/13/2023
6.1.1.2-pre 254 4/13/2023
6.1.1.1-pre 264 4/13/2023
6.1.0.20-pre 300 4/11/2023
6.1.0.19-pre 251 4/7/2023
6.1.0.18-pre 269 4/6/2023
6.1.0.17 647 4/4/2023
6.1.0.17-pre 297 3/31/2023
6.1.0.16-pre 251 3/31/2023
6.1.0.15-pre 268 3/30/2023
6.1.0.13-pre 246 3/30/2023
6.1.0.12-pre 282 3/29/2023
6.1.0.11-pre 269 3/29/2023
6.1.0.10-pre 287 3/29/2023
6.1.0.9-pre 268 3/29/2023
6.1.0.8-pre 273 3/29/2023
6.1.0.7-pre 267 3/29/2023
6.1.0.6-pre 252 3/29/2023
6.1.0.5-pre 259 3/28/2023
6.1.0.4-pre 257 3/28/2023
6.1.0.3-pre 258 3/21/2023
6.1.0.2-pre 285 3/21/2023
6.1.0.1-pre 300 3/19/2023
6.1.0-pre 276 3/19/2023
6.0.3.6-pre 674 12/8/2022
6.0.3.5-pre 262 12/8/2022
6.0.3.4-pre 249 12/7/2022
6.0.3.3-pre 244 12/7/2022
6.0.3.2-pre 308 12/7/2022
6.0.3.1-pre 293 12/7/2022
6.0.3-pre 274 12/6/2022
6.0.2 554 10/28/2022
6.0.1.1 1,148 10/26/2022
6.0.1.1-pre 293 10/26/2022
6.0.0.3-pre 294 10/3/2022
6.0.0.2 1,677 9/28/2022
6.0.0.2-pre 603 9/12/2022
5.5.0.11-pre 684 8/2/2022
5.5.0.10-pre 312 7/27/2022
5.5.0.9-pre 646 7/1/2022
5.5.0.8-pre 425 6/9/2022
5.5.0.3-pre 310 5/24/2022
5.4.0.60-pre 757 4/12/2022
5.4.0.59-pre 354 4/12/2022
5.4.0.58-pre 374 3/31/2022
5.4.0.57-pre 327 3/31/2022
5.4.0.56-pre 332 3/24/2022
5.4.0.55-pre 343 3/23/2022
5.4.0.53-pre 356 3/22/2022
5.4.0.51-pre 516 3/15/2022
5.4.0.26-pre 330 3/14/2022
5.4.0.25-pre 324 3/14/2022
5.4.0.23-pre 345 3/8/2022
5.4.0.22-pre 334 3/1/2022
5.4.0.7-pre 490 2/28/2022
5.3.0.104-pre 312 3/17/2022
5.3.0.103-pre 327 3/17/2022
5.3.0 3,028 1/21/2022
5.3.0-pre 763 1/14/2022
5.2.0 1,761 12/15/2021
5.2.0-pre 538 10/26/2021
5.1.0.1 1,129 10/14/2021
5.0.1.2 1,522 5/23/2021
5.0.1.2-pre 1,088 5/12/2021
5.0.1-pre 502 5/3/2021
4.0.7 1,275 4/29/2021
4.0.6 646 4/19/2021
4.0.5 673 3/22/2021
4.0.4.1 987 3/20/2021
4.0.4 1,486 3/1/2021
4.0.3.2 660 12/18/2020
4.0.3.2-pre 560 12/17/2020
4.0.3.1-pre 499 12/17/2020
4.0.3-pre 539 12/17/2020
4.0.1.1 1,171 12/9/2020
4.0.0.1 1,420 12/4/2020
3.3.4 691 12/9/2020
3.3.3.2 704 12/8/2020
3.3.3.2-pre 513 12/8/2020
3.3.2.2 1,399 10/20/2020
3.3.2.2-pre 696 10/13/2020
3.3.2.1-pre 603 9/29/2020
3.3.2-pre 1,278 8/11/2020
3.3.1.1-pre 582 8/11/2020
3.3.1-pre 512 8/11/2020
3.3.0-pre 568 7/1/2020
3.2.3-pre 538 6/30/2020
3.2.2-pre 541 6/23/2020
3.2.1-pre 583 6/22/2020
3.2.0-pre 687 6/16/2020
3.1.3-pre 580 6/15/2020
3.1.2-pre 609 6/9/2020
3.0.2 730 6/15/2020
3.0.2-pre 618 6/5/2020
3.0.1 1,621 5/27/2020
3.0.1-pre 1,042 3/30/2020
3.0.0-pre 1,398 3/29/2020
2.0.0.3 799 2/20/2020
2.0.0.3-pre 1,144 2/22/2020
2.0.0.2 785 2/19/2020
2.0.0.1 1,393 2/19/2020
2.0.0 1,064 2/13/2020
1.2.1-alpha.2 482 2/19/2020
1.2.1-alpha.1 495 1/27/2020
1.1.1 1,185 1/21/2020
1.1.1-alpha.1 487 2/19/2020
1.0.0.3 1,373 1/4/2020
1.0.0.2 854 1/4/2020
1.0.0.1 1,343 1/4/2020

Changed
*******
- Update dependencies to release version