Multiplayer movement syncing

Hello! Trying to get smooth movement in multiplayer. Locally owned networkview objects move smoothly as expected, but there’s a fair amount of stutter on moving networkview objects that aren’t owned. Here’s the script I’m using now. Any suggestions for improvement would be brilliant!

using UnityEngine;
using System.Collections;

public class CharacterMovement : MonoBehaviour {
	float SPEED = 6.0f;
	Vector3 MOVEDIRECTION;

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		if(networkView.isMine){
		CharacterController controller = GetComponent<CharacterController>();

		MOVEDIRECTION = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
		MOVEDIRECTION *= SPEED;

		controller.Move(MOVEDIRECTION * Time.deltaTime);
		
		if(MOVEDIRECTION != Vector3.zero)
        transform.rotation = Quaternion.LookRotation(MOVEDIRECTION);
		}
	}
	
	void OnNetworkInstantiate(NetworkMessageInfo info){
        if(networkView.isMine){
            Camera.mainCamera.GetComponent<CameraFollow>().player = transform.gameObject;
        }
    }
	
	void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info){
		if(stream.isWriting){
			// [SEND POSITION]
			Vector3 pos = transform.position;
			stream.Serialize(ref pos);
		} else {
			// [READ POSITIONS]	
			Vector3 posRec = Vector3.zero;
			stream.Serialize(ref posRec);
			transform.position = Vector3.MoveTowards(transform.position, posRec, Time.deltaTime);
		}
	}
	
}

Edit: Been working on this on and off for several days to no avail. If anyone has any help, even a push in the right direction, that would be greatly appreciated. Thanks!

One thing that I would try to do is disable the player movement script if it isn’t yours. Also disable your character controller script. Only allow the player movement be updated by the clients themselves. From your code I assume your using a character controller. If you happen to have a rigidbody attached as a component set it to kinamatic if it isn’t yours. Also this video is pretty good at explaining a lot of other concepts:

EDIT: You might want to start watching at around 16 min. That's when he will probably show you an answer to your specific problem.

In The end Vector3.Lerp is going to be the thing that you will use to solve your problem.