Network Transform vs. Network Transform Obsolete

ChrisL8
ChrisL8
edited June 2022 in Fusion

We are learning about Fusion in Unity now, attempting to migrate from PUN.

The interface and documentation say that we should not use "Network Transform Obsolete", and instead use "Network Transform."

However, they behave entirely differently. I'm not sure how to explain it, but I made a GIF to demonstrate.

https://www.dropbox.com/s/mkgc74q8x3wn4w2/NetworkTransformObsolete.gif?raw=1

In the video the view on the left is the local scene view. Thew view on the right is a screen cast of a remote player watching the player being controlled on the left. In other words, this is a multi-player view. Right side is the remote view.

There are two stacks of objects, childed to each other from bottom to top. Each Sphere has a Network Transform or Network Transform Obsolete on it, and then a connecting cube.

The stack on the right is using Network Transform Obsolete, and you can see that moving the bottom sphere causes the entire stack to move perfectly as expected.

The stack on the left is using Network Transform, and you can see that all of its children objects spaz out all over the place on other player's views when the parent is moved.

We have tried every combination of settings, but the Network Transform always results in terrible remote views like this while the Network Transform Obsolete works perfectly.

Can anyone give us any insight on why Network Transform does this and how it could be corrected to work like the very reliable Network Transform Obsolete?

Or should we just use "Obsolete" forever and ignore all of the warnings that it is going away?

Answers

  • By all means, the Network Transform should be usable.

    I assume the objects are in a hierarchy but each sphere has a NT.

    I guess you made sure that both stacks use the same objects, except for the NT or NTObsolete? No physics settings or anything else is changed?

    In case you didn't update Fusion in a while, get the latest nightly. There might be fixes you didn't get yet.

  • Yes, the objects are in a hierarchy and each sphere has a NT.

    The only difference between the stacks is that the stable one uses NT Obsolete and the unusable ones use NT.

    We were using the latest Stable version 1.1.1, but we just upgraded to 1.1.2 to see if it helps. It does not.

    Same behavior with 1.1.2.

    Here is another gif demonstrating it again in version 1.1.2. Same behavior.

    The two OUTSIDE instances are using NT Obsolete.

    The two INSIDE instances are using NT. One is set to "local" and one to "world". One performs a little better sometimes, but if the controlling parent moves, it also goes completely nuts.

    https://www.dropbox.com/s/r8i5kh4rm31412g/NetworkTransformObsolete2.gif?raw=1

    As you can see, the NT is entirely unusable, but the NT Obsolete performs beautifully.

    Rotating the arms, as seen in the previous GIF also performs exactly the same in 1.1.2 as it did in 1.1.1

  • Hi @ChrisL8,

    The Discord announcement about the transform behaviours' rework explains a bit more about what changed and why, between NT and old NT-Obsolete. I recommend giving it a look, in case you haven't yet, just so you understand more about the context: https://discord.com/channels/87465474098483200/852233105438670858/946440495771553852

    One of the main differences is that the new NT always synchronizes the state in world space. As explained in the link, this is important to ensure Area of Interest (AIO) works correctly. The new behaviour, however, has an optional Interpolation Space field that you can set to World or Local. Setting it to local does not mean that local transform values are synchronized, but that the world state is transformed to and interpolated in the local space of a parent, for View interpolation only.

    You can still modify the local transform of the objects in the state authority, but keep in mind that it is the resultant world state of the object that will be synchronized.

    There are several developers using the new NT for months now and I'm sure that it is in usable conditions and that it is possible to achieve the result you want. This is likely some misconfiguration on your setup, so lets see if we can figure it out and fix it.

    Could you please share:

    • The exact Fusion SDK version being used
    • A snapshot of the objects hierarchy showing which game objects have the NT behaviour and which ones are the interpolation targets

    Thanks in advance!

  • ChrisL8
    ChrisL8
    edited June 2022

    First off, I greatly appreciate the help!

    The discord post is very helpful. Up until a few days ago when I attempted to join the discord server for Photon I was getting an error about it being deactivated due to bot behavior, so this is new to me. It would be preferable if this information was in the documentation on the photonengine website somewhere.

    We are using the latest night SDK version 1.1.2

    For the NT versions, we've tried both Local and World Interpolation Spaces, with the same result.

    We have also tried every option for he "Interpolation Data Source", again, with the same results.

    For the NT Obsolete stacks, we do not have any Interpolation Targets set, as it was never required to obtain the results we want.

    For the NT version, is the Interpolation Target now more important than it was with the Obsolete version?

    If so, can you help me understand the "Interpolation Target" better? Should it be the parent of the object with the NT on it, or the child, or some other object above it or below it or some world space object? I am struggling to comprehend what the purpose of the "Interpolation Target" is, especially as we never used it with NT Obsolete.

    Thank you again.

    P.S. I am going to build a test on top of the Fusion 102 project to demonstrate and then I can upload the entire project as a ZIP file and you can look at it yourself if you are willing. I should have it up sometime tomorrow. This will also help me narrow it down.

  • Here is my demo project. I've zipped up the entire Unity folder for the project, so it should be reproducible.

    This GIF demonstrates that the two outside armatures using NT Obsolete move smoothly with no issues in the client view when moved on the host, but the center two using NT have clear issues.

    I appreciate any input you can give on what we are doing wrong here with our use of NT.

    Thank you.