Arma 3 Performance guide

From cluster wiki
Jump to navigation Jump to search

This guide will go over all possible optimizations for Arma 3. Contrary to what most other guides tell you setting cpuCount, exThreads or most other parameters does nothing, they are correctly recognized and set by Arma 3 automatically (and exThreads overrides cpuCount anyway). If you set them manually you are just overriding something that was already set correctly.

This guide is designed to show you how to really improve performance, however don't expect miracles. In Arma 3 the limiting factor in 99% of all cases is your CPU. Arma 3 puts 90-95% of all work on one thread, so what you need the most to get good FPS is a CPU with high IPC and a high clockspeed.

The optimizations in this thread has been tested and used by Eric over multiple years. It might not work on all systems and Eric is not responsible for any damages caused. Any and all changes to your game, system or your computer are all applied at your own responsibility.

Config files

There are a few things you can change in your game's files to make your experience better.

Arma3.cfg

In here we are going to change how many frames ahead arma will be able to compute. This will reduce input lag and it can increase performance. FPS drops will be more noticeable, but overall performance should be better. Open Arma3.cfg, it is located in: C:\Users\%username%\Documents\Arma 3 and edit the following lines:

GPU_MaxFramesAhead=5;
GPU_DetectedFramesAhead=5;

and change them to:

GPU_MaxFramesAhead=1;
GPU_DetectedFramesAhead=1;

If you have a Monitor with a higher refresh rate than 60Hz you can change the following line:

refresh=60;

to your refresh rate. For example if your refresh rate is 144 you can change it to this:

refresh=144;

*.Arma3Profile

This is entirely optional, it won't improve performance but it will disable annoying features such as mouse acceleration and smoothing. You can also change your FOV if you don't like the default 70°. You can find your *.Arma3Profile in C:\Users\%username%\Documents\Arma 3 - Other profiles\<Arma 3 Profile Name>\

First to disable mouse acceleration and smoothing you can locate the following lines:

mouseSmoothing=1;
mouseAcceleration=1;

and change it to:

mouseSmoothing=0;
mouseAcceleration=0;

Additionally to change your FOV you can change the following lines:

fovTop=0.75;
fovLeft=1.33;

to your desired FOV, the numbers can be calculated using Metalman's Calculator. For example if you want a FOV of 90° change it to the following:

fovTop=1.03;
fovLeft=1.83;

Launcher

Now that we've made some changes to our config files our next order of business is to change some parameters in the launcher:

  1. Start the Arma 3 launcher.
  2. Locate the "Parameters" tab and enter it.
  3. Locate the "All Parameters" sub-tab and enter it.
  4. Change the following parameters:
Parameter Value
Platform <os architecture>
Enable large Page Support
No Logs
No Pause
CPU Count <amount of cores>
Enable Hyper-Threading
Extra Threads [✓] Texture loading | [✓] Geometry loading

Performance Binary and Memory allocator

This is the meat of this guide, changing your Arma 3 Binary to the performance binary greatly improves performance, changing the memory allocator aswell is a big performance boost.

Performance binary

For every arma update a Bohemia developer called dwarden (now dedmen) uploads a performance binary to the bohemia forums. This binary is an arma 3 version that greatly enhanced performance. Luckily for us this binary has now become available as a branch for Arma 3 on steam:

  1. Open the Arma 3 properties in steam.
  2. Locate and enter the "Beta" tab.
  3. Enter the following code: CautionSpecialProfilingAndTestingBranchArma3 (apparently this isn't required anymore, but i'll keep it here for archival reasons).
  4. Select: profiling - Performance Profiling Build.

Doing this will automatically download the newest performance binary when they are available.

Memory Allocator

After the Armaholic shutdown the memory allocator i've been using is no longer available (xtbbmalloc by _blub (now archived here by eric)). Therefor i'm having a hard time of recommanding any memory allocators, but I've heard good things of the mimalloc fork by GoldJohnKing. There are of course other memory allocators out there so if you google some i have no doubt in my mind you can find a good one. Anyway once you've downloaded your memoery allocator you can follow this:

  1. Put the config file for the allocator in your arma 3 game directory (Steam\steamapps\common\Arma 3). Make sure the moved config file is has the same architecture as your system (x64 or x32).
  2. Move the memeroy allocator program extension (.dll) into Steam\steamapps\common\Arma 3\Dll.
  3. Open the Arma 3 Launcher
  4. Locate and enter "Parameters" and "All Parameters"
  5. Enable memory allocator and change the allocator to your allocator.

Process priority and CPU Affinity

You can do the below in the task manager aswell but it will require you to do it every time you start Arma 3. Instead i recommend installing process lasso by Bitsum. Once you've got process lasso installed do the following:

  1. Start Process Lasso.
  2. Start Arma 3 (the game, not the launcher).
  3. In Process Lasso Right Click the Arma 3 process -> Priority class -> Always -> Above normal (do NOT ever set it to realtime priority)
  4. Again Right Click the Arma 3 process -> CPU affinity -> Always -> Untick CPU 0 (do this only if you have 4 or more cores)

Windows Optimizations

It should be mentioned that I, Eric, don't really do this step as it is mostly if you have a potato PC and need to suck out as much performance as possible. Some of the windows steps can break your computer if done wrongly, therefore I only really recommend doing the NVIDIA Control Panel step unless you really need that extra performance.

