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.0-pre 152 12/5/2025
6.2.2.5-pre 207 10/10/2025
6.2.2.2-pre 217 8/27/2025
6.2.2.1-pre 348 5/9/2025
6.2.2-pre 145 4/25/2025
6.2.1.93-pre 126 7/30/2025
6.2.1.92-pre 177 6/4/2025
6.2.1.91-pre 176 6/4/2025
6.2.1.90-pre 177 6/3/2025
6.2.1.89-pre 169 6/3/2025
6.2.1.88-pre 168 6/3/2025
6.2.1.87-pre 170 6/3/2025
6.2.1.86 279 3/3/2025
6.2.1.86-pre 307 3/3/2025
6.2.1.85 314 2/28/2025
6.2.1.85-pre 194 12/20/2024
6.2.1.84-pre 199 10/25/2024
6.2.1.83-pre 138 10/15/2024
6.2.1.82-pre 374 9/30/2024
6.2.1.81-pre 390 9/26/2024
6.2.1.80-pre 337 8/28/2024
6.2.1.76-pre 165 8/9/2024
6.2.1.75-pre 170 8/9/2024
6.2.1.74-pre 153 8/9/2024
6.2.1.73-pre 154 8/9/2024
6.2.1.72-pre 194 8/2/2024
6.2.1.71-pre 557 6/10/2024
6.2.1.70-pre 324 4/17/2024
6.2.1.69-pre 170 4/17/2024
6.2.1.65-pre 213 4/16/2024
6.2.1.63-pre 330 4/2/2024
6.2.1.61-pre 358 3/11/2024
6.2.1.59-pre 175 1/17/2024
6.2.1.58-pre 185 1/12/2024
6.2.1.57-pre 361 12/11/2023
6.2.1.56-pre 183 12/7/2023
6.2.1.55-pre 283 12/1/2023
6.2.1.53-pre 287 11/22/2023
6.2.1.52-pre 361 11/20/2023
6.2.1.51-pre 138 11/15/2023
6.2.1.50-pre 165 11/14/2023
6.2.1.49-pre 166 11/14/2023
6.2.1.48-pre 172 11/14/2023
6.2.1.47-pre 151 11/14/2023
6.2.1.46-pre 167 11/13/2023
6.2.1.45-pre 155 11/13/2023
6.2.1.44-pre 154 11/13/2023
6.2.1.43-pre 158 11/12/2023
6.2.1.42-pre 180 11/12/2023
6.2.1.41-pre 165 11/12/2023
6.2.1.40-pre 173 11/12/2023
6.2.1.39-pre 165 11/12/2023
6.2.1.38-pre 152 11/12/2023
6.2.1.37-pre 159 11/12/2023
6.2.1.36-pre 208 11/12/2023
6.2.1.35-pre 220 11/11/2023
6.2.1.33-pre 198 11/8/2023
6.2.1.31-pre 143 11/7/2023
6.2.1.30-pre 171 11/7/2023
6.2.1.28-pre 240 10/27/2023
6.2.1.27-pre 207 10/27/2023
6.2.1.26-pre 173 10/27/2023
6.2.1.25-pre 165 10/27/2023
6.2.1.24-pre 286 10/27/2023
6.2.1.23-pre 268 10/25/2023
6.2.1.22-pre 165 10/23/2023
6.2.1.21-pre 166 10/20/2023
6.2.1.20-pre 166 10/20/2023
6.2.1.19-pre 275 10/20/2023
6.2.1.18-pre 165 10/20/2023
6.2.1.17-pre 169 10/20/2023
6.2.1.15-pre 159 10/19/2023
6.2.1.14-pre 249 10/19/2023
6.2.1.13-pre 248 10/13/2023
6.2.1.12-pre 164 10/13/2023
6.2.1.10-pre 218 10/12/2023
6.2.1.9-pre 177 10/12/2023
6.2.1.7-pre 182 10/11/2023
6.2.1.6-pre 156 10/11/2023
6.2.1.4-pre 178 10/11/2023
6.2.1.3-pre 174 10/11/2023
6.2.1.2-pre 233 10/10/2023
6.2.1.1-pre 220 10/5/2023
6.2.1-pre 348 10/4/2023
6.2.0.14-pre 169 10/2/2023
6.2.0.13-pre 206 9/29/2023
6.2.0.12-pre 174 9/28/2023
6.2.0.11-pre 342 9/12/2023
6.2.0.10-pre 215 9/8/2023
6.2.0.9-pre 201 9/7/2023
6.2.0.8-pre 197 9/1/2023
6.2.0.7-pre 155 8/31/2023
6.2.0.6-pre 223 8/29/2023
6.2.0.5-pre 424 8/18/2023
6.2.0.4-pre 272 8/18/2023
6.2.0.3-pre 245 8/17/2023
6.2.0.2-pre 208 8/17/2023
6.2.0-pre 225 8/9/2023
6.1.2.35-pre 212 8/4/2023
6.1.2.34-pre 268 8/3/2023
6.1.2.33-pre 314 8/1/2023
6.1.2.32-pre 220 8/1/2023
6.1.2.31-pre 423 6/29/2023
6.1.2.30-pre 259 6/29/2023
6.1.2.29-pre 594 6/15/2023
6.1.2.28-pre 226 6/15/2023
6.1.2.27-pre 215 6/15/2023
6.1.2.26-pre 228 6/15/2023
6.1.2.25-pre 218 6/15/2023
6.1.2.24-pre 244 6/15/2023
6.1.2.23-pre 229 6/15/2023
6.1.2.22-pre 218 6/15/2023
6.1.2.21-pre 229 6/15/2023
6.1.2.20-pre 206 6/15/2023
6.1.2.19-pre 248 6/15/2023
6.1.2.18-pre 414 6/6/2023
6.1.2.17-pre 264 6/6/2023
6.1.2.15-pre 294 5/30/2023
6.1.2.14-pre 437 5/24/2023
6.1.2.13-pre 330 5/18/2023
6.1.2.12-pre 209 5/18/2023
6.1.2.11-pre 222 5/18/2023
6.1.2.10-pre 274 5/17/2023
6.1.2.8-pre 262 5/15/2023
6.1.2.7-pre 295 5/12/2023
6.1.2.6-pre 251 5/11/2023
6.1.2.5-pre 226 5/11/2023
6.1.2.4-pre 249 5/11/2023
6.1.2.3-pre 233 5/11/2023
6.1.2.2-pre 261 5/11/2023
6.1.2.1-pre 422 5/9/2023
6.1.2-pre 236 5/9/2023
6.1.1.15 484 5/9/2023
6.1.1.15-pre 237 5/5/2023
6.1.1.14-pre 213 5/5/2023
6.1.1.13-pre 205 4/30/2023
6.1.1.12-pre 264 4/30/2023
6.1.1.11-pre 212 4/27/2023
6.1.1.10-pre 268 4/24/2023
6.1.1.9-pre 270 4/21/2023
6.1.1.8-pre 217 4/21/2023
6.1.1.7-pre 261 4/21/2023
6.1.1.6-pre 257 4/21/2023
6.1.1.3-pre 276 4/13/2023
6.1.1.2-pre 231 4/13/2023
6.1.1.1-pre 241 4/13/2023
6.1.0.20-pre 284 4/11/2023
6.1.0.19-pre 233 4/7/2023
6.1.0.18-pre 245 4/6/2023
6.1.0.17 623 4/4/2023
6.1.0.17-pre 274 3/31/2023
6.1.0.16-pre 224 3/31/2023
6.1.0.15-pre 240 3/30/2023
6.1.0.13-pre 231 3/30/2023
6.1.0.12-pre 260 3/29/2023
6.1.0.11-pre 245 3/29/2023
6.1.0.10-pre 264 3/29/2023
6.1.0.9-pre 248 3/29/2023
6.1.0.8-pre 258 3/29/2023
6.1.0.7-pre 249 3/29/2023
6.1.0.6-pre 234 3/29/2023
6.1.0.5-pre 240 3/28/2023
6.1.0.4-pre 240 3/28/2023
6.1.0.3-pre 239 3/21/2023
6.1.0.2-pre 264 3/21/2023
6.1.0.1-pre 282 3/19/2023
6.1.0-pre 257 3/19/2023
6.0.3.6-pre 651 12/8/2022
6.0.3.5-pre 238 12/8/2022
6.0.3.4-pre 224 12/7/2022
6.0.3.3-pre 220 12/7/2022
6.0.3.2-pre 284 12/7/2022
6.0.3.1-pre 270 12/7/2022
6.0.3-pre 251 12/6/2022
6.0.2 532 10/28/2022
6.0.1.1 1,127 10/26/2022
6.0.1.1-pre 271 10/26/2022
6.0.0.3-pre 273 10/3/2022
6.0.0.2 1,658 9/28/2022
6.0.0.2-pre 579 9/12/2022
5.5.0.11-pre 664 8/2/2022
5.5.0.10-pre 292 7/27/2022
5.5.0.9-pre 625 7/1/2022
5.5.0.8-pre 402 6/9/2022
5.5.0.3-pre 291 5/24/2022
5.4.0.60-pre 741 4/12/2022
5.4.0.59-pre 335 4/12/2022
5.4.0.58-pre 360 3/31/2022
5.4.0.57-pre 306 3/31/2022
5.4.0.56-pre 312 3/24/2022
5.4.0.55-pre 325 3/23/2022
5.4.0.53-pre 333 3/22/2022
5.4.0.51-pre 492 3/15/2022
5.4.0.26-pre 305 3/14/2022
5.4.0.25-pre 303 3/14/2022
5.4.0.23-pre 327 3/8/2022
5.4.0.22-pre 312 3/1/2022
5.4.0.7-pre 472 2/28/2022
5.3.0.104-pre 293 3/17/2022
5.3.0.103-pre 309 3/17/2022
5.3.0 3,006 1/21/2022
5.3.0-pre 742 1/14/2022
5.2.0 1,732 12/15/2021
5.2.0-pre 516 10/26/2021
5.1.0.1 1,110 10/14/2021
5.0.1.2 1,505 5/23/2021
5.0.1.2-pre 1,070 5/12/2021
5.0.1-pre 479 5/3/2021
4.0.7 1,251 4/29/2021
4.0.6 621 4/19/2021
4.0.5 653 3/22/2021
4.0.4.1 960 3/20/2021
4.0.4 1,470 3/1/2021
4.0.3.2 642 12/18/2020
4.0.3.2-pre 536 12/17/2020
4.0.3.1-pre 479 12/17/2020
4.0.3-pre 515 12/17/2020
4.0.1.1 1,150 12/9/2020
4.0.0.1 1,393 12/4/2020
3.3.4 667 12/9/2020
3.3.3.2 679 12/8/2020
3.3.3.2-pre 497 12/8/2020
3.3.2.2 1,382 10/20/2020
3.3.2.2-pre 680 10/13/2020
3.3.2.1-pre 585 9/29/2020
3.3.2-pre 1,258 8/11/2020
3.3.1.1-pre 566 8/11/2020
3.3.1-pre 489 8/11/2020
3.3.0-pre 544 7/1/2020
3.2.3-pre 519 6/30/2020
3.2.2-pre 518 6/23/2020
3.2.1-pre 562 6/22/2020
3.2.0-pre 668 6/16/2020
3.1.3-pre 560 6/15/2020
3.1.2-pre 588 6/9/2020
3.0.2 709 6/15/2020
3.0.2-pre 596 6/5/2020
3.0.1 1,595 5/27/2020
3.0.1-pre 1,024 3/30/2020
3.0.0-pre 1,380 3/29/2020
2.0.0.3 777 2/20/2020
2.0.0.3-pre 1,126 2/22/2020
2.0.0.2 768 2/19/2020
2.0.0.1 1,374 2/19/2020
2.0.0 1,035 2/13/2020
1.2.1-alpha.2 465 2/19/2020
1.2.1-alpha.1 475 1/27/2020
1.1.1 1,161 1/21/2020
1.1.1-alpha.1 469 2/19/2020
1.0.0.3 1,349 1/4/2020
1.0.0.2 831 1/4/2020
1.0.0.1 1,323 1/4/2020

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