A computer-implemented method of player input motion estimation comprising the steps of: transmitting a lookup table containing anticipated player inputs and their associated motion vectors to a client, wherein motion vectors are vector fields with a vector for each macroblock in an image; instructing the client to query the lookup table for matching motion vectors upon the receipt of a player input at the client; instructing the client to associate a unique tag with the player input and the matching motion vectors from the lookup table and to add the tagged motion vectors to a queue containing any other tagged motion vectors currently being used for motion compensation, wherein unique tags associated with player inputs are chronological in nature; receiving a tagged previous player input from the client; generating an output frame from the received tagged previous player input; encoding the output frame; attaching a unique tag of the previous player input to the encoded frame, wherein the tag indicates that the encoded frame contains resultant motion of all player inputs up to and including the previous player input; transmitting the encoded frame with the attached unique tag of the previous player input to the client; and transmitting an instruction to the client to remove tagged motion vectors from the queue that have the unique tag of the transmitted encoded frame along with any tagged motion vectors that have an earlier unique tag, wherein the remaining motion vectors in the queue are summed and wherein summing the remaining motion vectors comprises summing the vectors element-wise to obtain a vector field with a vector for each macroblock in the image; wherein when the encoded video frame is transmitted to the client, the client is instructed to decode the video frame and apply the summed motion vectors to the decoded frame to estimate motion prior to video output, such that an outputted frame contains actual motion vectors for the previous player input and motion estimates for player inputs after the previous player input for which the client is still waiting for the server to return actual motion vectors. transmitting a lookup table containing anticipated player inputs and their associated motion vectors to a client, wherein motion vectors are vector fields with a vector for each macroblock in an image; instructing the client to query the lookup table for matching motion vectors upon the receipt of a player input at the client; instructing the client to associate a unique tag with the player input and the matching motion vectors from the lookup table and to add the tagged motion vectors to a queue containing any other tagged motion vectors currently being used for motion compensation, wherein unique tags associated with player inputs are chronological in nature; receiving a tagged previous player input from the client; generating an output frame from the received tagged previous player input; encoding the output frame; attaching a unique tag of the previous player input to the encoded frame, wherein the tag indicates that the encoded frame contains resultant motion of all player inputs up to and including the previous player input; transmitting the encoded frame with the attached unique tag of the previous player input to the client; and transmitting an instruction to the client to remove tagged motion vectors from the queue that have the unique tag of the transmitted encoded frame along with any tagged motion vectors that have an earlier unique tag, wherein the remaining motion vectors in the queue are summed and wherein summing the remaining motion vectors comprises summing the vectors element-wise to obtain a vector field with a vector for each macroblock in the image; wherein when the encoded video frame is transmitted to the client, the client is instructed to decode the video frame and apply the summed motion vectors to the decoded frame to estimate motion prior to video output, such that an outputted frame contains actual motion vectors for the previous player input and motion estimates for player inputs after the previous player input for which the client is still waiting for the server to return actual motion vectors.