sailchip.cc | Atom feed

Planetside 2 settings analysis

2021-03-06, updated 2023-12-21

If you want to go straight to some good setups, there are a variety of config file snippets in this section.

Planetside 2 goes through a lot of changes and has a lot of odd edge cases. I keep a close eye out for changes, but am human and have likely missed something. If you think I have (or especially if you have any leads on something I’m not clear on), I’d love to hear about it! Please try it yourself first though, as a lot of the info that can be found is outdated.

I’m known around the PS2 community as jetpack, if you got here from there.

Why?
Latency tuning
Settings
Display Mode
Resolution and Render Quality
Brightness
Vertical Field of View and Wide View Mode
Vertical Sync
MaximumFPS and Smoothing
Fog Shadows
Ambient Occlusion
Bloom Enabled
Render Distance
Overall Quality
Graphics Quality
Texture Quality
Lighting Quality
Shadow Quality
Effects Quality
Terrain Quality
Flora Quality
Model Quality
Particles
Water Reflections and Object Reflections
Anti-Aliasing
FSR and DLSS
Mouse sensitivities
Maximum Voice Channels
Use Raw Mouse Input, Reduce Input Lag, and Mouse Acceleration
Motion Blur
GPU Particle Quality
ParticleDistanceScale
UseLod0a
Config file snippets
Competitive potato
Mild potato
Extra potato

Changelog

 2023-12-21
PSG is no more, RIP. Removed the cross-link to it
next update will be on some -1s in the ini that do seem to do something, I’m still working on that

 2023-09-07
removed some wording that overemphasized muscle memory’s importance for mouse sens / FoV. This was technically correct, but possibly misleading to the average reader, and would take a lot more exposition to properly fix
added note that I’m jetpack
removed another outdated reference to PS2 being very hungry for CPU-side memory bandwidth
removed a reference to Nvidia graphics driver behavior that I’m not sure is up to date

 2023-05-11
formatting improvements and some rewording to support them
added a bit more on improving aircraft input with MaximumFPS

 2023-02-16
a framerate limiter bug never got fixed and they’re back to 5ms granularity
reordered settings to better match the in-game interface, which recently changed
raised ini snippet FOVs and gammas slightly because I felt like it

 2023-02-12
forgot that extreme framerates mess with aircraft controls in some cases

 2023-02-08
added sections for anti-aliasing, reflections, and FSR/DLSS (all recently added to the game)
updated resolution and render quality section to reflect the existence of FSR/DLSS
updated config file snippets
removed single-channel RAM note; it’s less sensitive these days than it used to be
removed reticle color section; this is now exposed in the in-game settings
motion blur seems to have been removed from the game
moved GPU particle quality section to end as well

 2022-05-30
ParticleLOD=4 seems removed, and on GraphicsQuality=1 ParticleLOD=3 works like ParticleLOD=4 used to

 2022-05-27
lighting on GraphicsQuality=1 changed, making higher gammas a bit more useful
fog shadows’ shadow maps are now rendered in fewer scenarios

 2022-05-02
ParticleLOD=4 only works right when GraphicsQuality=1, knew this, somehow didn’t get it written down

 2022-04-17
streamlined various writing
added “Why?” section
reworked UserOptions.ini snippets
latency configuration is simpler than it used to be; reworked and simplified latency section
aspects of smoothing have been disabled
framerate limiter granularity has been fixed (now 1ms instead of 5ms, greatly reducing stutter)
added graphics driver framerate limiter notes
crosshair-aimpoint gap is one frame now, down from two
I think ModelQuality has been disconnected?
increasingly sure that TerrainQuality does nothing
ReduceInputLag=1 is back to being the safer default in 2022 I think
added note on how to find UserOptions.ini
added note on UserOptions.ini backups
inlined asides for crossposting formatting reasons

 2021-06-07
adapted for the new site (this will continue to recieve updates on PSG)
internal links changed due to markdown shenanigans, sorry!
some section titles changed to make internal links less clunky
various wording and formatting tweaked
softened texture recommendation
you can now use FoVs above 74 without wide view mode
SmoothingMaxFramerate has the same frame timing quantization problem as MaximumFPS
the game doesn’t fill to work around the frame timing quantization problem

 2021-04-28
today’s patch brought back true god rays, updated this to match
today’s patch tweaked max voice channels, updated this to match

 2021-03-23
terrain bug quick fix confirmed, corresponding updates done
max render distances checked
more on particles (I think the game’s behavior changed since I last checked this in-depth)

 2021-03-21
