From 5f007d704e4a1b8f1d4a81d7d2e3f210b6f9edeb Mon Sep 17 00:00:00 2001 From: Luke Stampfli Date: Sun, 28 Feb 2021 23:51:30 +0000 Subject: [PATCH 1/7] feat: Add NetworkAddress and NetworkPort properties to Transport. --- .../Transports/MultiplexTransportAdapter.cs | 14 ++++++ .../Runtime/Transports/NetworkTransport.cs | 13 +++++ .../Runtime/Transports/UNET/UnetTransport.cs | 50 ++++++++++++------- 3 files changed, 59 insertions(+), 18 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs b/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs index 0a0fe143fd..3a037fb40e 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs @@ -48,6 +48,20 @@ public enum ConnectionIdSpreadMethod public NetworkTransport[] Transports = new NetworkTransport[0]; public override ulong ServerClientId => 0; + /// + public override string NetworkAddress + { + get => Transports.Any() ? Transports.First().NetworkAddress : default; + set => Array.ForEach(Transports, t => t.NetworkAddress = value); + } + + /// + public override ushort NetworkPort + { + get => Transports.Any() ? Transports.First().NetworkPort : default; + set => Array.ForEach(Transports, t => t.NetworkPort = value); + } + private byte _lastProcessedTransportIndex; public override bool IsSupported => true; diff --git a/com.unity.multiplayer.mlapi/Runtime/Transports/NetworkTransport.cs b/com.unity.multiplayer.mlapi/Runtime/Transports/NetworkTransport.cs index 0c727a48ae..0022e89619 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Transports/NetworkTransport.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Transports/NetworkTransport.cs @@ -41,6 +41,19 @@ public abstract class NetworkTransport : MonoBehaviour /// public abstract ulong ServerClientId { get; } + /// + /// Gets or sets the IP address the client uses to connect to the server. + /// For transports which don't use an IP address to connect this property is used to pass a transport specific connection identifier such as a room name. + /// + public abstract string NetworkAddress { get; set; } + + /// + /// Gets or sets the port this transport should use for networking. + /// In server/host mode this is the port on which the server is exposed. + /// In client mode this is the port + /// + public abstract ushort NetworkPort { get; set; } + /// /// Gets a value indicating whether this is supported in the current runtime context. /// This is used by multiplex adapters. diff --git a/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UnetTransport.cs b/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UnetTransport.cs index 443239ac43..8bfc97597c 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UnetTransport.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UnetTransport.cs @@ -6,6 +6,7 @@ using MLAPI.Logging; using MLAPI.Profiling; using MLAPI.Transports.Tasks; +using UnityEngine; using UnityEngine.Networking; namespace MLAPI.Transports.UNET @@ -26,8 +27,10 @@ public enum SendMode public int MaxConnections = 100; public int MaxSentMessageQueueSize = 128; - public string ConnectAddress = "127.0.0.1"; - public int ConnectPort = 7777; + [SerializeField] + string m_ConnectAddress = "127.0.0.1"; + [SerializeField] + ushort m_ConnectPort = 7777; public int ServerListenPort = 7777; public int ServerWebsocketListenPort = 8887; public bool SupportWebsocket = false; @@ -64,15 +67,25 @@ public enum SendMode private SocketTask connectTask; public override ulong ServerClientId => GetMLAPIClientId(0, 0, true); + /// + public override string NetworkAddress { get { return m_ConnectAddress; } set { m_ConnectAddress = value; } } + + /// + public override ushort NetworkPort { get { return m_ConnectPort; } set { m_ConnectPort = value; } } + protected void LateUpdate() { - if (UnityEngine.Networking.NetworkTransport.IsStarted && MessageSendMode == SendMode.Queued) { - if (NetworkManager.Singleton.IsServer) { - for (int i = 0; i < NetworkManager.Singleton.ConnectedClientsList.Count; i++) { + if (UnityEngine.Networking.NetworkTransport.IsStarted && MessageSendMode == SendMode.Queued) + { + if (NetworkManager.Singleton.IsServer) + { + for (int i = 0; i < NetworkManager.Singleton.ConnectedClientsList.Count; i++) + { SendQueued(NetworkManager.Singleton.ConnectedClientsList[i].ClientId); } } - else { + else + { SendQueued(NetworkManager.Singleton.LocalClientId); } } @@ -129,15 +142,16 @@ public override void Send(ulong clientId, ArraySegment data, NetworkChanne buffer = data.Array; } - if (MessageSendMode == SendMode.Queued) { + if (MessageSendMode == SendMode.Queued) + { RelayTransport.QueueMessageForSending(hostId, connectionId, channelId, buffer, data.Count, out byte error); } - else { + else + { RelayTransport.Send(hostId, connectionId, channelId, buffer, data.Count, out byte error); } } - public void SendQueued(ulong clientId) { if (profilerEnabled) @@ -154,17 +168,17 @@ public override NetworkEvent PollEvent(out ulong clientId, out NetworkChannel ne { NetworkEventType eventType = RelayTransport.Receive(out int hostId, out int connectionId, out int channelId, messageBuffer, messageBuffer.Length, out int receivedSize, out byte error); - clientId = GetMLAPIClientId((byte) hostId, (ushort) connectionId, false); + clientId = GetMLAPIClientId((byte)hostId, (ushort)connectionId, false); receiveTime = UnityEngine.Time.realtimeSinceStartup; - NetworkError networkError = (NetworkError) error; + NetworkError networkError = (NetworkError)error; if (networkError == NetworkError.MessageToLong) { byte[] tempBuffer; - if (temporaryBufferReference != null && temporaryBufferReference.IsAlive && ((byte[]) temporaryBufferReference.Target).Length >= receivedSize) + if (temporaryBufferReference != null && temporaryBufferReference.IsAlive && ((byte[])temporaryBufferReference.Target).Length >= receivedSize) { tempBuffer = (byte[])temporaryBufferReference.Target; } @@ -250,7 +264,7 @@ public override SocketTasks StartClient() SocketTask task = SocketTask.Working; serverHostId = RelayTransport.AddHost(new HostTopology(GetConfig(), 1), false); - serverConnectionId = RelayTransport.Connect(serverHostId, ConnectAddress, ConnectPort, 0, out byte error); + serverConnectionId = RelayTransport.Connect(serverHostId, m_ConnectAddress, m_ConnectPort, 0, out byte error); NetworkError connectError = (NetworkError)error; @@ -290,7 +304,6 @@ public override SocketTasks StartServer() { if (NetworkLog.CurrentLogLevel <= LogLevel.Error) NetworkLog.LogError("Cannot create websocket host when using MLAPI relay"); } - } int normalHostId = RelayTransport.AddHost(topology, ServerListenPort, true); @@ -302,7 +315,7 @@ public override void DisconnectRemoteClient(ulong clientId) { GetUnetConnectionDetails(clientId, out byte hostId, out ushort connectionId); - RelayTransport.Disconnect((int) hostId, (int) connectionId, out byte error); + RelayTransport.Disconnect((int)hostId, (int)connectionId, out byte error); } public override void DisconnectLocalClient() @@ -320,7 +333,7 @@ public override ulong GetCurrentRtt(ulong clientId) } else { - return (ulong)UnityEngine.Networking.NetworkTransport.GetCurrentRTT((int) hostId, (int) connectionId, out byte error); + return (ulong)UnityEngine.Networking.NetworkTransport.GetCurrentRTT((int)hostId, (int)connectionId, out byte error); } } @@ -363,8 +376,8 @@ public void GetUnetConnectionDetails(ulong clientId, out byte hostId, out ushort } else { - hostId = (byte) ((clientId - 1) >> 16); - connectionId = (ushort) ((clientId - 1)); + hostId = (byte)((clientId - 1) >> 16); + connectionId = (ushort)((clientId - 1)); } } @@ -390,6 +403,7 @@ public ConnectionConfig GetConfig() { throw new InvalidChannelException("Channel " + channelId + " already exists"); } + channelIdToName.Add(channelId, Channels[i].Id); channelNameToId.Add(Channels[i].Id, channelId); } From 77c7534825df28c91cab5c9e51b9b45280c5eab5 Mon Sep 17 00:00:00 2001 From: Matt Walsh Date: Wed, 3 Mar 2021 19:10:39 -0800 Subject: [PATCH 2/7] fix: UnetTransport -> UNetTransport --- com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs b/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs index 5271e83100..2bdebd5e3a 100644 --- a/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs +++ b/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs @@ -30,7 +30,7 @@ public IEnumerator RpcQueueUnitTest() #if UNITY_2020_2_OR_NEWER // Disabling this test on 2019.4 due to ILPP issues on Yamato CI/CD runs var networkManagerObject = new GameObject(nameof(NetworkManager)); m_NetworkManager = networkManagerObject.AddComponent(); - var unetTransport = networkManagerObject.AddComponent(); + var unetTransport = networkManagerObject.AddComponent(); m_NetworkManager.NetworkConfig = new Configuration.NetworkConfig { CreatePlayerPrefab = false, @@ -42,7 +42,7 @@ public IEnumerator RpcQueueUnitTest() unetTransport.ServerListenPort = 7777; unetTransport.MessageBufferSize = 65535; unetTransport.MaxConnections = 100; - unetTransport.MessageSendMode = UnetTransport.SendMode.Immediately; + unetTransport.MessageSendMode = UNetTransport.SendMode.Immediately; m_NetworkManager.NetworkConfig.NetworkTransport = unetTransport; var currentActiveScene = SceneManager.GetActiveScene(); @@ -107,4 +107,4 @@ public IEnumerator RpcQueueUnitTest() #endif } } -} \ No newline at end of file +} From 55dcc0b1d74218929692025607612a7f94a8b95c Mon Sep 17 00:00:00 2001 From: Luke Stampfli Date: Sun, 28 Feb 2021 23:51:30 +0000 Subject: [PATCH 3/7] feat: Add NetworkAddress and NetworkPort properties to Transport. --- .../Transports/MultiplexTransportAdapter.cs | 14 ++++++ .../Runtime/Transports/NetworkTransport.cs | 13 +++++ .../Runtime/Transports/UNET/UnetTransport.cs | 50 ++++++++++++------- 3 files changed, 59 insertions(+), 18 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs b/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs index 0a0fe143fd..3a037fb40e 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs @@ -48,6 +48,20 @@ public enum ConnectionIdSpreadMethod public NetworkTransport[] Transports = new NetworkTransport[0]; public override ulong ServerClientId => 0; + /// + public override string NetworkAddress + { + get => Transports.Any() ? Transports.First().NetworkAddress : default; + set => Array.ForEach(Transports, t => t.NetworkAddress = value); + } + + /// + public override ushort NetworkPort + { + get => Transports.Any() ? Transports.First().NetworkPort : default; + set => Array.ForEach(Transports, t => t.NetworkPort = value); + } + private byte _lastProcessedTransportIndex; public override bool IsSupported => true; diff --git a/com.unity.multiplayer.mlapi/Runtime/Transports/NetworkTransport.cs b/com.unity.multiplayer.mlapi/Runtime/Transports/NetworkTransport.cs index 0c727a48ae..0022e89619 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Transports/NetworkTransport.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Transports/NetworkTransport.cs @@ -41,6 +41,19 @@ public abstract class NetworkTransport : MonoBehaviour /// public abstract ulong ServerClientId { get; } + /// + /// Gets or sets the IP address the client uses to connect to the server. + /// For transports which don't use an IP address to connect this property is used to pass a transport specific connection identifier such as a room name. + /// + public abstract string NetworkAddress { get; set; } + + /// + /// Gets or sets the port this transport should use for networking. + /// In server/host mode this is the port on which the server is exposed. + /// In client mode this is the port + /// + public abstract ushort NetworkPort { get; set; } + /// /// Gets a value indicating whether this is supported in the current runtime context. /// This is used by multiplex adapters. diff --git a/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UnetTransport.cs b/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UnetTransport.cs index 443239ac43..8bfc97597c 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UnetTransport.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UnetTransport.cs @@ -6,6 +6,7 @@ using MLAPI.Logging; using MLAPI.Profiling; using MLAPI.Transports.Tasks; +using UnityEngine; using UnityEngine.Networking; namespace MLAPI.Transports.UNET @@ -26,8 +27,10 @@ public enum SendMode public int MaxConnections = 100; public int MaxSentMessageQueueSize = 128; - public string ConnectAddress = "127.0.0.1"; - public int ConnectPort = 7777; + [SerializeField] + string m_ConnectAddress = "127.0.0.1"; + [SerializeField] + ushort m_ConnectPort = 7777; public int ServerListenPort = 7777; public int ServerWebsocketListenPort = 8887; public bool SupportWebsocket = false; @@ -64,15 +67,25 @@ public enum SendMode private SocketTask connectTask; public override ulong ServerClientId => GetMLAPIClientId(0, 0, true); + /// + public override string NetworkAddress { get { return m_ConnectAddress; } set { m_ConnectAddress = value; } } + + /// + public override ushort NetworkPort { get { return m_ConnectPort; } set { m_ConnectPort = value; } } + protected void LateUpdate() { - if (UnityEngine.Networking.NetworkTransport.IsStarted && MessageSendMode == SendMode.Queued) { - if (NetworkManager.Singleton.IsServer) { - for (int i = 0; i < NetworkManager.Singleton.ConnectedClientsList.Count; i++) { + if (UnityEngine.Networking.NetworkTransport.IsStarted && MessageSendMode == SendMode.Queued) + { + if (NetworkManager.Singleton.IsServer) + { + for (int i = 0; i < NetworkManager.Singleton.ConnectedClientsList.Count; i++) + { SendQueued(NetworkManager.Singleton.ConnectedClientsList[i].ClientId); } } - else { + else + { SendQueued(NetworkManager.Singleton.LocalClientId); } } @@ -129,15 +142,16 @@ public override void Send(ulong clientId, ArraySegment data, NetworkChanne buffer = data.Array; } - if (MessageSendMode == SendMode.Queued) { + if (MessageSendMode == SendMode.Queued) + { RelayTransport.QueueMessageForSending(hostId, connectionId, channelId, buffer, data.Count, out byte error); } - else { + else + { RelayTransport.Send(hostId, connectionId, channelId, buffer, data.Count, out byte error); } } - public void SendQueued(ulong clientId) { if (profilerEnabled) @@ -154,17 +168,17 @@ public override NetworkEvent PollEvent(out ulong clientId, out NetworkChannel ne { NetworkEventType eventType = RelayTransport.Receive(out int hostId, out int connectionId, out int channelId, messageBuffer, messageBuffer.Length, out int receivedSize, out byte error); - clientId = GetMLAPIClientId((byte) hostId, (ushort) connectionId, false); + clientId = GetMLAPIClientId((byte)hostId, (ushort)connectionId, false); receiveTime = UnityEngine.Time.realtimeSinceStartup; - NetworkError networkError = (NetworkError) error; + NetworkError networkError = (NetworkError)error; if (networkError == NetworkError.MessageToLong) { byte[] tempBuffer; - if (temporaryBufferReference != null && temporaryBufferReference.IsAlive && ((byte[]) temporaryBufferReference.Target).Length >= receivedSize) + if (temporaryBufferReference != null && temporaryBufferReference.IsAlive && ((byte[])temporaryBufferReference.Target).Length >= receivedSize) { tempBuffer = (byte[])temporaryBufferReference.Target; } @@ -250,7 +264,7 @@ public override SocketTasks StartClient() SocketTask task = SocketTask.Working; serverHostId = RelayTransport.AddHost(new HostTopology(GetConfig(), 1), false); - serverConnectionId = RelayTransport.Connect(serverHostId, ConnectAddress, ConnectPort, 0, out byte error); + serverConnectionId = RelayTransport.Connect(serverHostId, m_ConnectAddress, m_ConnectPort, 0, out byte error); NetworkError connectError = (NetworkError)error; @@ -290,7 +304,6 @@ public override SocketTasks StartServer() { if (NetworkLog.CurrentLogLevel <= LogLevel.Error) NetworkLog.LogError("Cannot create websocket host when using MLAPI relay"); } - } int normalHostId = RelayTransport.AddHost(topology, ServerListenPort, true); @@ -302,7 +315,7 @@ public override void DisconnectRemoteClient(ulong clientId) { GetUnetConnectionDetails(clientId, out byte hostId, out ushort connectionId); - RelayTransport.Disconnect((int) hostId, (int) connectionId, out byte error); + RelayTransport.Disconnect((int)hostId, (int)connectionId, out byte error); } public override void DisconnectLocalClient() @@ -320,7 +333,7 @@ public override ulong GetCurrentRtt(ulong clientId) } else { - return (ulong)UnityEngine.Networking.NetworkTransport.GetCurrentRTT((int) hostId, (int) connectionId, out byte error); + return (ulong)UnityEngine.Networking.NetworkTransport.GetCurrentRTT((int)hostId, (int)connectionId, out byte error); } } @@ -363,8 +376,8 @@ public void GetUnetConnectionDetails(ulong clientId, out byte hostId, out ushort } else { - hostId = (byte) ((clientId - 1) >> 16); - connectionId = (ushort) ((clientId - 1)); + hostId = (byte)((clientId - 1) >> 16); + connectionId = (ushort)((clientId - 1)); } } @@ -390,6 +403,7 @@ public ConnectionConfig GetConfig() { throw new InvalidChannelException("Channel " + channelId + " already exists"); } + channelIdToName.Add(channelId, Channels[i].Id); channelNameToId.Add(Channels[i].Id, channelId); } From 2c84f052d472006b4746c8c4c749a8f50466bc82 Mon Sep 17 00:00:00 2001 From: Matt Walsh Date: Wed, 3 Mar 2021 19:10:39 -0800 Subject: [PATCH 4/7] fix: UnetTransport -> UNetTransport --- com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs b/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs index 5271e83100..2bdebd5e3a 100644 --- a/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs +++ b/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs @@ -30,7 +30,7 @@ public IEnumerator RpcQueueUnitTest() #if UNITY_2020_2_OR_NEWER // Disabling this test on 2019.4 due to ILPP issues on Yamato CI/CD runs var networkManagerObject = new GameObject(nameof(NetworkManager)); m_NetworkManager = networkManagerObject.AddComponent(); - var unetTransport = networkManagerObject.AddComponent(); + var unetTransport = networkManagerObject.AddComponent(); m_NetworkManager.NetworkConfig = new Configuration.NetworkConfig { CreatePlayerPrefab = false, @@ -42,7 +42,7 @@ public IEnumerator RpcQueueUnitTest() unetTransport.ServerListenPort = 7777; unetTransport.MessageBufferSize = 65535; unetTransport.MaxConnections = 100; - unetTransport.MessageSendMode = UnetTransport.SendMode.Immediately; + unetTransport.MessageSendMode = UNetTransport.SendMode.Immediately; m_NetworkManager.NetworkConfig.NetworkTransport = unetTransport; var currentActiveScene = SceneManager.GetActiveScene(); @@ -107,4 +107,4 @@ public IEnumerator RpcQueueUnitTest() #endif } } -} \ No newline at end of file +} From 4cf5af17336823cb38b1c016f739d3f0a8214d87 Mon Sep 17 00:00:00 2001 From: Luke Stampfli Date: Sun, 28 Feb 2021 23:51:30 +0000 Subject: [PATCH 5/7] feat: Add NetworkAddress and NetworkPort properties to Transport. --- .../Transports/MultiplexTransportAdapter.cs | 17 ++++++++++++++++- .../Runtime/Transports/NetworkTransport.cs | 13 +++++++++++++ .../Runtime/Transports/UNET/UNetTransport.cs | 18 ++++++++++++++---- 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs b/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs index 892930159c..ec25b94b88 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs @@ -53,6 +53,21 @@ public enum ConnectionIdSpreadMethod private byte m_LastProcessedTransportIndex; + /// + public override string NetworkAddress + { + get => Transports.Any() ? Transports.First().NetworkAddress : default; + set => Array.ForEach(Transports, t => t.NetworkAddress = value); + } + + /// + public override ushort NetworkPort + { + get => Transports.Any() ? Transports.First().NetworkPort : default; + set => Array.ForEach(Transports, t => t.NetworkPort = value); + } + + public override bool IsSupported => true; public override void DisconnectLocalClient() @@ -327,4 +342,4 @@ public byte GetFirstSupportedTransportIndex() #pragma warning restore CS1591 // Missing XML comment for publicly visible type or member } -} \ No newline at end of file +} diff --git a/com.unity.multiplayer.mlapi/Runtime/Transports/NetworkTransport.cs b/com.unity.multiplayer.mlapi/Runtime/Transports/NetworkTransport.cs index e3ef3b76c0..09a5554d6a 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Transports/NetworkTransport.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Transports/NetworkTransport.cs @@ -41,6 +41,19 @@ public abstract class NetworkTransport : MonoBehaviour /// public abstract ulong ServerClientId { get; } + /// + /// Gets or sets the IP address the client uses to connect to the server. + /// For transports which don't use an IP address to connect this property is used to pass a transport specific connection identifier such as a room name. + /// + public abstract string NetworkAddress { get; set; } + + /// + /// Gets or sets the port this transport should use for networking. + /// In server/host mode this is the port on which the server is exposed. + /// In client mode this is the port + /// + public abstract ushort NetworkPort { get; set; } + /// /// Gets a value indicating whether this is supported in the current runtime context. /// This is used by multiplex adapters. diff --git a/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UNetTransport.cs b/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UNetTransport.cs index 040b6d6440..ca20b91ddf 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UNetTransport.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UNetTransport.cs @@ -6,6 +6,7 @@ using MLAPI.Logging; using MLAPI.Profiling; using MLAPI.Transports.Tasks; +using UnityEngine; using UnityEngine.Networking; namespace MLAPI.Transports.UNET @@ -26,8 +27,10 @@ public enum SendMode public int MaxConnections = 100; public int MaxSentMessageQueueSize = 128; - public string ConnectAddress = "127.0.0.1"; - public int ConnectPort = 7777; + [SerializeField] + string m_ConnectAddress = "127.0.0.1"; + [SerializeField] + ushort m_ConnectPort = 7777; public int ServerListenPort = 7777; public int ServerWebsocketListenPort = 8887; public bool SupportWebsocket = false; @@ -64,6 +67,12 @@ public enum SendMode private SocketTask m_ConnectTask; public override ulong ServerClientId => GetMLAPIClientId(0, 0, true); + /// + public override string NetworkAddress { get { return m_ConnectAddress; } set { m_ConnectAddress = value; } } + + /// + public override ushort NetworkPort { get { return m_ConnectPort; } set { m_ConnectPort = value; } } + protected void LateUpdate() { if (UnityEngine.Networking.NetworkTransport.IsStarted && MessageSendMode == SendMode.Queued) @@ -143,7 +152,6 @@ public override void Send(ulong clientId, ArraySegment data, NetworkChanne } } - public void SendQueued(ulong clientId) { if (ProfilerEnabled) @@ -161,9 +169,11 @@ public override NetworkEvent PollEvent(out ulong clientId, out NetworkChannel ne var eventType = RelayTransport.Receive(out int hostId, out int connectionId, out int channelId, m_MessageBuffer, m_MessageBuffer.Length, out int receivedSize, out byte error); clientId = GetMLAPIClientId((byte)hostId, (ushort)connectionId, false); + receiveTime = UnityEngine.Time.realtimeSinceStartup; var networkError = (NetworkError)error; + if (networkError == NetworkError.MessageToLong) { byte[] tempBuffer; @@ -472,4 +482,4 @@ public IReadOnlyDictionary GetTransportProfilerData() } } #pragma warning restore CS1591 // Missing XML comment for publicly visible type or member -#pragma warning restore 618 \ No newline at end of file +#pragma warning restore 618 From eeea62e2f2fcf22e6083742f2dbb597839117c9d Mon Sep 17 00:00:00 2001 From: Matt Walsh Date: Wed, 3 Mar 2021 19:10:39 -0800 Subject: [PATCH 6/7] fix: UnetTransport -> UNetTransport --- com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs b/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs index db9eae713f..2bdebd5e3a 100644 --- a/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs +++ b/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs @@ -107,4 +107,4 @@ public IEnumerator RpcQueueUnitTest() #endif } } -} \ No newline at end of file +} From 7ca8d540d82786c7410389626dc1e193b2129c84 Mon Sep 17 00:00:00 2001 From: Matt Walsh Date: Wed, 3 Mar 2021 19:39:06 -0800 Subject: [PATCH 7/7] bug: fixes with unity std update --- .../Runtime/Transports/MultiplexTransportAdapter.cs | 1 + .../Runtime/Transports/UNET/UNetTransport.cs | 2 +- com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs b/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs index ec25b94b88..82e33de06f 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Transports/MultiplexTransportAdapter.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using MLAPI.Transports.Tasks; namespace MLAPI.Transports.Multiplex diff --git a/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UNetTransport.cs b/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UNetTransport.cs index ca20b91ddf..245022c122 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UNetTransport.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Transports/UNET/UNetTransport.cs @@ -264,7 +264,7 @@ public override SocketTasks StartClient() var socketTask = SocketTask.Working; m_ServerHostId = RelayTransport.AddHost(new HostTopology(GetConfig(), 1), false); - m_ServerConnectionId = RelayTransport.Connect(m_ServerHostId, ConnectAddress, ConnectPort, 0, out byte error); + m_ServerConnectionId = RelayTransport.Connect(m_ServerHostId, NetworkAddress, NetworkPort, 0, out byte error); var connectError = (NetworkError)error; diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs b/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs index 2bdebd5e3a..8c7b950ca2 100644 --- a/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs +++ b/com.unity.multiplayer.mlapi/Tests/Runtime/RpcQueueTests.cs @@ -37,8 +37,8 @@ public IEnumerator RpcQueueUnitTest() AllowRuntimeSceneChanges = true, EnableSceneManagement = false }; - unetTransport.ConnectAddress = "127.0.0.1"; - unetTransport.ConnectPort = 7777; + unetTransport.NetworkAddress = "127.0.0.1"; + unetTransport.NetworkPort = 7777; unetTransport.ServerListenPort = 7777; unetTransport.MessageBufferSize = 65535; unetTransport.MaxConnections = 100;