This page contains solutions and tips for various tearing, lagging, jerky and sucky Quake configurations.
Hardware and drivers
A good display for Quake has high refresh rate (Hz).
If you have an LCD display with a high input lag, you should consider other options for ultimate smoothness. Maybe you have an old CRT monitor you could resurrect for Quake use or simply buy an 120Hz LCD. See TFT for some tips if you're using a TFT/LCD monitor or you are thinking of buying one.
On CRT displays you can lower resolution to acheive higher refresh rates. Your video card drivers probably have a custom refresh rate feature. If not, you can use an external program like Powerstrip or Refresh Lock.
If you feel like the game runs smooth for a while but you recognize small disturbing semi-periodic interrupts, those can be caused by background applications. Start by opening Task Manager (ctrl+alt+del) and checking whethe some other processes are consuming the CPU time.
If that doesn't help you, use following tools:
- Process Explorer - Contains CPU Usage graph where you can track for CPU spikes and display what process is causing them. If it's the "System" process, check for wrongly uninstalled/conflicting firewalls or buggy drivers.
- FileMon - Simple tool to show you which Windows applications are accessing your hard-drive
- In Windows 7, you can use Resource Monitor: enter "resmon" in start menu search box.
- Threaded optimization can cause unstable frame rate if you have multicore CPU and NVIDIA video card; You can turn it off in video card driver settings.
These settings only work on ezQuake client.
Independent physics separates frame rate from physics rate allowing frame rates above 77.
cl_physfps 77 equals the setting on almost all servers.
cl_nolerp 0 (default) set to 1 to disable linear interpolation of objects in the game (not recommended).
cl_nopred 0 (default) prediction for your character is enabled.
cl_earlypackets 1 lowers net latency and reduces "warpyness" . If you get jerky rockets, consider turning this off and use show net (requires new hud enabled), then cl_delay_packet 0-10 until your min/avg/max ping is equal and dev preferrably is 0.00ms.
FPS limit fine-tuning
Don't set cl_maxfps to 0. Define a limit, based on the power of your pc. The more the better, but you want a stable value, so you got to figure that number out. The number you choose must be related on your monitor's refresh rate. cl_maxfps can be equal, double, triple, 10 times the value of refreshrate. This usually delivers good results. Just don't set it too high, you want stable fps. Typical values on modern computers are 240 (120x2), 480, 600, 960... which should be more than enough to have a smooth playing experience.
Especially with LCD devices be aware if your FPS limit (cl_maxfps) is a multiplication of your display refresh frequency. For example using 75 Hz display refresh frequency and FPS limit 225 (= 3*75) will be significantly different from using 235 FPS.
Setting cl_maxfps to a value that is below your systems limit also lends cpu time to other processes. This alleviates problems with mouse responsiveness (mouse driver) and CPU spiking (other programs).
While vertical synchronization introduces image lag and forces one to use lower FPS rates than possible with unlimited FPS, on some configurations when fine-tuned it gives much smoother gameplay than when turned off.
To toggle vsync on, type vid_vsync 1 and cl_maxfps 0 in the console. Now you need to determine what is your video lag and FPS. Type show vidlag and show fps; You should use new hud (scr_newhud 1) to have these counters visible. The goal is to have stable FPS equal to your display frequency (60 / 75 / 120 / 150 ...) while having the video lag as low as possible.
Start with setting cl_vsync_lag_fix 1. Your video lag might decrease now, but also FPS may decrease. This is where cl_vsync_lag_tweak comes into play. You have to find the lowest value of the _tweak variable that gives you stable FPS equal to the display frequency. Such a value will decrease the video lag as much as possible without breaking FPS stability. For example tweak set to 0 will decrease video lag to almost 0 ms, but most probably will shut down your FPS rate. And tweak 20 typically won't reduce video lag at all, even if your FPS is super-stable. So find some good value in between.
Use in_mouse 3 (Raw Input), or if that doesn't work in_mouse 2 (Direct Input). Type in_restart to restart input mode.
ezQuake is in general the recomended client, but you can also try fuh if everything fails :P Binary version of Fuhquake > http://dreamolers.binaryriot.org/fuhquake/
Advanced Configuration forum in QuakeWorld.nu is a good place to start. Use search.