[SAVI] Strategic Arms Venture, Inc JetpackT304 Connery

This is cross-posted at zzyzx.sh. Both versions will stay up-to-date.

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

One hardware note deserves mention here: PS2 hates being stuck with single-channel RAM, as unfortunately found in many laptops. It’s often easy and cheap to upgrade, and is sometimes the difference between barely playable and mostly comfortable.

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.

Changelog

 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 superscalar.gg (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:

  • Latency (input-to-display, not network) is effectively added to your reaction time in games. Less latency means you get more peeker’s advantage, others get less peeker’s advantage against you, you can snap to targets quicker, and it takes you less time to correct your aim after an enemy jukes.

  • Your brain has to do significant work to compensate for latency and make everything feel natural, and keeping latency lower and more consistent means there’s less of that work to be done, which means you’re more comfortable and less distracted. This one bothers some people much more than others, and is safe to ignore if it doesn’t bother you.

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:

  • Latency depends strongly on framerate.

  • Higher framerates make it easier to visually track fast-moving objects and quick camera motion, improving your target acquisition and aiming.

  • A long-standing bug reduces your rate of fire depending on your framerate. I’ve written up the details here.

  • There’s a one-frame mismatch between your aimpoint and crosshair, which makes aiming (especially CQC bolting) less intuitive at lower framerates. Also, the higher your framerate is the more PS2’s aiming matches aim trainers’ behavior.

  • Wall-jumping doesn’t work if your framerate isn’t high enough (over 60), and the higher your framerate is the easier it gets.

Mouse tuning is important because:

  • If your mouse’s behavior isn’t consistent, you’ll have a much tougher time building good muscle memory for aiming.

  • Even with no consistency issues, your mouse’s sensitivity has a large impact on your ability to aim precisely and quickly.

  • Excessive mouse sensitivity is tough on your wrist, and wrists don’t heal well.

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 Nvidia’s drivers are more inherently stuttery with PS2 and LLM ultra has steeper downsides.

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. There’s one other exception: if you use an integrated GPU, CPU-heavy and GPU-heavy things are more interchangeable than is obvious, since PS2’s CPU work uses a lot of memory bandwidth. This goes double if you have single-channel RAM.

Display Mode

CPU impact: varies  GPU impact: varies  Recommend: true fullscreen  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  Recommend: monitor’s resolution and Render Quality 100%  ini: [Display] FullscreenWidth, FullscreenHeight, WindowedWidth, WindowedHeight, and RenderQuality

If in doubt, resolution should be set to your monitor’s native resolution. Render quality offers plenty of further room to tweak. 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.

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, 3840×2160 at 50% RQ is mostly equivalent to 1920×1080 at 100% RQ.

Decreasing resolution does get you slightly more performance than decreasing render quality, and if you have an extremely weak GPU this may be worthwhile.

Changing resolution is the only way to change the game UI’s size. In some cases, you may need to reduce resolution to make the UI readable.

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  Recommend: 0.20-0.50  ini: [Rendering] Gamma

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. Depending on your monitor, higher values look washed out but can make it much easier to see. Boosting your monitor’s brightness will give a nicer-looking image than using this, and the correct value for best visibility depends on your monitor (but past about 0.5 there are almost always diminishing returns). 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  Recommend: 70-95  ini: [Rendering] VerticalFOV and UseAspectFOV

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. 80-90 is meta and a good place to start. 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.

Don’t mess with your FoV (or mouse sensitivity) constantly. Don’t be afraid to mess with them if you need to, but try to find something that’s good for you and stick to it; it’ll take a few hours of gameplay to get used to even small changes properly, especially between wider FoVs.

Vertical Sync

CPU impact: none  GPU impact: uncategorizable  Recommend: off  ini: [Rendering] VSync

If you have adaptive sync (Freesync or G-Sync) available, you probably want this off (adaptive sync won’t work otherwise). Otherwise, off is much safer for twitchy gameplay, but you can turn it on if the tearing 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  Recommend: MaximumFPS 0 and Smoothing off  ini (ini-only except Smoothing): [Rendering] MaximumFPS, Smoothing, and SmoothingMaxFramerate

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

If you’re into competitive infantry play, take care to not hurt your average framerates too much with these caps. Higher framerates are usually more valuable in PS2 than the benefits these can give.

MaximumFPS can only be set as high as 500. Anything higher will act as 500. If you want your framerate entirely unlimited, set MaximumFPS to 0.

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.

The granularity of these limits has been greatly improved recently, and it’s now fine to set them to any value.

MaximumFPS is most useful to…

  • keep your crosshair-aimpoint gap more consistent. Your actual aimpoint lags a frame behind your crosshair in PS2, which especially makes CQC bolting feel very different than it would in other games (or in aim trainers). If you’d prefer this gap to be consistent rather than as small as possible, you may want to put some cap on your framerate.

  • reduce power used and heat generated on lightweight scenes if you have a very fast system.

  • if you use an Nvidia graphics card with LLM off, a cap can be set to avoid framerates where you would get GPU-bound, and therefore keep latency good. This will be near-impossible to tune with ParticleLOD=3/4 (use 0-2 instead). This is almost always better solved by using LLM on or ultra.

SmoothingMaxFramerate is most useful to…

  • increase rate of fire. This only works when you’re actually limited by SmoothingMaxFramerate, so this is awkward to tune and not entirely practical.

  • alleviate some symptoms of insufficient CPU cores, like audio breakup, inconsistent mouse sensitivity, and in some cases nonfunctional items or abilities. This probably needs to be a noticeably harsh limit to be effective, though.

  • keep your frametimes more consistent, if you find that more comfortable than higher framerates. (This one’s better at taming setups that have large stutter issues to start with, but there are limits to how good it can get.)

Framerate limits provided by your graphics driver are most useful to…

  • keep your frametimes more consistent, if you find that more comfortable than higher framerates. (This one can make frametimes extremely consistent under the right conditions, but may not help as much as expected on systems with certain larger consistency problems.)

  • stay within your monitor’s adaptive-sync range, if you don’t want to go above it.

Fog Shadows

CPU impact: none  GPU impact: heavy  Recommend: off  ini: [Rendering] FogShadowsEnable

It only works on high graphics quality. Contrary to the patch notes, I see no dependence on shadow quality. It improves visibility noticeably for some scenes, but is expensive enough to make this a questionable benefit unless you have GPU power to spare.

Ambient Occlusion

CPU impact: none  GPU impact: moderate  Recommend: off  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  Recommend: off  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.

Motion Blur

CPU impact: none  GPU impact: moderate  Recommend: off  ini: [Rendering] MotionBlur

It only works on high graphics quality. It hurts your ability to pick important details out of fast-moving scenes, and is generally an awful idea if you’re playing competitively at all.

Overall Quality

CPU impact: uncategorizable  GPU impact: uncategorizable  Recommend: custom  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  Recommend: any  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  Recommend: ultra or high  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  Recommend: any  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  Recommend: off  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 computer fast enough that this doesn’t matter.

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.

Effects Quality

CPU impact: none?  GPU impact: none?  Recommend: any  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?  Recommend: any  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  Recommend: any non-high  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  Recommend: low  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  Recommend: medium or 4  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.

Setting ParticleLOD=4 (one above ultra) in the ini is like ultra but with less clutter and a bit less GPU weight. Unfortunately it has a few visual glitches.

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.

GPU Particle Quality

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

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

Render Distance

CPU impact: heavy  GPU impact: moderate  Recommend: 225/225/6000/6000 or 448/448/6000/6000  ini: [Rendering] UseGlobalRenderDistance, RenderDistance, InfantryRenderDistance, GroundVehicleRenderDistance, and AirVehicleRenderDistance

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.

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

CPU impact: none or negligible  GPU impact: none  Recommend: on/on/off respectively  ini: [General] MouseRawInput, ReduceInputLag, and MouseSmoothing

These don’t seem to do anything anymore, and the recommendations are just-in-case rather than something that clearly matters. If reducing input lag sounds cool, check out the latency tuning section.

Mouse sensitivities

CPU impact: none  GPU impact: none  Recommend: see text  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.

Don’t mess with these constantly; don’t be afraid to mess with them if you need to, but try to find something that’s good for you and stick to it. It’ll take a few hours of gameplay to get used to even small changes properly (and this applies to field of view as well).

Maximum Voice Channels

CPU impact: varies  GPU impact: none  Recommend: 128  ini: [Sound] MaxVoices

This controls the total number of sounds that can be playing at any given time. If you turn this very far down, you may want to disable as many sounds as possible to leave more channels for critical sounds.

This doesn’t seem to noticeably affect any frame-synced work, so it’s just competing for cores (and potentially memory bandwidth, but this is unlikely to ever be noticeable given the nature of the work). It doesn’t use all that much CPU time, and should have a negligible impact at high core counts, but likely a significant one at low core counts. If you have only four logical cores, turning this down may be critical for the game to run reliably.

ParticleDistanceScale

CPU impact: none?  GPU impact: none?  Recommend: n/a  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?  Recommend: 0  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.

Reticle color

CPU impact: none  GPU impact: none  Recommend: 1 and 65280 respectively (or personal preference)  ini (ini-only): [UI] TintModeReticuleStyle and TintModeReticuleColor

You can use this to override the reticle color of all your sights and scopes. Many of the best have colors that aren’t very visible, and need this to fix them.

To use this, set TintModeReticuleStyle to 1 and TintModeReticuleColor to a hex color code converted to decimal. For instance, #0000FF would be written in the ini as 255, and #00FFFF would be written as 65535. I use green (#00FF00, 65280).

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 turning RenderQuality down 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
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.500000
VerticalFOV=82
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=192

[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
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.350000
VerticalFOV=78
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=192

[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 96 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=0.500000

[Rendering]
OverallQuality=-1
GraphicsQuality=1
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.500000
VerticalFOV=78
ParticleLOD=0
FogShadowsEnable=0
MotionBlur=0
VSync=0
AO=0
MaximumFPS=0
UseLod0a=0
BloomEnabled=0
InfantryRenderDistance=150.000000
GroundVehicleRenderDistance=600.000000
AirVehicleRenderDistance=1200.000000
UseGlobalRenderDistance=0
UseAspectFOV=1
Smoothing=0
SmoothingMaxFramerate=96

[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