Smooth Quake

From QWiki
Revision as of 13:12, 6 February 2008 by *>JohnNy cz (→‎FPS Limit Fine-Tuning)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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

Operating system independant

Independent physics

You can find lots of tips for the ezQuake client in the Independent Physics Guide.

Common tips

  • More FPS = smoother quake. See below for details.
  • Use maximum vertical refresh frequency of the screen
  • Make sure that no other program is running when you run quake. They steal your CPU and therefore make FPS hits.
  • 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.

FPS Limit Fine-Tuning

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

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.

  • Both Quake and background services get enough CPU time and everything runs smooth
  • 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.

Quake CPU yielding

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 sys_yieldcpu variable. Setting it to 0 will not give the CPU to other applications and vice versa.

OS-specific settings

Other settings depend on the Operating system you are using. See below for OS-specific tips.

Linux

See Smooth Quake in Linux

Windows

Quake Priority

You can try changing Quake process priority. You do that with the sys_highpriority 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.

System CPU Sheduling

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.

Macintosh

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

Intel graphics cards don't work too well in ezquake(should be fixed in ezquake svn and 1.8.2. 'stable') ; try darkplaces instead.

Tools

If you dont have quake installed already use NQuake as the installation media.

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)


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

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

These tools are good to clean up space/bogus stuff in Windows that can steal precious fps:

If nothing helps please come to irc on #qwhelp and we will try to fill in the missing pieces