Star Citizen Performance Optimization - GrimHexFreeNavy/GHFN_UTIL GitHub Wiki
Performance Metrics
Note on NOTES: Notes in this doc are comparisons against the previous revision of this document. Two major changes between Rev 1 and 2 are the release of the Gen 12 renderer in Star Citizen, and the upgrade to the 13900k in the test system
Test System Specs
- CPU: Intel Core i9 13900K
- Memory: 64GB 6000 MHz
- Video Card 1: GForce 2080 Ti
- Video Card 2: GForce 2080 Ti
- Monitor: Alienware AW3420DW (120Hz)
For consistency we'll be pinning SC to a single GPU
All FPS readings were taken at New Babbage in habitation
The setting that will be discussed in this document are specific to the system being tested on. They will act as a good starting place for your own tuning but may need to be modified based on need.
Metric Monitors
The majority of Star Citizen is build on Lumberyard (which is based on CRYENGINE) so we can use their console commands and performance guides to start building a profile of our system to determine the best settings we can get
All performance measurements are taken using the in game analytics that can be activated with r_displayinfo 3
as seen below
There's a lot of data returned by display info, but the important bits are on line 1, 4, 7, 8, 9, 11, 12
- Line1: Current FPS [Lower 5th percentile . . . upper 95th percentile] . . . average latency
- Current FPS is the number of frames we’re rendering this second
- Lower 5th percentile is saying that 5% of the time we’re rendering under 27 frames per second (average)
- Upper 95th percentile is saying that 95% of the time we’re render above 43 frames per
- Average latency: The amount of time it takes to render a single frame in its entirety, the lower this number the higher the FPS
- Line4: This is the percentage of time you’re above an FPS range
- |10FPS|20FPS|30FPS|40FPS|50FPS|60FPS|70FPS – the screenshot above is saying the following:
- 100% of the time above 10 FPS
- 100% of the time above 20 FPS
- 100% of the time above 30 FPS
- 99.7% of the time above 40 FPS
- 94.6% of the time above 50 FPS
- 0.2% of the time above 60 FPS
- 0.11% of the time above 70 FPS
- |10FPS|20FPS|30FPS|40FPS|50FPS|60FPS|70FPS – the screenshot above is saying the following:
- Line7: Your net ping: this can be a leading indicator of a network disconnect (10k)
- Line8: Bandwidth indicator in / out: This can be a leading indicator of a server crash (30k)
- Line9: System memory usage: This metric can tell your system memory is a bottleneck
- Line11: GPU memory usage: this metric can tell you if your GPU memory is a bottleneck
- Line12: CPU Usage: FaultPerSecond can indicate an CPU bottleneck or other CPU related issue.
Windows Power Settings
Windows offers a variety of power control options, these options allow the OS to manage power consumption by tuning the parking index, turbo index and frequency scaling index of the CPUs cores. By default, Windows is set to Balanced and gives the user an option to change that to High performance or Power saver. Below are the scaling indexes per setting.
Power Plan | Core Parking Index | Turbo Boost Index | Frequency Scaling Index |
---|---|---|---|
Power Saver | 100% | 0% | 5% |
Balanced | 100% | 60% | 5% |
High Performance | 100% | 100% | 100% |
These setting are all good as they allow the system to manage power consumption at a very fine grained level which is great for laptops, however, there’s a secret 4th option introduced in Windows 10 that takes a more sledge hammer approach to power management, and is geared toward high end gaming PCs which turns off the fine grain management and opens up max power to the entire system in an attempt to reduce micro latencies, Ultimate performance. In terms of the above indexes it’s exactly the same as High performance, the only difference being that it doesn’t manage power at all, it’s always running at max power and never trying to save any power.
Enable Ultimate Performance Profile
You can turn enable the Ultimate performance profile by running the following in PowerShell
powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61
Set Ultimate Performance
After enabling the profile you just need to select it in power management options. This power setting should net you a few additional FPS in higher end systems.
Windows Graphics Optimization Settings
Windows 10 introduced a way to bind applications to a specific GPU (High Performance, or Power Saving) This was introduced to allow the system to move applications between available graphics cards to save power or battery life. If your system has an onboard GPU (northbridge) or you’re on a laptop you can get some FPS increases by pinning the Star Citizen App to the high performance GPU, this can be done by doing the following:
- Open Settings > System Settings > Graphics
- Find the Star Citizen App and open it’s graphics options
- Select High Performance and click ‘save’
Nvidia Control Panel
Nvidia Control Panel allows us to set global and program specific settings, turning on or off specific GPU command sets to get us performance or visual gains. These settings are specific to the 2080 TI, you may have more, or less, settings based on the GPU in your system. We’ll start by setting global setting which I feel are the best settings currently available for any game / desktop workload, we’ll then drill into the program specific setting and make some tweaks to get us a bit better performance specifically in Star citizen. I’ve included Performance metrics at each step to show the gains I made on the test system during the process.
With all default settings in Nvidia control panel and Star Citizen the test system was getting about 47FPS, with the lower 5% of readings being below 34 FPS and the upper 95% being above 63 FPS
NOTE: This is almost a 10 FPS increase over V1 of this guide, this is mostly due to the newer CPU in our test system, but don’t want to understate\ the strides CIG has made here with Gen12 and how it’s effected system performance.
Average FPS: 40 -> 47
Lower 5th: 27 -> 34
Upper 95th 43 -> 63\
With only the global settings set the test system was getting about 50FPS, with the lower 5% of readings being below 37 FPS and the upper 95% being above 73 FPS. An average gain of 7 FPS.
NOTE: This is where we start to see the changes with Gen 12 come into play, our lower 5th and upper 95th have moved farther apart since we’re less CPU > bound and are putting more pressure on the GPU (current settings put the 2080 at 97% utilization, with the CPU running at 37%) Gen 12 has moved the >bottleneck to the GPU for this system.
Average FPS: 43 -> 50
Lower 5th: 33 -> 37
Upper 95th: 44 -> 73
With the program setting layered overtop the global settings our test system was getting about 46 FPS with the lower 5% of readings being below 36FPS and the upper 95% being above 43 FPS, netting in a slight 3FPS gain over the previous test, adding v-sync fast did generate a bit of instability in the FPS readings.
NOTE: The addition of v-Sync here doesn’t really effect our average or top end FPS, but does add a good amount of instability to our lower 5th which now swings wildly between 2 FPS and 40 FPS.
Average FPS: 46 -> 52
Lower 5th: 36 -> 40
Upper 95th: 43 -> 72
With game setting included our test system was getting about 63 FPS with the lower 5% of readings being below 40 FPS and the upper 95% being above 80 FPS
NOTE: Turning off volumetric clouds still offers the largest increase over any setting.
Average FPS: 58 -> 63
Lower 5th: 40 -> 40
Upper 95th: 65 -> 80
Adjust Desktop Size and Position
On the scaling tab, turn off ‘Override the scaling mode set by games and programs’
3D Settings
Adjust image settings with preview
This option should be set to ‘Use the advanced 3D image settings’
NOTE: The settings in the below table depend heavily on the GPU you have installed, these settings and the order they are in are for an Nvidia 2080Ti, if you have another card you may see more or fewer settings, in different orders.
Global
Setting | Default | Recommended | Description |
---|---|---|---|
Image Scaling | Off | Off | This feature enables GPU scaling and sharpening for your application |
Ambient Occlusion | Off | Off | Ambient Occlusion add realism to scenes by reducing the intensity of ambient light on surfaces blocked by surrounding objects. It enhances depth perception by providing a soft shadow effect for objects based on their placement in the scene. This feature is not supported by all applications; refer to program settings to view per-application support. NVIDIA’s Screen space ambient Occlusion algorithm is not compatible with DX12 games |
Anisotropic Filtering | Application-controlled | Off | Anisotropic texture filtering affects the crispness of textures |
Antialiasing - FXAA | Off | Off | FXAA is a fast shader-based post-processing technique that can be applied to any program, including those which do not support other forms of hardware-based antialiasing. FXAA can be used in conjunction with other antialiasing settings to improve overall image quality. Note that enabling this setting globally may affect all programs rendered on the GPU, including video player and windows desktop |
Antialiasing - Gamma Correction | On | Off | Antialiasing – Gamma correction enables gamma correction for antialiasing |
Antialiasing - Mode | Application-controlled | Off | Antialiasing mode allows you to determine how antialiasing is applied in your 3D application |
Antialiasing - Setting | Application-controlled | None | Antialiasing is a technique used to minimize the “stair step” effect sometimes seen along the edges of 3D objects |
Antialiasing - Transparency | Off | Off | Allows you to minimize the visible aliasing on the edges of images with transparent textures |
Background Application Max Frame Rate | Off | 20FPS | Sets the maximum frame rate that the GPU will render a game or 3D application running in the background |
CUDA - GPUs | All | All | Allows you to specify which GPUs can be used by CUDA applications, including PhysX |
DSR - Factors | Off | Off | Dynamic Super Resolution (DSR) produces smoother images by rendering a game at a high resolution then downscaling it to the native resolution of the display using advanced filtering. Dynamic Super Resolution can be applied to any game and can be used with other antialiasing setting to improve image quality |
DSR - Smoothness | Off | Off | Use the slider to control smoothness versus sharpness of the downscaled image |
Low Latency Mode | Off | Ultra | The Latency control reduces latency by limiting the number of frames the CPU can prepare before the frames are processed by the GPU |
Max Frame Rate | Off | Off | Sets the maximum frame rate that the GPU will render a game or 3D application. Limiting the frame rate can be useful for extending battery life or reducing system latency in certain scenarios |
Monitor Technology | < Monitor Specific Setting > | < Monitor Specific Setting > | Monitor Technology selects the technique used to control the refresh policy of an attached monitor |
Multi-Frame Sampled AA (MFAA) | Off | Off | Multi-Frame sampled AA works by re-programming coverage sample locations across pixels within the same frame, as well as across frames. This has the effects of making the overall sample pattern irregular which eliminates aliasing artifacts |
OpenGL Rendering GPU | Auto-select | Auto-select | Select the GPU to be used by OpenGL applications. Choosing a GPU that is part of an SLI or Mosaic group will effectively select every GPU in that group |
Power management mode | Optimal Power | Optimal Power | This feature allows you to set a preference for your graphics card’s performance level when running 3D applications |
Preferred refresh rate | Highest available | Highest available | Preferred refresh rate allows you to override the refresh rate in Fullscreen applications. It enhances image quality for applications such as games which do not allow setting refresh rate. This features is not supported for all applications; refer to Program Settings to view per-application support |
Shader Cache Size | Driver Default | 10 GB (depending on graphics card) | Controls the maximum amount of dis space the driver may use for storing shader compiles |
Texture filtering - Anisotropic sample optimization | Off | On | Anisotropic sample optimization limits the number of anisotropic samples used based on texel size. This setting only affects DirectX programs |
Texture filtering - Negative LOD bias | Allow | Allow | Some applications use negative LOD bias to sharpen texture filtering. This sharpens the stationary image but introduces aliasing when the scene is in motion |
Texture filtering - Quality | Quality | High performance | This setting allows you to simply decide if you would prefer performance, quality, or a balance between the two. The NVIDIA control panel will make all the appropriate texture filtering adjustments based on your preference |
Texture filtering - Trilinear optimization | On | On | Trilinear optimization improves texture filtering performance by allowing bilinear filtering on textures in parts of the scene where trilinear filtering is not necessary. This setting only affects DirectX programs |
Threaded optimization | Auto | Auto | Allows applications to take advantage of multiple CPUs |
Triple Buffering | Off | Off | Allows you to enable or disable triple buffering for OpenGL applications |
Vertical Sync | Use the 3d application settings | Off | Vertical sync is a collection of settings that control how the GPU render rate interfaces to the refresh rate of a monitor. This setting is applicable only when a display is connected to NVIDIA GPU |
Virtual Reality pre-rendered frames | 1 | 1 | Virtual Reality pre-rendered frames limits the number of frames the CPU can prepare before the frames are processed by the GPU. Lower latency is preferable for virtual reality head sets |
Virtual Reality - Variable Rate Super Same | Off | Off | This Variable Rate Super Sampling option targets image quality improvement by applying super sampling selectively on the central region of a frame where it matters most for a Virtual Reality Headset. As a pre-requisite the application needs to be profiled by NVIDIA and the MSAA enabled. The maximum super sampling factor that can get applied is limited by the level of MSAA used in the application. The option is available on NVIDIA Turing GPU architecture |
Program Settings
Setting | Default | Recommended |
---|---|---|
Image Scaling | Use global setting | use global setting |
Ambient Occlusion | Not supported for this application | Not supported |
Anisotropic filtering | Use global setting | use global setting |
Antialiasing - FXAA | Not support for this application | Not supported |
Anti aliasing - Gamma correct | Use global setting | Use global setting |
Antialiasing - Mode | Use global setting | Use global setting |
Antialiasing - Setting | Use global setting | Use global setting |
Antialiasing - Transparency | Use global setting | Use global setting |
Background Application Max Frame Rate | Use global setting | Use global setting |
CUDA - GPUs | Use global setting | Use global setting |
Low Latency Mode | Use global setting | Use global setting |
Max Frame Rate | Use global setting | 2 FPS under monitor max Hz |
Monitor Technology | Use global setting | Use global setting |
Multi-Frame Sampled AA (MFAA) | Use global setting | Use global setting |
OpenGL rendering GPU | Use global setting | Use global setting |
Power management mode | Use global Setting | Prefer Maximum Performance |
Preferred refresh rate | Use Global Setting | Use Global Setting |
Texture filtering - Anisotropic sample optimization | Use Global Setting | Use Global Setting |
Texture filtering - Negative LOD bias | Use Global Setting | Use Global Setting |
Texture filtering - Quality | Use Global Setting | Use Global Setting |
Texture Filtering - Trilinear optimization | Use Global Setting | Use Global Setting |
Threaded Optimization | Use Global Setting | Use Global Setting |
Triple Buffering | Use Global Setting | On |
Vertical Sync | Use Global Setting | Fast |
Virtual Reality pre-rendered frames | Use Global Setting | Use Global Setting |
Virtual Reality - Variable Rate Super Sample | Use Global Setting | Use Global Setting |
Disable Fullscreen Optimization on Game.exe Files
- Right-click the RSI Launcher desktop shortcut. Or go to the .exe directly in (install driver)\Program Files\Roberts Space Industries\RSI Launcher\RSI Launcher.exe and right-click the file.
- Click Properties.
- Click the Compatibility tab.
- Enable the option Disable Fullscreen Optimization.
- Click Apply.
- Navigate to (install driver)\Program Files\Roberts Space Industries\StarCitizen\Live\Bin64. Right-click the StarCitizen.exe file.
- Click Properties.
- Click the Compatibility tab.
- Enable the option Disable Fullscreen Optimization.
- Click Apply.
Star Citizen Game Settings
These settings are set in game under Options > graphics. These settings are entirely up to the user and will effect the look of the game, if you’re still getting poor performance after setting the external optimization you can come into the game settings and start turning things down until you get a good reading.
Setting | Default | Recommendation | Notes |
---|---|---|---|
Gama | 50 | 50 | |
Brightness | 50 | 50 | |
Contract | 50 | 50 | |
Resolution | Monitor native resolution | native | |
Window Mode | Full Screen | Borderless | This will make switching in and out of the game much easier |
Quality | Very High | Medium | This setting correlates oddly to CPU usage vs GPU usage if you have a lower end GPU but a better CPU you can see gains by lower this setting |
Scattered Object Distance | Low | Low | |
Terrain Tessellation Distance | Medium | Medium | |
Planet Volumetric Clouds | Very High | Off | Cloud are currently the largest performance hog in the game, turning this off can get you up to 10 FPS on planet surfaces |
Field of View | 104 | 104 | Recommended to stay between 104 and 110 |
Motion Blur | On | Off | This blurs the edges of your FoV while moving |
VSync | On | Off | We're letting Nvidia control center manage this |
Sharpening | 0 | 100 | Little performance impact but large visual improvement |
Chromatic Aberration | 20 | 0 | Similar to film grain this is a post processing effect that doesn't add much to game play. Turning off can give a slight FPS gain |
Film Grain | Yes | No | Post processing effect that makes things look a bit more cinematic. Turning off can give a slight FPS gain |
Advance Settings
Microsoft Game Mode (On)
Game mode is a feature of Windows 10 & 11 which allows the system to focus resources on games when it senses one running, this feature doesn’t have much impact on high end gaming systems but does improve performance greatly on lower end systems or in cases of heavy multi-tasking like streaming.
Windows Features
Virtual Machine Platform (VMPP) (OFF)
VMP is a windows feature that allows your system to emulate different operating systems, like Android or Linux. This feature though great for developers adds a fair amount of overhead in the system, with our goal being to have the most resources we can, available to SC we want this off.
Windows Security
Core Isolation (OFF)
A windows virtualization-based security (VBS) feature that protects and hardens Windows by running kernel mode code integrity within the isolated virtual environment of VBS. Like VMP this adds overhead to the system since the kernel now needs to run in a virtual environment. We recommend this feature be turned off. As with all security features this is entirely up to the user if you feel like you need it keep it on, if you only use your computer for playing games then there’s little reason for it.
Services
SysMain (Off & Disabled)
A Windows service that helps ‘improve’ the performance of your PC by preloading frequently used apps into your RAM. This is one of the main reasons why Windows now uses 16G of memory, turning this off reclaims a ton of system resources.
Registry
Task Priorities
These settings permanently increase the priority of the task they’re set under, in this case ‘Games’ This is like right clicking the task in task manager and setting the priority.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile\Tasks\Games
Affinity > f
Background Only > False
Background Priority > 1
GPU Priority > 8
Priority > 6
Scheduling Category > High
SFIO Priority > High
SFIO Rate > 4
Nagle's Algorithm
A means of improving the efficiency of TCP/IP networks by reducing the number of packets that need to be sent over the network, basically a transmit buffer, created in 1984, most modern networks don’t require this these days but is on by default in windows. Turning this off can lower latency to the game servers.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
*Find the interface that has your system’s current ‘local’ IP address defined in it. Add or update these two settings:
TcpAckFrequency = 1
TcpNoDelay = 1
Default TTL
Default TTL (Time-to-Live) is the amount of time a data packet remains valid since we turned off Nagle’s we can reduce this to the industry recommended of 64 (from 128)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
DefaultTTL = 64
Optional
Space Optimization
NOTE: This repository includes a script that will set this up for you.
With SC being a larger and larger game every day us players find ourselves struggling with its space utilization, with the PU, PTU, EPTU, and Tech Preview channels now available to us our game folders can easily exceed 500GB of utilization, needless to say, this is not acceptable. Luckily for us we have a method of reducing this space utilization by using Linking. Linking allows us to make the contents of one folder appear inside of another folder, kind of like a shortcut for folder contents. The idea here would be to put our game data off in a folder by itself then create links for all the channels. The upside of this is that the game goes back to only using about 100GB of space, the bad is that we need to verify game files every time we switch channels.
This script will do the entire process for you.
cd "<Path to the ‘LIVE’ folder>" & rename LIVE GAME & mklink /D LIVE GAME & mklink /D PTU GAME & mklink /D EPTU GAME & mklink /D TECH-PREVIEW GAME
ReShade
NOTE: This repository includes the recommended presets
With the current state of the game being very unoptimized both in performance and visuals we can see a large increase in immersion and shader quality by installing a 3rd party tool called ReShade, this allows us to tweak shader quality and add some extras to make the game experience a bit more palatable. The following guide can be used to install ReShade.
Closing
The above settings have hopefully gotten you the maximum FPS your system can achieve, as with any performance guide you should now go back and tune it, so the game is enjoyable to you making performance sacrifices where necessary to achieve the visual appearance that you desire in the game.