Skip to content

fix: buffered linear interpolator jitter and exposing more properties #3355

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
bc2e9f2
wip
NoelStephensUnity Mar 19, 2025
fe93343
update
NoelStephensUnity Mar 21, 2025
65dac85
fix
NoelStephensUnity Mar 21, 2025
f0fb0fd
update
NoelStephensUnity Mar 21, 2025
81e551c
style
NoelStephensUnity Mar 21, 2025
9fbc654
Merge branch 'develop-2.0.0' into fix/bufferedlinearinterpolator-jitter
NoelStephensUnity Mar 21, 2025
565b469
update
NoelStephensUnity Mar 21, 2025
92d4ea9
style
NoelStephensUnity Mar 21, 2025
3f97156
Merge branch 'develop-2.0.0' into fix/bufferedlinearinterpolator-jitter
NoelStephensUnity Mar 21, 2025
2bfcf52
fix
NoelStephensUnity Mar 21, 2025
0d1f8ee
update
NoelStephensUnity Mar 21, 2025
2d53a3a
fix
NoelStephensUnity Mar 21, 2025
55a0e87
test
NoelStephensUnity Mar 21, 2025
29f5e46
fix
NoelStephensUnity Mar 21, 2025
cfcd70b
test
NoelStephensUnity Mar 22, 2025
d87bd75
fix
NoelStephensUnity Mar 22, 2025
4170dfe
test
NoelStephensUnity Mar 22, 2025
d2b552e
update
NoelStephensUnity Mar 22, 2025
1efdc3b
Update
NoelStephensUnity Mar 22, 2025
bdbb218
test
NoelStephensUnity Mar 22, 2025
b398f93
update
NoelStephensUnity Mar 22, 2025
ed45dc9
update
NoelStephensUnity Mar 23, 2025
4c36581
test
NoelStephensUnity Mar 23, 2025
233188c
test
NoelStephensUnity Mar 23, 2025
e7eaecd
text
NoelStephensUnity Mar 23, 2025
4e705fe
update
NoelStephensUnity Mar 24, 2025
8005e8c
Merge branch 'develop-2.0.0' into fix/bufferedlinearinterpolator-jitter
NoelStephensUnity Mar 25, 2025
ff552c5
update
NoelStephensUnity Mar 26, 2025
2e5e62f
style
NoelStephensUnity Mar 26, 2025
1175088
style
NoelStephensUnity Mar 26, 2025
dbe455f
Merge branch 'develop-2.0.0' into fix/bufferedlinearinterpolator-jitter
NoelStephensUnity Mar 26, 2025
ef44c5c
Merge branch 'develop-2.0.0' into fix/bufferedlinearinterpolator-jitter
NoelStephensUnity Mar 26, 2025
139ce32
style
NoelStephensUnity Mar 26, 2025
049b1c3
update
NoelStephensUnity Mar 26, 2025
bab3abc
update
NoelStephensUnity Mar 28, 2025
1f54905
style
NoelStephensUnity Mar 28, 2025
0959618
style
NoelStephensUnity Mar 28, 2025
bcadba7
style
NoelStephensUnity Mar 28, 2025
f6ad63f
fix
NoelStephensUnity Mar 28, 2025
9e9172f
update
NoelStephensUnity Mar 28, 2025
283e2e8
fix
NoelStephensUnity Mar 28, 2025
82306c0
fix
NoelStephensUnity Mar 28, 2025
643329a
update
NoelStephensUnity Mar 28, 2025
35b7fbe
update
NoelStephensUnity Mar 28, 2025
90d900f
test
NoelStephensUnity Mar 28, 2025
bb7bfa0
style
NoelStephensUnity Mar 28, 2025
3b2bb8b
Merge branch 'develop-2.0.0' into fix/bufferedlinearinterpolator-jitter
NoelStephensUnity Mar 28, 2025
f327a1e
update
NoelStephensUnity Mar 30, 2025
2e9b7c1
Merge branch 'develop-2.0.0' into fix/bufferedlinearinterpolator-jitter
NoelStephensUnity Mar 30, 2025
9b8bde1
Merge branch 'develop-2.0.0' into fix/bufferedlinearinterpolator-jitter
EmandM Mar 31, 2025
5e7af37
update
NoelStephensUnity Apr 1, 2025
7dcc5e8
Merge branch 'develop-2.0.0' into fix/bufferedlinearinterpolator-jitter
NoelStephensUnity Apr 1, 2025
89739c7
style
NoelStephensUnity Apr 1, 2025
2444548
Merge branch 'fix/bufferedlinearinterpolator-jitter' of https://githu…
NoelStephensUnity Apr 2, 2025
1202fe7
test
NoelStephensUnity Apr 2, 2025
5b0f392
update
NoelStephensUnity Apr 2, 2025
ac55f48
style
NoelStephensUnity Apr 2, 2025
c0d794f
update
NoelStephensUnity Apr 2, 2025
b33b546
refactor
NoelStephensUnity Apr 3, 2025
8b67753
update
NoelStephensUnity Apr 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion com.unity.netcode.gameobjects/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ Additional documentation and release notes are available at [Multiplayer Documen
### Added

- Added `NetworkManager.OnPreShutdown` which is called before the NetworkManager cleans up and shuts down. (#3366)
- Added `Lerp` interpolation type that still uses a lerp approach but uses the new buffer consumption logic. (#3355)
- Added property to enable or disable lerp smoothing for position, rotation, and scale interpolators. (#3355)
- Added `NetworkTransform.InterpolationBufferTickOffset` static property to provide users with a way to increase or decrease the time marker where interpolators will pull state update from the queue. (#3355)
- Added interpolator types as an inspector view selection for position, rotation, and scale. (#3337)
- Added a new smooth dampening interpolator type that provides a nice balance between precision and smoothing results. (#3337)
- Added `NetworkTimeSystem.TickLatency` property that provides the average latency of a client. (#3337)
Expand All @@ -19,6 +22,7 @@ Additional documentation and release notes are available at [Multiplayer Documen

### Fixed

- Fixed issue where the time delta that interpolators used would not be properly updated during multiple fixed update invocations within the same player loop frame. (#3355)
- Fixed issue when using a distributed authority network topology and many clients attempt to connect simultaneously the session owner could max-out the maximum in-flight reliable messages allowed, start dropping packets, and some of the connecting clients would fail to fully synchronize. (#3350)
- Fixed issue when using a distributed authority network topology and scene management was disabled clients would not be able to spawn any new network prefab instances until synchronization was complete. (#3350)
- Fixed issue where an owner that changes ownership, when using a distributed authority network topology, could yield identical previous and current owner identifiers. This could also cause `NetworkTransform` to fail to change ownership which would leave the previous owner still subscribed to network tick events. (#3347)
Expand All @@ -39,8 +43,9 @@ Additional documentation and release notes are available at [Multiplayer Documen

### Changed

- Changed the original `Lerp` interpolation type to `LegacyLerp`. (#3355)
- Changed `BufferedLinearInterpolator<T>.Update(float deltaTime, NetworkTime serverTime)` as being deprecated since this method is only used for internal testing purposes. (#3337)
- Ensured that a useful error is thrown when attempting to build a dedicated server with Unity Transport that uses websockets. (#3336)
- Changed error thrown when attempting to build a dedicated server with Unity Transport that uses websockets to provide more useful information to the user. (#3336)
- Changed root in-scene placed `NetworkObject` instances now will always have either the `Distributable` permission set unless the `SessionOwner` permission is set. (#3305)
- Changed the `DestroyObject` message to reduce the serialized message size and remove the unnecessary message field. (#3304)
- Changed the `NetworkTimeSystem.Sync` method to use half RTT to calculate the desired local time offset as opposed to the full RTT. (#3212)
Expand Down
38 changes: 26 additions & 12 deletions com.unity.netcode.gameobjects/Editor/NetworkTransformEditor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ public class NetworkTransformEditor : NetcodeEditorBase<NetworkTransform>
private SerializedProperty m_PositionInterpolationTypeProperty;
private SerializedProperty m_RotationInterpolationTypeProperty;
private SerializedProperty m_ScaleInterpolationTypeProperty;
private SerializedProperty m_PositionLerpSmoothing;
private SerializedProperty m_RotationLerpSmoothing;
private SerializedProperty m_ScaleLerpSmoothing;

private SerializedProperty m_PositionMaximumInterpolationTimeProperty;
private SerializedProperty m_RotationMaximumInterpolationTimeProperty;
Expand Down Expand Up @@ -77,6 +80,11 @@ public override void OnEnable()
m_ScaleInterpolationTypeProperty = serializedObject.FindProperty(nameof(NetworkTransform.ScaleInterpolationType));
m_ScaleMaximumInterpolationTimeProperty = serializedObject.FindProperty(nameof(NetworkTransform.ScaleMaxInterpolationTime));

m_PositionLerpSmoothing = serializedObject.FindProperty(nameof(NetworkTransform.PositionLerpSmoothing));
m_RotationLerpSmoothing = serializedObject.FindProperty(nameof(NetworkTransform.RotationLerpSmoothing));
m_ScaleLerpSmoothing = serializedObject.FindProperty(nameof(NetworkTransform.ScaleLerpSmoothing));



m_UseQuaternionSynchronization = serializedObject.FindProperty(nameof(NetworkTransform.UseQuaternionSynchronization));
m_UseQuaternionCompression = serializedObject.FindProperty(nameof(NetworkTransform.UseQuaternionCompression));
Expand Down Expand Up @@ -198,36 +206,42 @@ private void DisplayNetworkTransformProperties()
if (networkTransform.SynchronizePosition)
{
DrawPropertyField(m_PositionInterpolationTypeProperty);
// Only display when using Lerp.
if (networkTransform.PositionInterpolationType == NetworkTransform.InterpolationTypes.Lerp)

BeginIndent();
if (networkTransform.PositionInterpolationType != NetworkTransform.InterpolationTypes.SmoothDampening)
{
BeginIndent();
DrawPropertyField(m_SlerpPosition);
}
DrawPropertyField(m_PositionLerpSmoothing);
if (networkTransform.PositionLerpSmoothing)
{
DrawPropertyField(m_PositionMaximumInterpolationTimeProperty);
EndIndent();
}
EndIndent();
}
if (networkTransform.SynchronizeRotation)
{
DrawPropertyField(m_RotationInterpolationTypeProperty);
// Only display when using Lerp.
if (networkTransform.RotationInterpolationType == NetworkTransform.InterpolationTypes.Lerp)

BeginIndent();
DrawPropertyField(m_RotationLerpSmoothing);
if (networkTransform.RotationLerpSmoothing)
{
BeginIndent();
DrawPropertyField(m_RotationMaximumInterpolationTimeProperty);
EndIndent();
}
EndIndent();
}
if (networkTransform.SynchronizeScale)
{
DrawPropertyField(m_ScaleInterpolationTypeProperty);
// Only display when using Lerp.
if (networkTransform.ScaleInterpolationType == NetworkTransform.InterpolationTypes.Lerp)

BeginIndent();
DrawPropertyField(m_ScaleLerpSmoothing);
if (networkTransform.ScaleLerpSmoothing)
{
BeginIndent();
DrawPropertyField(m_ScaleMaximumInterpolationTimeProperty);
EndIndent();
}
EndIndent();
}
EndIndent();
EditorGUILayout.Space();
Expand Down
Loading