Ok, I understand, you're against authoritative logic for movements. Then how to best treat shooting physically based projectiles (not very fast, without raycasting I think), like a thrown apple. Should I instantiate them on the host and do all checks on it, while on the clients just render visuals, but the true result will be established by host?
And another question about moving objects like lifts or platforms with which the player can interact: I guess they also have to be controlled by host, through sending updates of their position\rotation to the clients. The only problem, if clients tell each other where they are, and there is a delay while updating position\rotation of platform between the host and clients, when one player will be standing on the platform, others will see him sliding a bit on this platform (more lag, more this effect appears as I understand). So the question: what is the right way of implementing this? Maybe making the player's gameobject as a child of the moving platform on all clients?