1) OnPhotonSerializeView() this is called on any object with a PhotonView script, correct? Almost. It's called on all scripts that are "observed" by a PhotonView. So, if it's not in some view's "observed" list, it's not called. 2) It is called each frame over the network? So not unity time, but PhotonNetwork.time? It's called every time an update for a PhotonView comes in or, when the client controls the PhotonView, it's called as often as defined by PhotonNetwork.sendRateOnSerialize. The reference comes with the source in the package. Also as PDF and there's the Api reference online. 3) My tests to non local players, are not retuning any of my data for console read. So OnPhotonSerializeView() if photonView.isMine, I get the data I expect. If !photonView.isMine, I do not get any data..... So I am puzzled as to why this might be. This is hard to tell. If you managed to get calls of your OnPhotonSerializeView, you should be able to put data into the stream. On another client, you should get calls on the matching networked object, that passes the data from PUN back to your logic. Make sure you use more than one client, that the scripts are observed and that your GameObject is "network instantiated" via PhotonNetwork.Instantiate(). In doubt, this tutorial hopefully helps.