the terrain bug is related to RenderDistance, updated accordingly
more ini options, taking the terrain bug into account
reproduced the mouse sensitivity bug today, updated accordingly
described one advanced particle tweak (likely another on the way)
updated to reflect further evidence that reducing textures has no CPU-side penalty
clarified max voices

 2021-03-15
UseLod0a might be buggy, recommending 0 pending more research
boosted potato ini gammas
updated lighting and AO to reflect further research
fixed some formatting and added more internal links

 2021-03-12
new latency section and many related tweaks
FoV recommendations tweaked again

 2021-03-10
clarified and expanded on FoV and mouse sensitivity

 2021-03-08
adapted for PSG — many thanks to the PSG team!

 2021-03-06
initial release

Why?

Low latency is important because:

To get a better sense of latency as something added to your reaction time, consider that the usual way to think of it like this:

your input -> (input portion of) latency -> simulation -> (output portion of) latency -> your eyes

… works the same as this reordering of it:

simulation -> (output portion of) latency -> your reaction time -> (input portion of) latency -> simulation

High framerates are important because:

Mouse tuning is important because:

Latency tuning

Most of this applies to most games, but PS2 has an additional problem: it has 1-3 additional frames of latency on most things (possibly everything) except mouselook. High framerates are critical for low latency here, moreso than in other games.

Almost everything affects latency a bit more than is obvious. Reducing settings will usually reduce latency even if it doesn’t improve framerates. (This isn’t universally true, but PS2 has few exceptions.) This isn’t a reason to go maximum potato on a solid rig, as diminishing returns are still a thing, but competitive infantry setups should try to stay lighter on their GPUs than framerates would indicate a need for.

Graphics drivers have to make a tradeoff between latency and stutter, which we can control with AMD’s Radeon Anti-Lag (RAL) and Nvidia’s Low Latency Mode (LLM). Minimum latency means keeping a bare minimum of work buffered, but this means that any inconsistencies in CPU-side performance will go all the way to the display. Keeping more work buffered can cover up inconsistencies, but only at expense of a lot of latency. Planetside’s CPU-side work is fairly consistent now (it hasn’t always been), which both decreases the amount of buffering required for the smoothest experience and keeps it smoother when optimizing for latency.

RAL on and LLM ultra buffer a bare minimum of work. With AMD drivers the stutter added isn’t usually bad, but LLM ultra may or may not be smooth.

RAL off buffers just enough to cover the stutter it sees coming from the CPU-side work, plus a bit for margin. It’s very smooth and generally doesn’t add too much latency over RAL on.

I haven’t had a chance to investigate LLM on thoroughly, but it seems to do fairly well on latency at this point. It may have some float (may have less latency and more stutter when CPU-bound and the inverse when GPU-bound).

LLM off lets a large buffer entirely float, so it behaves like the other Nvidia options when CPU-bound but has unreasonably high latency when GPU-bound. If you can always avoid being GPU-bound (probably by capping your framerate) it’s alright, but not otherwise.

Especially with LLM ultra, you may want to configure this via a PS2-specific profile in the driver so that your PS2 setup doesn’t apply to other games.

Settings

These settings (and others) are all stored in UserOptions.ini, in the same folder as the game executable. If you’re not sure where to find it, the launcher has a button to open that folder. Making the file read-only is sometimes useful if you want to lock in settings that aren’t accessible in-game (like render quality above 1.00, render distance below 300, or field of view above 74).

You can make a backup of your config file before editing it if you want, but you can always get a clean config file by deleting it and letting the game regenerate it on the next launch.

Aside from latency, PS2 is good about keeping CPU-side and GPU-side work from getting in each others’ way (so long as your GPU isn’t integrated and therefore sharing memory bandwidth with your CPU).

Display Mode

CPU impact: varies | GPU impact: varies | ini: [Display] Mode and FullscreenMode

What PS2 calls fullscreen windowed is what’s commonly known as borderless. Its exact performance effects depend too much on graphics driver and OS details to say much on here, but true fullscreen is the much safer bet.

Resolution and Render Quality

CPU impact: none | GPU impact: extreme | ini: [Display] FullscreenWidth, FullscreenHeight, WindowedWidth, WindowedHeight, and RenderQuality

If in doubt, resolution should be set to your monitor’s native resolution and render quality should be set to 100%. If you want to make the game lighter on your GPU, FSR and DLSS mostly do the same thing as render quality while being nicer to look at.

