Difference between revisions of "Smooth Quake"

From QWiki
*>Ruskie
m
(41 intermediate revisions by 10 users not shown)
Line 1: Line 1:
 
This page contains solutions and tips for various tearing, lagging, jerky and sucky Quake configurations.
 
This page contains solutions and tips for various tearing, lagging, jerky and sucky Quake configurations.
  
== Operating system independant ==
+
'''2021 edit and tldr''': A high refresh rate monitor is recommended (+120hz). A good mouse, running on at least 500hz is also recommended. If you're using nQuake, all the recommended settings are preset - although you can increase the maximum frames per second from the 308 default to as high as 1001 or more.  
===Independent physics===
+
Continue reading if you continue to feel you need more info about getting your Quake smoother.
You can find lots of tips for the ezQuake client in the [http://ezquake.sourceforge.net/docs/?independent-physics Independent Physics Guide].
 
  
===Common tips===
+
==Hardware and drivers==
* '''More FPS''' = smoother quake. See below for details.
+
===Display===
* Use '''maximum vertical refresh frequency''' of the screen
+
A good display for Quake has high refresh rate (Hz).  
* Make sure that '''no other program is running''' when you run quake. They steal your CPU and therefore make FPS hits.
+
<br>
* Turn off '''vertical synchronization''' on your graphics card settings and also in ezQuake by setting vid_vsync 0.0. If you want to keep things smooth but not suffer the quality loss of turning vsync off, enable double/tripple buffering.  In software rendering version you have to use -dibonly command line options and vid_nopageflip 1 setting.
+
If you have an LCD display with a high [http://en.wikipedia.org/wiki/Input_lag 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 a high hz LCD. See [[TFT]] for some tips if you're using a TFT/LCD monitor or you are thinking of buying one.
  
===FPS Limit Fine-Tuning===
+
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 [http://entechtaiwan.net/util/ps.shtm Powerstrip] or Refresh Lock.
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. Usually players prefer to use multiplication of their display refresh frequency - 2*75, 3*75, 3*60, and so on, not the other way round.
 
  
===Control CPU Sharing===
+
===Mouse===
Because your CPU needs to be shared with different system applications - including system services - it gives you another place to fine-tune smoothness of your Quake configuration. You can get into following situations.
+
2021 edit: most gaming mouses nowadays work natively at 1000hz. In this case, you don't need to do anything. End edit.<br>
  
* Both Quake and background services get enough CPU time and everything runs smooth
+
USB polling rate should be raised to 500Hz or 1000Hz from the default 125Hz. Some mouse drivers have this option, otherwise use [http://www.ngohq.com/news/15043-how-to-increase-usb-sample-rate-in-windows-vista-7-a.html HIDUSBF]. [http://www.youtube.com/watch?v=VxhAKJ-Dyes Video guide]
* Other applications get too much CPU time while the Quake engine needs more so the rendering gets jerky
 
* Other applications do not get enough CPU time and for example your mouse/keyboard input is delayed for more then a second
 
  
To control how CPU should be shared when Quake is running you can use ways described below.
+
===CPU spikes===
 +
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. <br />
 +
You can also reduce the number of processes that run on the startup process of your OS.
  
====Quake CPU yielding====
+
If that doesn't help you, use following tools:
  
If you use FPS limitation (cl_maxfps), you can control what happens in the moment when the client finished rendering the current frame and it has nothing to do until it's a right time to start rendering the next frame. Either it can run in a loop or it can give CPU to other applications. To control it use <code>sys_yieldcpu</code> variable. Setting it to 0 will not give the CPU to other applications and vice versa.
+
* [http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx 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.
 +
* [http://technet.microsoft.com/en-us/sysinternals/bb896642.aspx 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.
  
====OS-specific settings====
+
===Other issues===
 +
* ''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.
  
Other settings depend on the Operating system you are using. See below for OS-specific tips.
+
==ezQuake settings==
 +
These settings only work on [[ezQuake]] client.
  
==Linux==
+
===Independent physics===
 +
If you're using nQuake, you can ignore this section.
  
See [[Smooth Quake in Linux]]
+
Independent physics separates frame rate from physics rate allowing frame rates above 77.
 +
* ''cl_independentphysics 1''
 +
* ''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 "warpiness" [http://www.quakeworld.nu/news/482/]. 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.
  
== Windows ==
+
===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 1001, 960... which should be more than enough to have a smooth playing experience.
  
====Quake Priority====
+
Especially with LCD devices be aware if your FPS limit (cl_maxfps) is a multiplication of your display refresh frequency.
  
You can try changing Quake process priority. You do that with the <code>sys_highpriority</code> variable in FuhQuake and ezQuake clients. Try all values from within the set -1, 0 and 1. Also you may try more specific values by selecting your client process in the ''Task Manager'' and changing it's priority in there. ''Task Manager'' gives you 6 possible priority settings.
+
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).
  
====System CPU Sheduling====
+
===Vsync fine-tuning===
 +
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.
  
In Windows it's possible to set preferred way for '''CPU sheduling''' in your Control Panel - System - Advanced tab - Performance - Advanced tab and choose if ''Programs'' or ''Background services'' should be preferred. The default setting for workstation computers is to prefer ''Programs''. However this doesn't mean that this value is recommended.
+
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.
  
== Macintosh ==
+
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.
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/
 
  
== Debugging/solutions for Certain hardware ==
+
===Mouse===
if you get pixels in ezquake, try gl_ztrick 0 or 1
+
Use ''in_raw 1'' (default) for Raw mouse input. This should provide the cleanest mouse input data, as opposed to what SDL input provides with ''in_raw 0'', which might suffer from Windows's built-in  acceleration curves and other limitations.
  
== Tools ==
+
==Other OS==
If you dont have quake installed already use [[NQuake]] as the installation media.
+
===Linux===
* http://nquake.com
 
  
If you have an ATI or NVIDIA card you should always install their official (proprietary, only in binary form) drivers to get the highest fps. There's also a popular 3rd party driver with some optimizations for ATI/NVIDIA. It comes with various tools for adding modelines and overclocking; (note that r200 is fully supported in linux with the opensource x.org driver)
+
See [[Smooth Quake in Linux]]
* http://www.nvidia.com/content/drivers/drivers.asp
 
* http://ati.amd.com/support/driver.html
 
* http://www.omegadrivers.net/
 
  
 +
=== Mac ===
 +
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/
  
Also dont forget to install soundcard/motherboard/chipset drivers from the hardware manufacturer's site. They also tend to have a FAQ or something similar there. To identify the hardware on Linux, run <code>lspci</code>. Windows has a built-in one in the control panel, but it's not the greatest so there might be some good 3rd party tools.
+
==Finding help==
* Powerstrip or PCWizard or newest Nvidia drivers - With these programs u can fine-tune your display frequency. If you dont use independent-physics, it might be a good idea to set your quake's resolution display frequency to 77hz. Or 154 if you have at least 19' monitor.
+
[http://www.quakeworld.nu/forum/viewforum.php?id=10 Advanced Configuration] forum in QuakeWorld.nu is a good place to start. Use search.
These tools are good to clean up space/bogus stuff in Windows that can steal precious fps:
 
*[http://www.ccleaner.com/ ccleaner ]
 
*[http://www.lavasoftusa.com/ adaware ]
 
 
 
If nothing helps please come to irc  on #qwhelp or #qwrookie and we will try to fill in the missing pieces
 
  
 
[[Category:Tutorials]]
 
[[Category:Tutorials]]

Revision as of 10:14, 1 October 2022

This page contains solutions and tips for various tearing, lagging, jerky and sucky Quake configurations.

2021 edit and tldr: A high refresh rate monitor is recommended (+120hz). A good mouse, running on at least 500hz is also recommended. If you're using nQuake, all the recommended settings are preset - although you can increase the maximum frames per second from the 308 default to as high as 1001 or more. Continue reading if you continue to feel you need more info about getting your Quake smoother.

Hardware and drivers

Display

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 a high hz 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.

Mouse

2021 edit: most gaming mouses nowadays work natively at 1000hz. In this case, you don't need to do anything. End edit.

USB polling rate should be raised to 500Hz or 1000Hz from the default 125Hz. Some mouse drivers have this option, otherwise use HIDUSBF. Video guide

CPU spikes

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.
You can also reduce the number of processes that run on the startup process of your OS.

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.

Other issues

  • 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.

ezQuake settings

These settings only work on ezQuake client.

Independent physics

If you're using nQuake, you can ignore this section.

Independent physics separates frame rate from physics rate allowing frame rates above 77.

  • cl_independentphysics 1
  • 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 "warpiness" [1]. 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 1001, 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.

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).

Vsync fine-tuning

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.

Mouse

Use in_raw 1 (default) for Raw mouse input. This should provide the cleanest mouse input data, as opposed to what SDL input provides with in_raw 0, which might suffer from Windows's built-in acceleration curves and other limitations.

Other OS

Linux

See Smooth Quake in Linux

Mac

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/

Finding help

Advanced Configuration forum in QuakeWorld.nu is a good place to start. Use search.