Drivers

This step is more if you want to suck out as much performance as you possibly can. It mainly consist of updating your drivers to WDDM 2.6 (windows 10), this step can really fuck up your OS install so unless you absolutly need this extra performance or you know what you are doing i don't really recommend doing this WDDM 2.6 update. Most of your drivers are probably WDDM 2.6 already and this step would just address the few that aren't. Regardless it is still recommended to at least update your display drivers.

  1. Download newest drivers for you GPU and you OS, NVIDIA cards: drivers, AMD cards: drivers
  2. Download and unzip DDU by Wagnard
  3. Disconnect PC from Internet (otherwise after you will delete drivers Windows will attempt to download and install the new drivers automatically)
  4. Start DDU, close all windows that pops up
  5. Open Options, tick the "Enable Safe Mode dialog" checkbox
  6. Restart DDU
  7. Select Safe Mode and allow to reboot into safe mode
  8. Windows will then boot in safe mode, DDU should start automatically - if it doesn't then start it manually
  9. Open Options, tick all NVIDIA specific or AMD specific options (depending on card you own)
  10. Close options
  11. Select GPU as device type
  12. Select NVIDIA or AMD as device (depending on card you own)
  13. Click Clean and restart
  14. After your PC restarts, install previously downloaded drivers. For NV cards I recommend to install the "light" pack drivers, and during installation select NVIDIA graphic driver (without GeForce Experience) -> Custom install -> untick everything but Graphics driver, PhysX System Software, NVIDIA NGX. You can tick HD Audio Driver if you use HDMI/DP to transmit audio from PC to monitor.
  15. Restart PC
  16. Connect PC to Internet

NVIDIA Control Panel

  1. Open NVIDIA Control Panel.
  2. Go to Manage 3D Settings.
  3. Set Power management mode to Optimal.
  4. Set Maximum rendered frames to 1.
  5. Locate and enter the "Program Settings" tab.
  6. Add the Arma 3 binary file (for 32-bit: arma3.exe, for 64-bit: arma3_x64.exe)
  7. Set the Power management mode to Prefer maximum performance

Windows 10 DVR

It is recommended to disable windows 10 DVR. You can do this by following the guide below:

  1. Start regedit
  2. Go to HKEY_CURRENT_USER\System\GameConfigStore
  3. Set GameDVR_Enabled value to 0
  4. Go to HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\
  5. Create new key and name it GameDVR
  6. Inside create new DWORD 32-bit and name it "AllowGameDVR"
  7. Set AllowGameDVR value to 0

Standby List Cleaner

Clearing the standby list is automatically performed by the CPU, so do NOT set values too low as it will just force CPU to clean the standby list very often and this could negatively impact your performance in-game. Ideally you want it to be cleared as rarely as possible, but before you're left with too little free RAM. Download and unzip ISLC by Wagnard

  1. Start ISLC
  2. Set "The list size is at least" value depending on your available RAM (less RAM = set it to a lower value). For 16GB of RAM I recommend 1200MB, for 8GB probably 800MB should be good.
  3. Set "Free memory is lower than" value depening on your available RAM. For 16GB of RAM I recommend 2000MB, for 8GB probably 1500MB should be fine.
  4. Press the Start button
  5. DO NOT close the app (it needs to be running in background)

In-game settings

General

The in-game settings are mostly up to you and how low you are willing to have. If you struggle with performance after having done everything above you should decreasing the settings in the following order: Cloud, Shadow, Particles, Terrain, Objects. You should try to keep the Objects as high as possible, they are quite taxing, but important.

  • PIP: If you have performance issues in vehicles or in any other situation where there are mirrors or dashboard cameras you should reduce or even disable PIP. It basically renders another scene (what you see in car mirror in game is not a reflection, it is a new scene rendered from different camera position and displayed in game)
  • Textures: If you have enough VRAM (4GB and above) you are free to set it to high or ultra. Unless you don't have enough VRAM there is no need to set it differently.

When it comes to visibility in my opinion there is no need to go over 5000 on overall (I recommend 4000), 4000 on objects (I recommend 3000) and 100 on shadows (I recommend 50).

Display

  • Display mode: Fullscreen (or Fullscreen window if you are using more than 1 monitor)
  • Resolution: Set it to native resolution of your monitor (usually 1920x1080)
  • Aspect Ratio: Set it to match your monitor (usually 16:9)
  • VSync: Disabled

AA & PP

The most taxing settings here are PPAA, FSAA (especially when paired with ATOC) and AO. If you struggle with performance you should disable PPAA, reduce FSAA and AO (or even disable if needed).
Anisotropic filtering have minimal performance impact so I recommend to leave it at least on high.

If you are decreasing graphic settings, sampling, etc. and still can't get playable FPS that means CPU is limiting you.

Summary

After you've completed all the steps above Arma 3 should be running significantly better. FPS improvement largely depends on the hardware you own, the mission you play and the mods you use. If you still have bad performance then it may be a result of a bad CPU (GPU rarely matters in Arma 3), an unoptimized mission or unoptimized/too many mods. Bear in mind that freezes/fps drops caused by loading terrain while you are moving are not same as stuttering (to fix/reduce these freezes you'd need an SSD).

This guide is based on the Arma 3 Steam Guide by Kubas