An alternate way would be simply call the functions simultaneously on each device. This ensures the animation you want is the same becuase both devices call the same function. It works really nice for me.
Note: You will need the MoveTo Plugin by Rex for this to work
I created a small plat-former example where every action is synced by performing function calls. I don't sync any objects or do association. I've found this to be a faster solution to compensate for lag for synced behaviors that already take dt (time dependent events) into account. Its a little complicated to follow and ill see what i can do about putting in some comments but check it out and see if it will work for you.
Just open the example in 2 browsers. On the screen at the top enter the room name (it should bee the same so they join the same room). Then give each player a name and click connect. (I got little lazy and it only supports 2 players so if you join more than 2 in the room it will break)
What I do is make everything a function call and simulate actions. When player 1 presses left.. he calls a function to simulate moving left on his screen and at the same time sends a multiplayer message to other players that tells them to call the exact same function for player 1 on their screen.. Everyone sees the same thing and instead of syncing for every X,Y change i send a single message and tell it to persist until i tell it to stop. The move to is just the last piece that fires off to ensure the players are where they are supposed to be on each other screen. (This example is missing some other code i put in to correct for speed differences in the devices but it still works really well and should be a good starting point)
The trick and complicated part is that using this method i send only 3 packets to move a player all the way across the screen instead of sending lots of x,y updates. Movement is smooth and timely. How this is possible that the sender can tell the receiver to persist the function (continuously call it) so I only send the move left command once and tell it to persist on the receiving device. the receiving device continuously calls the function until i tell it to stop... (Its the same way wireless signals in remote controlled cars work as I have some history in that field this is where i got the concept).
@Ashley I'm curious to get your thoughts on this method as I'm sure its very unconventional but would it be useful to add action to the multiplayer plugin to make function calling cross device easier? Constructive criticism is always welcome.