Self-Prediction predicts game state based on player input but before getting confirmation from the server. Self-prediction is a natural technique for game programmers since most clients run a fully-functional game engine able to incorporate player input and compute game object interactions (e.g., physics, including collisions) without the server, and doing so can provide immediate feedback for the player.
Self-prediction is often called client-side prediction in papers, online blogs and player posts.
The below figure depicts an example of self-prediction. A time t0 on the left, the player has a view of the game world that is consistent with the server's (not shown). At time t1, the player has provided some game input (e.g., press the right arrow key) in order to move the green avatar to the right. The client assumes that this movement will be allowed by the server and so renders the world with the green avatar in the predicted location. Once the server receives and then responds to the player input at time t2 there are two possibilities: in the first case, shown at the top, the server has accepted the input and the green avatar's new position is confirmed; in the second case, shown at the bottom, the server has rejected the player input (e.g., if the avatar is blocked by another object unknown to the client) and the client renders the world as specified by the server.
Jiann-RongWu and MingOuhyoung, 2000. On Latency Compensation and its Effects on Head-motion Trajectories in Virtual Environments
Ryan Hanna and Michael Katchabaw, 2005. Bringing New HOPE to Networked Games: Using Optimistic Execution to Improve Quality of Service
Gabriel Shelley and Michael Katchabaw, 2005. Patterns of Optimism for Reducing the Effects of Latency in Networked Multiplayer Games
Jeremy Brun, Farzad Safaei, Paul Boustead, 2006. Managing Latency and Fairness in Networked Games
Shayne Burgess and Michael Katchabaw, 2006. Design and Implementation of Optimistic Constructs for Latency Masking in Online Video Games
Ling Chen, Gen-Cai Chen, Hong Chen, Jack March, Steve Benford and Zhi-Geng Pan, 2007. An HCI Method to Improve the Human Performance Reduced by Local-lag Mechanism
Alexey Tumanov, Robert Allison and Wolfgang Stuerzlinger, 2007. Variability-Aware Latency Amelioration in Distributed Environments
Cheryl Savery, T.C. Nicholas Graham and Carl Gutwin, 2010. The Human Factors of Consistency Maintenance in Multiplayer Computer Games
Rosane Ushirobira, Denis Efimov, Gery Casiez, Nicolas Roussel and Wilfrid Perruquetti, 2016. A Forecasting Algorithm for Latency Compensation in Indirect Human-Computer Interactions
Huy Viet Le, Valentin Schwind, Philipp Gottlich and Niels Henze, 2017. PredicTouch: A System to Reduce Touchscreen Latency using Neural Networks and Inertial Measurement Units
Axel Antoine, Sylvain Malacria and Gery Casiez, 2018. Using High Frequency Accelerometer and Mouse to Compensate for End-to-end Latency in Indirect Interaction
John Carmack, 1996. Here is The New Plan
Tony Cannon, 2012. Fight the Lag! The Trick Behind GGPO's Low-latency Netcode
Benjamin Goyette, 2016. Fighting Latency on Call of Duty: Black Ops III
Tim Ford and Philip Orwig, 2016. Developer Update - Let's Talk Netcode
Valve Developer Community, 2017. Source Multiplayer Networking
Matt deWet and David Straily, 2020. Peeking into Valorant's Netcode
Shengmei Liu, Xiaokun Xu and Mark Claypool. A Survey and Taxonomy of Latency Compensation Techniques for Network Computer Games, ACM Computing Surveys, Article 243, Volume 54, Issue 11S, DOI https://doi.org/10.1145/3519023, September 9, 2022. Online at: http://www.cs.wpi.edu/~claypool/papers/lag-taxonomy/