These two settings scale the same thing, but in different ways. Resolution affects everything, including the resolution of the final image sent to your monitor. Render quality only affects the 3D parts of rendering, and scales back to the set resolution before the 2D parts of the game are drawn. For instance, 3840x2160 at 50% RQ is mostly equivalent to 1920x1080 at 100% RQ.

Keeping resolution set to your monitor’s native resolution avoids asking the monitor to rescale the image (which often increases latency) and keeps the game’s UI looking crisp. Changing resolution is the only way to change the game UI’s size though, and in some cases you may need to reduce resolution to make the UI readable. Decreasing resolution also gets you slightly more performance than decreasing render quality, and if you have an extremely weak GPU this may be worthwhile.

Render quality may be worthwhile if you prefer the look over FSR or DLSS, or if your GPU is barely adequate and you want to use an extremely low resolution (you can set it below 50% in the ini).

If you want to supersample, you can boost render quality above 100% in the ini. This is much less janky than AMD’s VSR or Nvidia’s DSR, so long as you remember not to touch the slider in-game.

Brightness

CPU impact: none | GPU impact: none | ini: [Rendering] Gamma

0.60-0.70 is likely best for visibility (the ideal depends on your monitor a bit), but will look a bit washed-out. 0.00 is the natural value (contrary to the in-game tooltip and what you get if you reset to defaults in-game), which looks pleasant but can make it tough to see at night. Boosting your monitor’s brightness will give a nicer-looking image than using this. It can be worth modifying this setting according to the in-game day/night cycle.

Vertical Field of View and Wide View Mode

CPU impact: light | GPU impact: light | ini: [Rendering] VerticalFOV and UseAspectFOV

80-90 is meta and a good place to start, but many excellent players use very different FoVs for good reasons. You can use FoVs above 74 by setting them in the ini. Wide view mode is once again needed to get FoVs above 78 (this behavior keeps changing).

Being able to see more around you is a very noticeable advantage, but there are also concrete disadvantages to higher FoVs: you lose detail at the center of your screen quicker than you gain more peripheral vision, and the increased distortion makes it tougher to develop and maintain good muscle memory for snap aiming. The widest FoV you can tolerate is possibly but not automatically the best.

Sights and scopes stack with FoV changes, and being zoomed in with any sight will feel very different at 74 than 95. When in vehicles, FoV is very narrow and unaffected by these settings.

FoV affects CPU and GPU performance in opposite directions: wider FoVs are more CPU-heavy, narrower FoVs are more GPU-heavy.

Vertical Sync

CPU impact: none | GPU impact: uncategorizable | ini: [Rendering] VSync

Off is the much safer default for twitchy gameplay, but you can turn it on if tearing exists and bothers you. The biggest cost is that it limits your framerate to your monitor’s refresh rate, and PS2 infantry play at 60 fps isn’t very good. If you have a 144+ Hz monitor it’s mostly fine.

MaximumFPS and Smoothing

CPU impact: uncategorizable | GPU impact: none | ini (ini-only except Smoothing): [Rendering] MaximumFPS, Smoothing, and SmoothingMaxFramerate

Don’t use these if you can help it (and remove the default limit of 250 by setting MaximumFPS=0 in the ini). They’re on 5-millisecond granularity, which greatly limits their usefulness as only certain values work smoothly, and on top of that they’re currently bugged and result in a lot of stutter regardless. If you need a framerate limit, getting one through your graphics driver is the better bet. (For some other games this increases latency, but PS2 has no such problem.)

MaximumFPS can only be set as high as 500. Anything higher will act as 500. If you want your framerate entirely unlimited (and you probably do given the messy state the limiters are currently in), set MaximumFPS to 0.

Extreme framerates are valuable enough in PS2 that even if the limiters worked perfectly they would as often as not be worth avoiding.

SmoothingMaxFramerate and MaximumFPS put their delays at different places in the game’s work. SmoothingMaxFramerate gives more consistent frametimes (when not bugged) and nullifies the rate of fire bug, but its effect sometimes appears and disappears for unclear reasons, especially when set to very high framerates.

Smoothing’s behavior has recently changed, and it’s now not clear that it does anything except enable or disable the cap of SmoothingMaxFramerate. Related, SmoothingMinFramerate doesn’t seem to do anything anymore. Smoothing solely using the in-game option is rarely useful for anything because it limits your framerate to 60, and it needs SmoothingMaxFramerate to be set in the ini to fix that up.

Some reasons you might want a framerate limiter include…

Fog Shadows

