Admittedly, the Odamex development team and specifically myself have not kept documentation current with regards to network-related cvar usage. Documenting the effects of cvar settings is best done by the person who knows the most about their internal functionality and that typically is me. Unfortunately, my available time is limited and is most often put towards coding rather than documenting.<br /><br />This lack of information available to players has unfortunately had a negative impact. However, I believe that raising the community&#039;s understanding of how modern client/server game semantics work, and in particular, the trade-offs we have made with Odamex, will result a better gameplay experience for all the players.<br /><br />With that in mind, I would like to start with briefly outlining the intent of each network-related cvar and how changing its value impacts the game. I will update this post and/or branch off into a new post as I write more. Eventually this may turn into a series of more in-depth articles on the internals of our netcode. ...or I may get distracted and talk to mikehail about food for several hours instead. We&#039;ll see!<br /><br />[center][b]Network-related CVARs[/b][/center]<br /><br />[b]rate[/b] (&quot;Bandwidth&quot; in the Network Options menu)<br />Sets the maximum bandwidth the client can receive, measured in kilobytes per second. The default value is 200, though setting it higher to 750 will allow for faster in-game downloading if the server allows it.<br /><br />[b]cl_unlag[/b] (&quot;Adjust weapons for lag&quot; in the Network Options menu)<br />Allows the client to enable or disable backwards reconciliation (&quot;unlagged&quot;) for hitscan weapons. Enabled by default, this setting allows a player to aim directly at enemies when firing hitscan weapons such as the shotgun and chaingun.<br /><br />It works as follows:<br />[list]<br />[li]Every gametic (there are 35 per second), the server records the position of every player.[/li]<br />[li]When the server sees that a player with round-trip latency of X milliseconds pressed the fire button, it temporarily moves all other players to the position they were in X milliseconds ago.[/li]<br />[li]The server determines if the shot hit anyone.[/li]<br />[li]Players are moved back to their current position.[/li]<br />[/list]<br /><br />[b]cl_updaterate[/b] (&quot;Position update freq&quot; in the Network Options menu)<br />Indicates the frequency of position updates a client wishes to receive. The default value of 1 indicates they wish to receive an update every gametic while a value of 2 indicates an update every 2 gametics. More frequent updates lead to greater accuracy at the expense of more bandwidth usage.<br /><br />[b]cl_interp[/b] (&quot;Interpolation time&quot; in the Network Options menu)<br />Allows a client to smooth the movement of enemy players due to network jitter in the connection between that particular client and the server. This smoothness comes at the expense of increased visual latency.<br /><br />If the most recently received position update is N, the default value of 1 will display players at position update N - 1. Similarly, a value of 2 will display players at position update N - 2. <br /><br />Network jitter causes the client to not always receive position updates in a timely manner. If a client displayed position update N - 1 last gametic and has yet to receive a new position update from the server, it can display position N, maintaining accurate, smooth movement even when there is jitter or small latency spikes.<br /><br />[b]cl_predictlocalplayer[/b]<br />Allows the client to enable or disable client-side prediction of a client&#039;s player position. This prediction, enabled by default, allows the client to immediately move its player position based on controller input instead of waiting for confirmation of a new position from the server. This is much more responsive compared to the alternative, which does not change the player position (and in turn the rendered view of the world) until the the client&#039;s round-trip latency time to the server has passed.<br /><br />Although prediction allows for immediate visual feedback, it can also be incorrect. This is often the result of collision with other players or being thrust by weapon damage. When the prediction is incorrect, the client considers the server to be authoritative about the real position of the client&#039;s player.<br /><br />Although most players would find it difficult to play with this CVAR disabled, it is immensely useful in diagnosing recordings of games for debugging purposes.<br /><br />[b]cl_prednudge[/b] (&quot;Smooth collisions&quot; in the Network Options menu)<br />Sets the amount of interpolation between a client&#039;s mispredicted player position and the corrected player position from the server. Valid values range from 0.05 to 1.0. The client can choose how they want to trade off between smoothness and accuracy when their player position is mispredicted (see cl_predictplayerposition for further background information). A value of 0.05 will nudge the player towards the correct position gradually and as smoothly as possible where as a value of 1.0 will instantly jerk the player to the correct position to be as accurate as possible.<br /><br />[b]cl_predictweapons[/b]<br /><br />[b]cl_predictsectors[/b]<br /><br />[b]cl_predictpickup[/b]