From ioquake3 wiki
CL_Frame() performs all of the client-side processing required for a single frame of gameplay. The basic flow of
CL_Frame() is as follows:
- If not yet connected to a server, call
VM_Call(UI_SET_ACTIVE_MENU)to navigate menus.
CL_CheckTimeout()to see if we've lost our connection to the server.
CL_SendCmd()to send user's intentions to the server.
CL_CheckForResend(), which will connect to the server if we haven't connected to it yet (or if we lost our connection).
CL_SetCGameTime()to recalculate client's guesstimate of the server's current time.
S_Update()to update the video and audio.