CPU impact: none | GPU impact: heavy | ini: [Rendering] FogShadowsEnable

It only works on high graphics quality. If shadows aren’t enabled, it will cost as much performance as usual, but not have much visual effect. The proper visual effect persists (at a small performance cost) if you toggle shadows on and back off.

It improves visibility noticeably for some scenes, but is expensive enough to make this a questionable benefit, especially if you leave shadows fully enabled to make it work.

Ambient Occlusion

CPU impact: none | GPU impact: moderate | ini: [Rendering] AO

It only works on high graphics quality. It has little effect unless lighting quality is also high. Aside from the lighting quality issue, it looks like a fairly standard SSAO implementation, and is relatively heavier at high resolutions (common for SSAO). If you have lots of GPU power to spare then there’s nothing wrong with it.

(Without high lighting quality it appears to not have detailed normals to work with, and only approaches full strength on surfaces with very low specular power to compensate.)

Bloom Enabled

CPU impact: none | GPU impact: negligible | ini: [Rendering] BloomEnabled

It only works on high graphics quality. It includes chromatic aberration. Turning it on looks very nice, especially when a lot of particles are flying around, but can make it very tough to see at night.

Render Distance

CPU impact: heavy | GPU impact: moderate | ini: [Rendering] UseGlobalRenderDistance, RenderDistance, InfantryRenderDistance, GroundVehicleRenderDistance, and AirVehicleRenderDistance

If in doubt, I recommend either 225/225/6000/6000 or 448/448/6000/6000 global/infantry/vehicle/air.

There’s a bug that can sometimes glitch your terrain when changing render distances (and render distances change constantly if you don’t use global render distance). The quick fix if you run into it is to change your current render distance low->high->low. The solid fix is to set all render distances to 448 or above, but this costs a lot of performance as infantry. To avoid many opportunities for it, make sure global and infantry render distance are set to the same thing (this matters because global is used for the death cam).

The performance gains from render distances are unfortunately non-linear: the potential performance gains are very big, but you have to start cutting out actually relevant things to get the best of the gains. Sub-300 values are definitely worthwhile when they’re practical (and how practical they are depends on your playstyles). (At one point very low render distances didn’t give as much performance gain as they should have, but this has been fixed.)

For infantry, 300 is jarring at first, but mostly comfortable once you get used to it (with some exceptions like being in a Valk’s rumble seat). 225 makes you make more guesses about aircraft, tanks, and snipers that you can’t see, but they’re mostly still far enough away that they’re minor threats, and if they’re close enough to be major threats you can still fight them effectively. 150 starts to feel very harsh if you spend much time outdoors.

6000 is much more likely to be fine for vehicles and air, since they’re less sensitive to performance, the available gains are smaller (especially if you have lots of CPU cores), and the extra map context is much more useful (especially for newer players). Ground vehicles can tolerate it down to 500-600 and aircraft can tolerate it down to 1000-1200 in my experience (with some rough spots like Bastions), but I’m less experienced with these than infantry and may be missing some nuance.

Don’t use global render distance. It’s at best a quick patch to make the terrain glitch impossible, but setting the values otherwise right can do the same thing but better. Your render distance requirements are very different in different scenarios; work with that, not against it.

The actual minimum render distance is 100. The actual maximums are 5000 for Hossin, 3000 for Amerish, 3000 for Esamir, and 2500 for Indar (I haven’t checked Oshur). There’s no penalty for setting out-of-bounds values, it’ll just be as if you set it to the nearest in-bounds value.

Overall Quality

CPU impact: uncategorizable | GPU impact: uncategorizable | ini: [Rendering] OverallQuality

This just controls presets for the rest of the options. The available presets aren’t great. Custom doesn’t get you back to where you were before selecting something else, so be careful around this one.

Graphics Quality

CPU impact: moderate | GPU impact: heavy | ini: [Rendering] GraphicsQuality

This setting affects a great many things about the game’s rendering, and many other options don’t do anything unless this is set to high. If you want the game to look decent this is one of the first things you’ll want to turn up, but it isn’t cheap.

A few important effects of turning it up (mostly from low to medium) include getting rid of a lot of banding, adding normal mapping, adding bullet impact decals, adding a red outline around whoever killed you in the post-death screen, adding distortion effects to various surfaces (including in a bubble around cloaked sunderers which are much tougher to see on low), entirely reworking projectile graphics, and reworking some windows.

Texture Quality

CPU impact: none | GPU impact: moderate | ini: [Rendering] TextureQuality

