Class SessionOptionsExtensions
Provides extension methods to configure session networking options.
Inheritance
Inherited Members
Namespace: Unity.Services.Multiplayer
Syntax
public static class SessionOptionsExtensions
Methods
WithDirectNetwork<T>(T, String, String, Int32)
Configures a session to use direct networking and accept connections at the specified address.
Declaration
public static T WithDirectNetwork<T>(this T options, string listenIp = "127.0.0.1", string publishIp = "127.0.0.1", int port = 0)
where T : SessionOptions
Parameters
Type | Name | Description |
---|---|---|
T | options | The SessionOptions this extension method applies to. |
System.String | listenIp | Listen for incoming connection at this address ("0.0.0.0" for all interfaces). |
System.String | publishIp | Address that clients should use when connecting |
System.Int32 | port | Port to listen for incoming connections and also the one to use by clients |
Returns
Type | Description |
---|---|
T | The session options |
Type Parameters
Name | Description |
---|---|
T | The options' type. |
Remarks
Using direct networking in client-hosted games reveals the IP address of players to the host. For client-hosted games, using Relay or Distributed Authority is recommended to handle NAT, firewalls and protect player privacy.
The default values allow local connections only and use 127.0.0.1 as the listenIp
and publishIp
. To listen on all interfaces, use 0.0.0.0 as the listenIp and specify the external/public IP address that clients should use as the publishIp.
The port number defaults to 0 which selects a randomly available port on the machine and uses the chosen value as the publish port. If a non-zero value is used, the port number applies to both listen and publish addresses.
When using Netcode for Entities, Multiplayer Services Sessions require that your Client and Server Worlds are created before you create or join a session when not using a custom network handler. This will always be the case when using the default bootstrap which creates the client and server worlds automatically at startup when the Netcode for Entities package is first added to your project. For more advanced use cases, use WithNetworkHandler to disable the default integration with Netcode for Entities.
WithNetworkHandler<T>(T, INetworkHandler)
Configures a session to use a custom network handler.
Declaration
public static T WithNetworkHandler<T>(this T options, INetworkHandler networkHandler)
where T : BaseSessionOptions
Parameters
Type | Name | Description |
---|---|---|
T | options | The SessionOptions this extension method applies to. |
INetworkHandler | networkHandler | The INetworkHandler to use |
Returns
Type | Description |
---|---|
T | The session options |
Type Parameters
Name | Description |
---|---|
T | The options' type. |
Remarks
When a network handler is provided, it disables the default integration with Netcode for Game Objects and Netcode for Entities.
Combine this option with another networking option (WithDirectNetwork<T>(T, String, String, Int32), WithRelayNetwork<T>(T, String), ) to obtain the appropriate data to implement a custom management of the netcode library and/or transport library.
This option applies to all session flows and is normally set for all roles (host, server, client).
WithRelayNetwork<T>(T, String)
Configures a session to use Relay networking.
Declaration
public static T WithRelayNetwork<T>(this T options, string region = null)
where T : SessionOptions
Parameters
Type | Name | Description |
---|---|---|
T | options | The SessionOptions this extension method applies to. |
System.String | region | Force a specific Relay region to be used and skip auto-selection from QoS. |
Returns
Type | Description |
---|---|
T | The session options |
Type Parameters
Name | Description |
---|---|
T | The options' type. |
Remarks
The region is optional; the default behavior is to perform quality of service (QoS) measurements and pickthe lowest latency region. The list of regions can be obtained from the Relay Allocations Service via ListRegionsAsync().
When using Netcode for Entities, Multiplayer Services Sessions require that your Client and Server Worlds are created before you create or join a session when not using a custom network handler. This will always be the case when using the default bootstrap which creates the client and server worlds automatically at startup when the Netcode for Entities package is first added to your project. For more advanced use cases, use WithNetworkHandler to disable the default integration with Netcode for Entities.