Network Usage with PhotonViewTransform

Options
Pukins
Pukins
I tested 1 gameobject to network syncing with photon view transform (using photon view)
and then I found it costs 16kbps in sending and receiving.
(I selected Reliable Delta Compressed option in PhotonView)

but my game is going to be 100 vs 100 in network syncing
and I am worried about using too much network usage.

and today I found "Simple Network Sync"
https://assetstore.unity.com/packages/tools/network/simple-network-sync-134256

they said they are "EXTREMELY low network usage compared to the UNET/PUN transform sync components, with a range of compression and culling options."

so here is my question

1. Is it true that PUN2 with "Simple Network Sync" is "EXTREMELY low network usage" than PUN2 only?

2. Is there any other way to decrease network usage?

Answers

  • jRocket
    Options
    I am interested in this as well. I had to reduce the number synced transforms in my game(using Transform View Classic) because PUN simply couldn't handle them. There is also another asset on the asset store called "Smooth Sync" which claims is PUN compatible and uses less bandwidth. Has anyone tried these?
  • Thrump
    Options
    PhotonTransformViewClassic and PhotonTransformView send uncompressed Vector3s and Quaternions. The count they send depends on settings of these components that you set in the inspector. It's fairly easy to optimize these to be smaller, for instance, if you only care about rotation about y-axis, you just need to send 1 float (instead of the quaternion's 4 floats). You can probably get away with sending only 1 byte for this angle as well if you don't care about great precision.

    Haven't used SimpleNetworkSync, but they say:
    `Range-based float compression, bitpacking, and key/delta frames`
    which sounds quite a bit smaller than PUN2's approach.

    Smooth-sync has the option to use half-floats, which will reduce band-width by half (for sending pos/rot/scale at least). This could be done fairly easily yourself if you're comfortable with bit shifting.

    I found that sending ALL position/rotation data in 1 view is much faster than sending in 50 separate views. I haven't looked into why yet though, must be some house-keeping with views. (careful though, if you go over 253 items a byte overflows in the stream and you get garbage).

    If you want to see what is being sent, do something like this on the stream that the PhotonTransformView is sending (PUN2 nicely supplies the code for these components):
       
                        var a = stream.ToArray();
                        Print(a);
    
    
     private static void Print(IEnumerable<object> stream)
        {
            string s = "";
            foreach (var o in stream)
            {
                if (o == null)
                    s += '0';
                else
                    s += o.GetType().Name[0];
            }
    
            Debug.Log(s);
        }
  • Pukins
    Options
    To jRocket and Thrump
    thank you for your comments
    but I am still searching and finding the way i want to know
    and your comments are very helpful :)