The RAM and VRAM impacts of this are very large, and more important than the GPU impact. (Other settings have smaller effects on VRAM use and negligible effects on main RAM use.) Most systems can afford ultra, but high isn’t too awful to look at, and the RAM use difference between ultra and high is bigger than between high and low. If you have 8GB of main RAM, 2GB of VRAM, or have a particularly weak GPU, this might be important to turn down. If you have less main RAM or VRAM than that, it’s almost certainly important to turn down.

It is often said that ultra is good because downscaling the textures costs some CPU time and may add some stutters. I don’t doubt that this was true at some point in the game’s history, but it isn’t at all how game texturing generally works and all indications are that PS2 currently has no such problem.

Lighting Quality

CPU impact: none | GPU impact: moderate | ini: [Rendering] LightingQuality

It only works on high graphics quality. It only has two settings, contrary to the in-game selector (medium is actually low). High makes many surfaces’ highlights less sharp, makes foliage look much nicer, and is necessary for ambient occlusion to be fully effective.

Shadow Quality

CPU impact: heavy | GPU impact: heavy | ini: [Rendering] ShadowQuality

If performance is a problem, turning shadows off entirely is the biggest single thing you can do to fix it. Almost nobody has a CPU fast enough to make this unimportant.

Low and medium are the same, contrary to the in-game tooltip; they keep CPU impact down a bit (but not enough) compared to the other settings by only rendering shadows very close to the player. Medium -> high is mostly a draw distance boost and has a larger CPU-side cost, and high -> ultra is mostly a resolution boost and has a larger GPU-side cost. Ultra is a bit visually glitchy in some areas.

There’s an additional shadow map used for fog shadows which stays enabled if you turn shadows on and then back off again without rebooting the game, regardless of whether you have fog shadows enabled.

Effects Quality

CPU impact: none? | GPU impact: none? | ini: [Rendering] EffectsQuality

I haven’t been able to pin down what, if anything, this does in the current version of the game. I also see no performance impact.

Terrain Quality

CPU impact: none? | GPU impact: none? | ini: [Rendering] TerrainQuality

I haven’t been able to pin down what, if anything, this does in the current version of the game. I also see no performance impact.

Flora Quality

CPU impact: light | GPU impact: moderate | ini: [Rendering] FloraQuality and [Terrain] RenderFlora

Low and medium draw extra flowers and grass in a small radius around the player, and high adds rocks. Some of the rocks on high look a little too much like tank mines (or could hide tank mines) and it makes it a lot tougher to run vehicles without Sweeper HUD.

Model Quality

CPU impact: none? | GPU impact: none | ini: [Rendering] ModelQuality

I can’t get any sign of life out of this one now, and suspect it’s been disconnected. When it did work it had a significant effect on CPU-side performance, and it already had some determinism issues, so it might still be worth experimenting with. If you can get it to do anything, I’d love to hear about it.

Particles

CPU impact: moderate | GPU impact: moderate | ini: [Rendering] ParticleLOD

The GPU-side performance impact of low->medium is small, medium->high is moderate, and high->ultra is sometimes extremely heavy (like on smoke-filled scenes).

Higher settings render tracers at longer ranges (which is very useful for some vehicle and air targeting, but no big deal if you mostly play infantry and don’t snipe) and add a few extra effects on for instance lift pads. High adds ambient particles (blowing leaves and dust), which can be very annoying, enough to make medium a better default if you don’t need the long-range tracer rendering. Ultra seems to render particles at full resolution instead of half, which has a nice crisp look but is heavy on GPUs. Ultra also makes some cues tougher to see, especially on low graphics quality.

When graphics quality is low, ultra particles have some visual glitches, but also give a particularly uncluttered view in many ways. The exact effects with that combination don’t seem entirely consistent. If you have trouble telling the faction of beacons, this is probably why.

A trick to get tracers further out without the rest of the clutter is to make your ini read-only, put ParticleLOD 0 or 1 (low or medium) in the ini, and when you get into the game switch particles to high or ultra. Switch it back down before changing continents and up again on the other side, or else more parts of the setting will take effect.

Water Reflections and Object Reflections

CPU impact: none | GPU impact: heavy | ini: [Rendering] WaterQuality and SSLRQuality

These are screen-space reflections. They have the same fairly high performance impact regardless of whether any reflective surfaces are in the scene, and the performance impact from the two settings stacks. Object reflections don’t apply to as many objects as you would hope. Low is almost as heavy as high (for both of them), but low object reflections’ effect becomes extremely subtle, and low water reflections don’t seem to have any visible effect at all.

