Questions regarding Rigidbody collision synchronization

Options
Hello there,
I am very new to the Photon engine and to multiplayer programming in general. After watching and reading a lot of beginner tutorials I believe to have a good understanding of the very basic concepts now. However there is one thing I can’t get my head around. After searching for answers on google and in this forum I came to the decision to ask my questions explicitly.

I am working on a little project where the player has a third person character that he can move with the mouse. Like Diablo or Sacred. I am using the Third Person Character of Unity’s standard assets. I managed to set up Photon correctly so the players can join to the same room and see each other. Even the smoothing of the movement synchronization worked pretty good. I used the TransformationView and RigidbodyView scripts that came with Photon.

But there are still some problems I can’t find a solution for. The main problems occur due to the rigidbody component on the player characters. If Client1 runs into Client2 he is able to push him away from his position. The movement only occurs on Client1’s computer. Client2 himself does not receive the collision force and does not recognize he is being pushed away. That leads to the problem that the character of Client2 can have two completely different positions on both clients. Of course when Client2 moves his character himself the position will be corrected immediately due to the observation of the transform, which leads to teleporting of Client2’s character on Client1’s side. For better understanding I made a video of this: https://youtu.be/Mx8x6ApIAa8

I am not really sure how to handle this situation. I guess I either have to make sure the force of the collision is synched correctly or to prevent the characters from colliding with each other at all. As you may saw the rotation is not synched correctly as well, although it is observed by the PhotonView. Also the the value of the Y position of the transform of both characters constantly jumps between 0 and a very small number even though no one is moving at all: https://youtu.be/bqnRmM-LkZM I simply can't explain why but I have to admit that I haven't investigate those specific problems any further yet.

I also would like to ask if characters with rigidbody components are a general praxis in multiplayer games. Nearly every singleplayer character tutorial I found uses rigidbody components but most of the PUN multiplayer tutorials don’t. So I am thinking of rewriting the character controller to work without rigidbodies instead of synchronizing them. The downside of this would probably be to lose the current character movement feeling which I like. I took a look at the Unity Tutorial project Tanks! which uses UNet. The tanks use rigidbodies as well and the collision of two clients happened correctly but I can’t see the difference in the implementation.

Do you have any advise how to solve or at least tackle those problems? Is it better to not use rigidbody character controllers? Since I am still learning and try to get some overview of the basics of multiplayer programming I feel like I am currently missing the forest for the trees. Maybe I overlook something really basic.

I appreciate your advice.

Thanks

Jannik Guenther