v1.0.0
Latest
2022.3+

Class SessionOptionsExtensions

Provides extension methods to configure session networking options.

Inheritance
System.Object
SessionOptionsExtensions
Inherited Members
System.Object.ToString()
System.Object.Equals(System.Object)
System.Object.Equals(System.Object, System.Object)
System.Object.ReferenceEquals(System.Object, System.Object)
System.Object.GetHashCode()
System.Object.GetType()
System.Object.MemberwiseClone()
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
TypeNameDescription
Toptions

The SessionOptions this extension method applies to.

System.StringlistenIp

Listen for incoming connection at this address ("0.0.0.0" for all interfaces).

System.StringpublishIp

Address that clients should use when connecting

System.Int32port

Port to listen for incoming connections and also the one to use by clients

Returns
TypeDescription
T

The session options

Type Parameters
NameDescription
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
TypeNameDescription
Toptions

The SessionOptions this extension method applies to.

INetworkHandlernetworkHandler

The INetworkHandler to use

Returns
TypeDescription
T

The session options

Type Parameters
NameDescription
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
TypeNameDescription
Toptions

The SessionOptions this extension method applies to.

System.Stringregion

Force a specific Relay region to be used and skip auto-selection from QoS.

Returns
TypeDescription
T

The session options

Type Parameters
NameDescription
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.