They could become nice if RPG adds some kind of early exit so that they’re cheap on non-reflective surfaces (or optimizes them in some other way), but as-is the performance cost is way too high for the small visual improvement.

Anti-Aliasing

CPU impact: none | GPU impact: moderate | ini: [Rendering] AAQuality

None of these options are particularly good at removing aliasing (TAA ordinarily might be but seems to still be bugged). Whatever you like the look of is fine. Edge AA’s performance cost is negligible, while FXAA’s and TAA’s are non-trivial. Edge AA is the only one that works on low graphics quality. FSR and DLSS override this setting.

FSR and DLSS

CPU impact: none | GPU impact: extreme | ini: [Rendering] FSRQuality, FSRSharpness, DLSSQuality, and DLSSSharpness

If you need to lighten the load on your GPU, this is the best way to do it (similar to but better than render quality). Unfortunately, since TAA is nonfunctional FSR is nowhere near as good as it should be. It’s got a crisp, aliased look. (This is FSR1 and it’s thoroughly dependent on TAA to deliver the results intended by AMD.)

DLSS over-softens certain surfaces, but it’s the only high-grade anti-aliasing in the game right now. Its performance gains are smaller than FSR’s.

When FSR is set to quality, some kind of bug costs a lot of performance instead of improving it. Set it to balanced or performance instead.

DLSS can still be enabled on cards that don’t support it, in which case it acts like basic scaling via render quality.

Sharpness can be set to whatever you think looks good. Higher sharpness will exaggerate the aliasing problems.

When enabled, these override your render quality and anti-aliasing settings.

Mouse sensitivities

CPU impact: none | GPU impact: none | ini: [General] *MouseSensitivity

It’s mostly best to think about mouse sensitivities in terms of how many centimeters you have to move your mouse to do a 360 in-game (cm/360). Most excellent players use something in the 15 to 50 range for hipfire and 40 to 100 for ADS. Faster sensitivities than this (so sub-15 hipfire) cost a lot of aim precision and are tough on your wrist. If you’re used to something very fast, slowing down (20 cm/360 hipfire is a good starting point) and doing flicks with your whole arm rather than your wrist may feel awkward at first, but it’s generally worth spending some time getting used to.

If mousepad space is a problem, it can be good to think of sensitivity in terms of how much rotation one full sweep of the mousepad gives you. 1 to 1.5 rotations is a good ballpark for small mousepads, depending a lot on your playstyles.

It’s much more obvious when your sensitivity is too slow than too fast, so setting your sensitivities as slow as you can while keeping flicks comfortable is a good bet. Since flicks will always feel worse when you first slow down your sensitivity, a good way to tune according to this is to set your sensitivity very slow (say 35-40 cm/360 hipfire if you’re used to something on the fast side or 55+ if you’re used to something slower), and then gradually speed it back up over at least a few hours of gameplay until flicks feel right.

A particularly good ADS sensitivity is 1.35x (with a 1x sight) or 2x (with a 2x sight) your hipfire cm/360. This means when focusing on the center of your screen and making small movements, your hipfire and ADS sensitivities line up perfectly, so the muscle memory for tracking a moving target stays the same either way. There are good reasons to set your ADS sensitivity slower than that, but rarely faster.

Sensitivity calculators exist for PS2, but due to a collection of at least four bugs (three of which I’ve written up the details of here and the last of which I don’t have any good leads on) PS2 sensitivities are a bit inconsistent, so I don’t recommend taking a calculator’s word for it. It’s better to measure this physically.

To make tuning quick and easy across most games, what I do is set sensitivity so that one full sweep across my mousepad causes 1.25 hipfire rotations in-game, which with my 45 cm wide mousepad and 6 cm wide mouse means 39 cm of travel for 1.25 turns or 31.2 cm/360. This method doesn’t have much granularity, but that’s usually fine.

0.625 turns per sweep (2x sight) for ADS is more awkward, but this can be covered by making two full sweeps for 1.25 turns. If you tune this for 2x the cm/360 with a 2x sight it will give aligned results when using 1x sights too (1x sights are awkward since they’re actually 1.35x).

All else equal, slower sensitivities go well with lighter mice and faster sensitivities go well with heavier mice. Laser mouse sensors inherently have trouble tracking accurately at high speeds, and if you have one you may want to keep your sensitivity faster. Laser sensors aren’t common in gaming mice anymore (for good reason).

