In Quake 3 UDP sockets are used to issue player commands. This establishes the master gamestate which is responsible for being the "true" state of things. Each client has their own collection of 32 gamestates (snapshots) as well as a dummy snapshot for deltas. Game state variables are established before the map loads (like gravity and sit in the g_* namespace). These are effectively constant factors of the master state in the game. When changed they need to be updated via a reliable message--that is all players must receive the new state. AFAIK, g_* doesn't get applied until a map restart.
Each player is still computing their own "master" state in a way, but the global master state that happens per ACK or out-of-sync takes control. When you see skipping and such you're seeing the difference of snapshots being applied and the state correcting itself (more or less) as dropped packets (amounting to unACK'd snapshots) cause havoc.
Snapshots are ACK'd and the process effectively amounts to: copy the master gamestate to the next snapshot slot. Compare the snapshots. If something doesn't match the master state, a packet is not ACK'd, etc, then the comparison fails and the delta between the last good snapshot and the current snapshot is used to create snapshot 3 for the client. It's such a simple and elegant process because the same algorithm can be used to do full updates, partial updates, or resending old/new information.
Check out Brian Hooks' (original developer) article on it: http://fabiensanglard.net/quake3/The%20Quake3%20Networking%20Mode.html
or even Fabien's article: http://fabiensanglard.net/quake3/network.php
Both are fantastic resources.