Wow and Unreal (also Quake World) did this client side calculation for a good reason:
Playerexperience in Internet play.
(Test it yourself: when playing WoW, take out the
LAN cable. You can still walk freely with your
player for some seconds. Its clearly calculated on
the client)

While a LAN game can be handeled fully on the server,
it does not work in the Internet.
The worst is to have a lag in players own movement + rotation.
This would make the best game not enjoyable.

(RTS games for example can work fully server side, as the
Lag in unitmovements is not experienced in first person)


Unreal Tournament for example does a serversimulation of the movements,
given the keystrokes, positionas and velocities of the
clientmovement. If there are diviations,
the server will kick back the client to
it "simulated" correct position.
Its important that client and server
have agreed on a syncronized gametime.
For you (hobby game) you can skip the server check,
as cheating is not really an issue, and the serverside
clientsimulation is quite complex.

Other actions like shooting can be handeled in a clasic way
by the server. You will notice in UnrealTournament, that
the bullets are shot with an offset in high latency games.
So the shooting is actually done on the server, triggered
by the client input.
But movement+rotation should be done locally on the server.

A problem can be collisions between players.
Quake World solved that by using a prediction algorythm, based
on the position + velocity of the bots/actors.
KInd of having an additional collision hull interpolated
in front of the players movement direction for
bot to bot collisions.
Wow solved that, well : by having no player to player
collitions at all.