You don't need to send the X/Y position every tick, that's super-inefficient, especially when using the Platformer object. Send when you start/stop pressing keys instead. The example tutorial is the completely wrong way to do it. Let each local machine control all of the player Platformer objects, but set up player input to only directly control the player object assigned to the local machine. When the local player object receives input, send it as Photon events so other players receives each player input event and trigger them on the local machines. Think of it as client-side prediction: the player objects just receive start/stop information and occasionally send and receive position events when specific things happen (start moving, stop moving, jumping, falling, etc.). It's a lot less data to send as well so should be less affected by connection speed.
I'd planned on cleaning this up a bit before distributing it, and I probably will at some point, but if none of what I said above makes sense then check this out. It shows what I'm trying to explain above. https://dl.dropboxusercontent.com/u/14245368/C2/Examples/Photon_Multiplayer.capx
Thanks for the help! I had tried sending it less frequently and lerping to compensate, but still had the floating issue and this is a lot better.
Out of curiosity, is there any specific reason you set the max players at 4? I'm guessing to not overfill the array, but you could expand that. Or does C2 send the full array if values are not used, and bandwidth is wasted?
Another topic, the next logical step for multiplayer games is to have a server database / user accounts. As far as I can tell this isn't do-able with photon. Theoretically you could do this with sql databases, but I'm not sure how secure that would be? What do you all think is the best option for this?