The question of Firing in FPS games?

At the most basic level:

  1. ClientFire from the centre of the viewport, doing all FX for the client except for third person effects.
  2. ClientFire makes a call to the server.
  3. Using the centre of the client viewport as origin, the server calculates where the bullet will land and does all the damage processing.
  4. Server tells other clients to do FX from the third person model to the calculated trajectory end location.

Every game does stuff slightly differently but follows the same principle.