There are rarely good reasons to set your mouse higher than 1600 CPI (DPI), and sensor performance tends to degrade in one way or another if you go much past that. If you end up over 1600 CPI, consider boosting your in-game sensitivity instead.

High in-game sensitivity results in steppy movement, as each count from the mouse moves the camera by a large angle, so if your in-game hipfire sensitivity ends up over about 0.2 to 0.25 consider boosting your mouse’s CPI instead.

Maximum Voice Channels

CPU impact: varies | GPU impact: none | ini: [Sound] MaxVoices

This controls the total number of sounds that can be playing at any given time. The in-game maximum of 128 is good in most cases (it’s effectively free if you have sufficient CPU cores), but if you’re short on CPU cores turning this down can help. If you have only four logical cores, turning this down may be critical for the game to run reliably.

If you turn this very far down, you may want to disable as many sounds as possible to leave more channels for critical sounds.

Use Raw Mouse Input, Reduce Input Lag, and Mouse Acceleration

CPU impact: none or negligible | GPU impact: none | ini: [General] MouseRawInput, ReduceInputLag, and MouseSmoothing

These don’t seem to do anything anymore. If reducing input lag sounds cool, check out the latency tuning section. If you want to set these just in case, try on/on/off respectively.

Motion Blur

CPU impact: none | GPU impact: none? | ini (ini-only): [Rendering] MotionBlur

This is still in the ini, but was removed from in-game settings a bit back and seems to have no effect.

GPU Particle Quality

CPU impact: none | GPU impact: none | ini: n/a

It’s been many years since this setting did anything.

ParticleDistanceScale

CPU impact: none? | GPU impact: none? | ini (ini-only): [Rendering] ParticleDistanceScale

Its main functionality was removed a while back, and at the same time it was removed from the default ini (seen on new installs or if you delete the ini and let the game replace it). It almost certainly does nothing.

UseLod0a

CPU impact: none? | GPU impact: none? | ini (ini-only): [Rendering] UseLod0a

I haven’t been able to pin down what, if anything, this does in the current version of the game. I also see no performance impact.

Config file snippets

To use these, copy and paste one over the matching portion of your UserOptions.ini (make a backup first if you want). You’ll likely want to re-edit a couple of things to taste, particularly FullscreenWidth and FullscreenHeight (to match your monitor’s native resolution) and master volume. (Some things that don’t affect performance are included to make copying simple.) If you have to turn resolution up to match your monitor and don’t have an especially powerful GPU, consider using FSR or DLSS to correct for it.

Competitive potato

This is a good starting point for competitive combined-arms gameplay. Contrary to the potato name, it does assume a reasonably capable computer in a couple of ways. It is vulnerable to the terrain glitch (see render distances for details).

CompetitivePotato.ini
[Display]
Mode=Fullscreen
FullscreenMode=Fullscreen
FullscreenRefresh=0
FullscreenWidth=1920
FullscreenHeight=1080
WindowedWidth=1920
WindowedHeight=1030
Maximized=0
RenderQuality=1.000000

[Rendering]
OverallQuality=-1
GraphicsQuality=1
AAQuality=-1
SSLRQuality=0
FSRQuality=-1
FSRSharpness=0.250000
DLSSQuality=-1
DLSSSharpness=0.250000
Tessellation=0
WaterQuality=0
UnderwaterGodRaysQuality=2
TextureQuality=0
ShadowQuality=0
LightingQuality=1
EffectsQuality=1
TerrainQuality=1
FloraQuality=4
ColorBlindFilterType=0
ColorBlindFilterAmount=1.000000
ColorBlindFilterStrength=1.000000
ModelQuality=1
RenderDistance=225.000000
Gamma=0.700000
VerticalFOV=84
ParticleLOD=1
FogShadowsEnable=0
MotionBlur=0
VSync=0
AO=0
MaximumFPS=0
UseLod0a=0
BloomEnabled=0
InfantryRenderDistance=225.000000
GroundVehicleRenderDistance=6000.000000
AirVehicleRenderDistance=6000.000000
UseGlobalRenderDistance=0
UseAspectFOV=1
Smoothing=0
SmoothingMaxFramerate=200

[Controls]
CameraAutoAdjustment=1
ClickToMove=0
ClickToMoveRightButton=0

[Sound]
Master=0.250000
Music=0.000000
Game=1.000000
Dialog=0.700000
UI=1.000000
UseFloat32Output=0
ExclusiveMode=0
HitIndicator=1
LowAmmoIndicator=1
VehicleChatter=1
IdleMusic=1
UseHighQualityReverb=0
MaxVoices=128

