Each client must keep a buffer of all input commands.
When a server sends state, the client will discard all commands older than that state.
After discarding, the client will replay all actions again from the server state: This should result in the same result unless the server has sent state that affects the client.