Never-seen error when transferring ownership of scene objects

Options

Hi, I was following the documentation on how to transfer object ownership so that all players can interact properly with them and send their changes on these objects transforms, etc.

When my script calls the TransferOwnership method provided by photonView I get this error that after some research I cannot find any post anywhere related to it:

Extra Info:

I'm using Simple, although the called method is from the normal Pun package. Like some other networking errors if I afterwards unpause the editor for the few frames of the Updates clients have lost, the game continues as expected, even the ownership is correctly transferred

fid: 15Update from ActorId: 1 for object (Gun) Shootgun:3 , but that conn does not have controller authority. Current cowner:controller is 2:2

UnityEngine.Debug:LogError (object)

Photon.Pun.Simple.NetMaster:ReceiveMessage (object,int,byte[]) (at Assets/Photon/Simple/Core/NetMaster/NetMaster.cs:491)

Photon.Pun.Simple.Internal.NetMsgCallbacks:OnEvent (ExitGames.Client.Photon.EventData) (at Assets/Photon/Simple/Utilities/Networking/NetAdapters/NetMsgCallbacks.cs:71)

Photon.Realtime.LoadBalancingClient:OnEvent (ExitGames.Client.Photon.EventData) (at Assets/Photon/PhotonRealtime/Code/LoadBalancingClient.cs:3384)

ExitGames.Client.Photon.PeerBase:DeserializeMessageAndCallback (ExitGames.Client.Photon.StreamBuffer) (at D:/Dev/Work/photon-dotnet-sdk/PhotonDotNet/PeerBase.cs:898)

ExitGames.Client.Photon.EnetPeer:DispatchIncomingCommands () (at D:/Dev/Work/photon-dotnet-sdk/PhotonDotNet/EnetPeer.cs:565)

ExitGames.Client.Photon.PhotonPeer:DispatchIncomingCommands () (at D:/Dev/Work/photon-dotnet-sdk/PhotonDotNet/PhotonPeer.cs:1865)

Photon.Pun.Simple.NetMaster:FixedUpdate () (at Assets/Photon/Simple/Core/NetMaster/NetMaster.cs:163)

Comments

  • emotitron
    Options

    There may have been some changes to Pun that affected this since Simple's last update, but Simple typically wants to handle ownership changes - as it is tick based and expects all state changes to respect that. Changing ownership outside of its timings can lead to ownership of an object not being what is expected.

    I would try using the SyncOwner component and try doing your ownership changes through its TransferOwner method.

  • ChichoRD
    Options

    Thanks for your response, it solved my problem but ran into a bunch of other issues (I recieve constant ownership transfer console logs and calls as seen in this post in Discord: https://discord.com/channels/87465474098483200/654011230981324830/831696045124616192) along with performance ones like having 900MB of memory being allocated.

    I'm sadly considering removing Simple from my project and stick to Pun for which there is way more documentation and advancements.

  • emotitron
    Options

    Unfortunately, Simple's development was halted a while back (as Fusion will replace it as well as Pun and Bolt), but Pun is still getting LTS support. Pun LTS updates have been running the risk of creating new conflicts in Simple which have gone unnoticed, and this may be one of them.

    If you need the tick-based benefits of Simple I would recommend getting in on the Fusion Beta. If you do not, Pun2 vanilla will be supported and in LTS for quite some time.

    In the meantime if you are reliant on the features of Simple I would consider sticking with an older version of PUN2.