[Terrain]
RenderFlora=Off

Mild potato

This one is more balanced. It’s missing the last bit of performance and visual clarity for competitive gameplay, but it’s close and looks far more modern and polished.

MildPotato.ini
[Display]
Mode=Fullscreen
FullscreenMode=Fullscreen
FullscreenRefresh=0
FullscreenWidth=1920
FullscreenHeight=1080
WindowedWidth=1920
WindowedHeight=1030
Maximized=0
RenderQuality=1.000000

[Rendering]
OverallQuality=-1
GraphicsQuality=3
AAQuality=-1
SSLRQuality=0
FSRQuality=-1
FSRSharpness=0.250000
DLSSQuality=-1
DLSSSharpness=0.250000
Tessellation=0
WaterQuality=0
UnderwaterGodRaysQuality=2
TextureQuality=0
ShadowQuality=0
LightingQuality=1
EffectsQuality=1
TerrainQuality=1
FloraQuality=4
ColorBlindFilterType=0
ColorBlindFilterAmount=1.000000
ColorBlindFilterStrength=1.000000
ModelQuality=1
RenderDistance=448.000000
Gamma=0.400000
VerticalFOV=74
ParticleLOD=1
FogShadowsEnable=0
MotionBlur=0
VSync=0
AO=0
MaximumFPS=0
UseLod0a=0
BloomEnabled=0
InfantryRenderDistance=448.000000
GroundVehicleRenderDistance=6000.000000
AirVehicleRenderDistance=6000.000000
UseGlobalRenderDistance=0
UseAspectFOV=1
Smoothing=0
SmoothingMaxFramerate=200

[Controls]
CameraAutoAdjustment=1
ClickToMove=0
ClickToMoveRightButton=0

[Sound]
Master=0.250000
Music=0.000000
Game=1.000000
Dialog=0.700000
UI=1.000000
UseFloat32Output=0
ExclusiveMode=0
HitIndicator=1
LowAmmoIndicator=1
VehicleChatter=1
IdleMusic=1
UseHighQualityReverb=0
MaxVoices=128

[Terrain]
RenderFlora=Off

Extra potato

This is the one for weak computers. Depending on which components are giving you trouble, you can likely raise a setting or two from here with little downside. Don’t use this one if you have a fast computer, you’ll lose more than you gain.

Try smoothing both on and off, and maybe with a further reduced SmoothingMaxFramerate if you rarely reach 100 fps. Whether it’s useful depends a lot on the exact issues your system is having, as well as a bit of personal preference.

ExtraPotato.ini
[Display]
Mode=Fullscreen
FullscreenMode=Fullscreen
FullscreenRefresh=0
FullscreenWidth=1920
FullscreenHeight=1080
WindowedWidth=1920
WindowedHeight=1030
Maximized=0
RenderQuality=1.000000

[Rendering]
OverallQuality=-1
GraphicsQuality=1
AAQuality=-1
SSLRQuality=0
FSRQuality=2
FSRSharpness=0.250000
DLSSQuality=-1
DLSSSharpness=0.250000
Tessellation=0
WaterQuality=0
UnderwaterGodRaysQuality=2
TextureQuality=3
ShadowQuality=0
LightingQuality=1
EffectsQuality=1
TerrainQuality=1
FloraQuality=4
ColorBlindFilterType=0
ColorBlindFilterAmount=1.000000
ColorBlindFilterStrength=1.000000
ModelQuality=1
RenderDistance=150.000000
Gamma=0.700000
VerticalFOV=84
ParticleLOD=0
FogShadowsEnable=0
MotionBlur=0
VSync=0
AO=0
MaximumFPS=0
UseLod0a=1
BloomEnabled=0
InfantryRenderDistance=150.000000
GroundVehicleRenderDistance=600.000000
AirVehicleRenderDistance=1200.000000
UseGlobalRenderDistance=0
UseAspectFOV=1
Smoothing=0
SmoothingMaxFramerate=100

[Controls]
CameraAutoAdjustment=1
ClickToMove=0
ClickToMoveRightButton=0

[Sound]
Master=0.250000
Music=0.000000
Game=1.000000
Dialog=0.700000
UI=1.000000
UseFloat32Output=0
ExclusiveMode=0
HitIndicator=1
LowAmmoIndicator=1
VehicleChatter=0
IdleMusic=0
UseHighQualityReverb=0
MaxVoices=48

[Terrain]
RenderFlora=Off