The Original post and Comments for part 2 can be found here
,please feel free to join the conversation.
"So this is part 2 of, as I said before, an undefined number of articles focusing on competitive tweaks. If you missed the last article, please check it out Here
. These articles are meant to build on one another so don't miss any of them.
I had no idea part 1 was going to raise so much controversy. If you thought the last article was riskehhh, then you better prepare yourself (GDICommand).
As I said before, I'm all about getting every (legal) advantage I can get. The truth is, in competitive play, my opponent is already using every trick there is and if I'm not, I have only myself to blame. In competition, these tweaks are about evening the playing field, and can't be considered even remotely as "cheats."
What if I told you that it's likely that your system is delaying you by as much as 50 milliseconds (potentially even more)? If you haven't done much tweaking to your system then this is a true reality (even with tweaking some delay is inevitable). This delay is referred to as input lag and it is the sum of many variables both hardware and software related. It's been proven in scientific study that our nervous systems adapt to delays in visual imaging naturally. Small differences in timings such as 10 ms (1/100th of a second) aren't perceivable, and even significantly larger (50 ms), aren't perceived once we've adapted to the delay. It's like living with a handicap for so long you forget it's there.
I don't think any of us want to play our fast paced shooters with a handicap. So I will tell you how to dramatically reduce this input lag and (in future articles) how to get it as close to 0 as possible.
When estimating input lag, the largest variable is not considered, and that is the human element (reaction speed). In short, input lag is simply the time from when your hand moves/clicks the mouse to the time you see your screen begin to reflect the change. Fortunately, many of the variables that effect input lag are observable and adjustable. The primary variables that effect input lag are the following. First, you have mouse communication to the computer, second CPU processing, third GPU processing, and fourth monitor processing/response time/time between frames.
The biggest controllables of input lag are driver/software related, and these variables directly effect how your CPU and GPU behave when rendering. Frame buffers can, and often do, dramatically limit the responsiveness of your system. If you’re running a 60 hz monitor, 1 frame to you is 16.66 ms. This means their is a delay of 16.66 ms between each frame (1000ms/60fps = 16.66). On a 120hz monitor there is a delay of 8.33 ms between each frame (1000ms/120fps = 8.33). These numbers are assuming you are getting a minimum of 60 fps or 120 fps respectively. These times can really add up, especially if both your CPU and GPU are delaying output with frame buffers.
Before we get to these "buffers", let's first address Vertical Sync. Vertical Sync (vsync) is one of the best known causes of input lag. Vsync on forces the GPU to be synchronized with the vertical refresh of the monitor. This means that the GPU has to be throttled down and synchronized to keep it from exceeding the monitors refresh rate. Disabling vsync may cause noticeable image tearing on 60hz monitor (not noticeable on 120hz), but can greatly reduce input lag. Image tearing, though unsightly, is not damaging to your system or monitor and a worthwhile sacrifice (imo) to gain increased response time.
Your GPU has a frame buffer referred to as "triple buffering". True triple buffering (parallel back buffers), to my knowledge, doesn't exist in modern directx games, and for our purposes triple buffering just acts like a linear rendered frame buffer, and introduces extra input lag. Triple buffering reduces FPS drops when vertical sync is enabled but adds an extra frame delay compared to default double buffering. By default, Battlefield 3 has triple buffering enabled. Disabling triple buffering can reduce input lag on systems even when vsync is disabled.
Your CPU also has a frame buffer referred to as "maximum pre-rendered frames" ("flip queue size" on ATI/AMD systems), which is controlled by your graphics driver. This buffer tells your CPU to render up to a defined number of frames (3 default) ahead of your GPU. This pre-render function allows your game to maintain smoother frame rates without as much dipping because the CPU doesn't have to wait for the GPU to continue processing. This is a dynamic function and the buffer typically changes depending on FPS (higher FPS - less buffer, lower FPS - more buffer). Although this function is nice for keeping your FPS from dipping some, it can ultimately slow the responsiveness of system rendering. Assuming you don't have a heavily bottlenecked CPU, there is minimal FPS performance impact from reducing or eliminating this pre-render buffer and in return you gain a significant reduction in input lag.
Now, I will tell you how to adjust each of these settings. Vsync is very simple, just go into your Battlefield 3 game options, and under "Video" change "Vertical Sync" to "Off." To change triple buffering and pre-rendered frames, you can either type the console commands into your game every time you load up, or create a user.cfg file. To create a user.cfg file, simply go to the \Program Files (x86)\Origin Games\Battlefield 3\ directory, and right click to create a new txt document titled "user.cfg" (do not make a user.cfg.txt). After you've created your user.cfg, put the following commands in it (on seperate lines), RenderDevice.TripleBufferingEnable 0 (default 1), and RenderDevice.ForceRenderAheadLimit 0 (default -1 which uses the GPU default of 3). So your user.cfg should look exactly like this....
(don’t forget to save the changes)
As you can see these commands disable triple buffering and set you pre-render ahead limit to 0. If you come into frame problems or other issues you can try changing RenderDevice.ForceRenderAheadLimit to 1 or 2, or you can delete the user.cfg, and the game will restore the default values the next time you open it.
For good measure or for other games that don't have adjustable console variables for these settings, you can change them in your Nvidia control panel under the "Manage 3d settings" tab (you can also create a custom profile for different games if you choose). If you have an AMD graphics card you will have to use a third party program like "ATI Tray Tools" to adjust "Flip Queue Size" (maximum pre-rendered frames), because the variable is no longer available in the Catalyst Control Center. I took a screenshot of my Nvidia Settings so you can see which settings to change...
Changing these values shouldn't, in almost any situation, cause damage to your hardware (I've never heard of a system being damaged from them), but I (or ADK) take no responsibility for you changing any of these variables and you do so at your own risk.
If you want to keep up with ADK-pA you can find us on the TWL 4v4 Rush League
page, and here
at adkgamers.com. You can check out my youtube
for unabridged match footage, and other videos. Remember, the videos on youtube are from my perspective, only what i hear is recorded, so none of my microphone comms can be heard. Also be sure to check out ADK's twitch.tv
to see some broadcasts of me pubbing. Broadcasting lags my computer, but I've ordered a video capture card for my second computer so you will see me doing more of it in the near future. Let me know if you have a question or add me on battlelog if you want to frag sometime (Elegy-pA
Till next time,
Sam "Elegy" Wright from team Passive Aggressor signing off."
Since this post Saga and -pA have merged and are now called -fl FLatline playing as part of the ADK gaming group