com.unity.netcode.gameobjects@1.7.1

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

Additional documentation and release notes are available at [Multiplayer Documentation](https://docs-multiplayer.unity3d.com).

## [1.7.1] - 2023-11-15

### Added

### Fixed

- Fixed a bug where having a class with Rpcs that inherits from a class without Rpcs that inherits from NetworkVariable would cause a compile error. (#2751)
- Fixed issue where `NetworkBehaviour.Synchronize` was not truncating the write buffer if nothing was serialized during `NetworkBehaviour.OnSynchronize` causing an additional 6 bytes to be written per `NetworkBehaviour` component instance. (#2749)

### Changed
This commit is contained in:
Unity Technologies
2023-11-15 00:00:00 +00:00
parent ffef45b50f
commit 514166e159
10 changed files with 119 additions and 8 deletions

View File

@@ -993,6 +993,8 @@ namespace Unity.Netcode
if (finalPosition == positionBeforeSynchronize || threwException)
{
writer.Seek(positionBeforeWrite);
// Truncate back to the size before
writer.Truncate();
return false;
}
else

View File

@@ -412,6 +412,19 @@ namespace Unity.Netcode
internal NetworkConnectionManager ConnectionManager = new NetworkConnectionManager();
internal NetworkMessageManager MessageManager = null;
internal struct Override<T>
{
private T m_Value;
public bool Overidden { get; private set; }
internal T Value
{
get { return Overidden ? m_Value : default(T); }
set { Overidden = true; m_Value = value; }
}
};
internal Override<ushort> PortOverride;
#if UNITY_EDITOR
internal static INetworkManagerHelper NetworkManagerHelper;
@@ -658,6 +671,8 @@ namespace Unity.Netcode
return;
}
ParseCommandLineOptions();
if (NetworkConfig.NetworkTransport == null)
{
if (NetworkLog.CurrentLogLevel <= LogLevel.Error)
@@ -1100,5 +1115,39 @@ namespace Unity.Netcode
Singleton = null;
}
}
// Command line options
private const string k_OverridePortArg = "-port";
private string GetArg(string[] commandLineArgs, string arg)
{
var argIndex = Array.IndexOf(commandLineArgs, arg);
if (argIndex >= 0 && argIndex < commandLineArgs.Length - 1)
{
return commandLineArgs[argIndex + 1];
}
return null;
}
private void ParseArg<T>(string arg, ref Override<T> value)
{
if (GetArg(Environment.GetCommandLineArgs(), arg) is string argValue)
{
value.Value = (T)Convert.ChangeType(argValue, typeof(T));
}
}
private void ParseCommandLineOptions()
{
#if UNITY_SERVER && UNITY_DEDICATED_SERVER_ARGUMENTS_PRESENT
if ( UnityEngine.DedicatedServer.Arguments.Port != null)
{
PortOverride.Value = (ushort)UnityEngine.DedicatedServer.Arguments.Port;
}
#else
ParseArg(k_OverridePortArg, ref PortOverride);
#endif
}
}
}

View File

@@ -199,7 +199,7 @@ namespace Unity.Netcode.Transports.UNET
public override bool StartClient()
{
m_ServerHostId = UnityEngine.Networking.NetworkTransport.AddHost(new HostTopology(GetConfig(), 1), 0, null);
m_ServerConnectionId = UnityEngine.Networking.NetworkTransport.Connect(m_ServerHostId, ConnectAddress, ConnectPort, 0, out byte error);
m_ServerConnectionId = UnityEngine.Networking.NetworkTransport.Connect(m_ServerHostId, ConnectAddress, GetConnectPort(), 0, out byte error);
return (NetworkError)error == NetworkError.Ok;
}
@@ -207,7 +207,7 @@ namespace Unity.Netcode.Transports.UNET
{
var topology = new HostTopology(GetConfig(), MaxConnections);
// Undocumented, but AddHost returns -1 in case of any type of failure. See UNET::NetLibraryManager::AddHost
return -1 != UnityEngine.Networking.NetworkTransport.AddHost(topology, ServerListenPort, null);
return -1 != UnityEngine.Networking.NetworkTransport.AddHost(topology, GetServerListenPort(), null);
}
public override void DisconnectRemoteClient(ulong clientId)
@@ -281,6 +281,26 @@ namespace Unity.Netcode.Transports.UNET
return connectionConfig;
}
private int GetConnectPort()
{
if (NetworkManager && NetworkManager.PortOverride.Overidden)
{
return NetworkManager.PortOverride.Value;
}
return ConnectPort;
}
private int GetServerListenPort()
{
if (NetworkManager && NetworkManager.PortOverride.Overidden)
{
return NetworkManager.PortOverride.Value;
}
return ServerListenPort;
}
}
}
#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member

View File

@@ -402,6 +402,7 @@ namespace Unity.Netcode.Transports.UTP
/// - packet jitter (variances in latency, see: https://en.wikipedia.org/wiki/Jitter)
/// - packet drop rate (packet loss)
/// </summary>
#if UTP_TRANSPORT_2_0_ABOVE
[Obsolete("DebugSimulator is no longer supported and has no effect. Use Network Simulator from the Multiplayer Tools package.", false)]
#endif
@@ -685,9 +686,11 @@ namespace Unity.Netcode.Transports.UTP
/// <param name="packetDelay">Packet delay in milliseconds.</param>
/// <param name="packetJitter">Packet jitter in milliseconds.</param>
/// <param name="dropRate">Packet drop percentage.</param>
#if UTP_TRANSPORT_2_0_ABOVE
[Obsolete("SetDebugSimulatorParameters is no longer supported and has no effect. Use Network Simulator from the Multiplayer Tools package.", false)]
#endif
public void SetDebugSimulatorParameters(int packetDelay, int packetJitter, int dropRate)
{
if (m_Driver.IsCreated)
@@ -1209,6 +1212,11 @@ namespace Unity.Netcode.Transports.UTP
NetworkManager = networkManager;
if (NetworkManager && NetworkManager.PortOverride.Overidden)
{
ConnectionData.Port = NetworkManager.PortOverride.Value;
}
m_RealTimeProvider = NetworkManager ? NetworkManager.RealTimeProvider : new RealTimeProvider();
m_NetworkSettings = new NetworkSettings(Allocator.Persistent);

View File

@@ -41,6 +41,11 @@
"name": "com.unity.transport",
"expression": "2.1.0",
"define": "UTP_TRANSPORT_2_1_ABOVE"
},
{
"name": "Unity",
"expression": "2023",
"define": "UNITY_DEDICATED_SERVER_ARGUMENTS_PRESENT"
}
]
}