VR Auto-Optimizer

Technical Documentation & User Guide — Automate Your Flight Sim Experience
v7.4.1 Stable Beta Platform: Windows 10/11 | Framework: .NET 8 | WPF (C#) Developed for VRFLIGHTSIM GUY | SHARK | g0|df!ng3R

1. Overview

VR Auto-Optimizer is a Windows desktop application built to streamline the process of launching VR flight simulators with maximum performance. It replaces the original batch script workflow with a modern, themeable WPF graphical interface.

The application handles the entire lifecycle of a VR sim session:

  • Automatically detects installed simulators across Steam, Microsoft Store, and standalone installations
  • Kills resource-hogging background applications before launch
  • Applies system-level performance optimizations (power plans, service management, registry tweaks)
  • Launches the selected simulator and configurable VR runtime (Virtual Desktop, PimaxPlay, or None)
  • Monitors the simulator process and applies runtime optimizations (CPU affinity, priority, etc.)
  • Automatically restores all changes when the simulator exits or the user cancels

1.1 Key Features

  • Auto-detection of 9 simulator configurations across multiple storefronts
  • Two optimization levels: Standard (safe, common tweaks) and Aggressive (deep system modifications)
  • Per-tweak granular control over every optimization
  • Custom kill/restart lists for user-specific applications
  • Real-time stage-by-stage progress tracking during optimization
  • Full system restoration on exit or cancellation — no permanent changes
  • Session logging with automatic rotation
  • Auto-run mode for single-click launch
  • Aviation instrument-themed dark UI
  • Configurable VR runtime support (Virtual Desktop, PimaxPlay, SteamVR, or None) with independent OpenXR runtime switching
  • Content Creator Mode to protect streaming and recording tools (Discord, Chrome, Game DVR, Widget Service)

2. System Requirements

RequirementDetails
Operating SystemWindows 10 (21H2+) or Windows 11
Runtime.NET 8 Desktop Runtime (included in build or install separately)
PermissionsAdministrator (required for service management, registry, power plans)
GPUNVIDIA GPU recommended (for nvidia-smi persistence/performance modes)
VRVirtual Desktop, PimaxPlay, or SteamVR (optional — selectable in Configuration; set to None by default)
Disk Space< 10 MB for application + config + logs
ImportantThe application must be run as Administrator for full functionality. Without elevation, service management (SysMain, Spooler), registry modifications, and power plan changes will fail silently or with errors.

3. File Locations & Data Storage

The application stores all user data in the Windows AppData folder. No data is written to the application directory itself.

3.1 Configuration File

%APPDATA%\SimVROptimizer\vr_opt.cfg

This is a plain-text key=value configuration file. It stores all user preferences including kill/restart flags, optimization toggles, default simulator selection, and custom app entries. The file is human-readable and can be edited manually if needed, though the application UI is the recommended method.

3.2 Session Log

%APPDATA%\SimVROptimizer\sim_launcher.log

Timestamped log of all optimization sessions. Each session is bracketed by [SESSION START] and [SESSION END] markers. The log records every action taken: processes killed, services stopped, power plan changes, optimizations applied, and restoration steps.

Log Rotation

The log file automatically rotates under two conditions:

  • File size exceeds 2 MB
  • 10 or more sessions have been recorded

When rotation triggers, the current log is renamed to sim_launcher.log.old (overwriting any previous .old file), and a fresh log is started.

3.3 Full Path Reference

ItemLocation
Config file%APPDATA%\SimVROptimizer\vr_opt.cfg
Session log%APPDATA%\SimVROptimizer\sim_launcher.log
Rotated log%APPDATA%\SimVROptimizer\sim_launcher.log.old
AppData folderC:\Users\\AppData\Roaming\SimVROptimizer\
TipTo quickly navigate to the config folder, press Win+R, type %APPDATA%\SimVROptimizer and press Enter.

4. Configuration File Reference

The vr_opt.cfg file uses a simple KEY=VALUE format. Boolean values use YES/NO. Lines starting with # or ; are comments. The file is organized into sections by comment headers.

4.1 Kill Flags

Controls which applications are force-closed before the simulator launches.

KeyDefaultDescription
KILL_ONEDRIVEYESKills OneDrive.exe
KILL_DISCORDYESKills Discord.exe (overridden by Content Creator Mode)
KILL_CHROMEYESKills chrome.exe (overridden by Content Creator Mode)
KILL_EDGEYESKills msedge.exe (overridden by Content Creator Mode)
KILL_CCLEANERYESKills CCleaner64.exe
KILL_ICLOUDSERVICESYESKills iCloudServices.exe
KILL_ICLOUDDRIVEYESKills iCloudDrive.exe

4.2 Restart Flags

Controls which applications are restarted after the simulator exits.

KeyDefaultDescription
RESTART_EDGEYESRestarts Microsoft Edge
RESTART_DISCORDYESRestarts Discord via Update.exe
RESTART_ONEDRIVEYESRestarts OneDrive in background mode
RESTART_CCLEANERYESRestarts CCleaner in monitor mode
RESTART_ICLOUDYESRestarts iCloud (Store or Desktop version)
RESTART_CHROMEYESRestarts Google Chrome

4.3 Defaults

KeyDefaultDescription
DEFAULT_SIM(empty)Simulator choice number (1-9) for auto-run
AUTO_RUN_ON_STARTNOIf YES, launches DEFAULT_SIM immediately on app start
VR_RUNTIMENoneVR runtime to launch (None, VirtualDesktop, PimaxPlay, or SteamVR)
CONTENT_CREATOR_MODENOProtects Discord, Chrome, Edge, Game DVR, and Widget Service for streamers/recorders
OPENXR_RUNTIMEDontChangeOpenXR runtime to set before VR launch (DontChange, SteamVR, OculusMeta, WMR, or PimaxXR). Saved and restored per session.

4.4 Optimization Level

KeyDefaultValues
OPT_LEVELStandardStandard or Aggressive

4.5 Standard Optimizations

These apply regardless of optimization level when enabled.

KeyDefaultWhat It Does
OPT_POWER_PLANYESSwitches to Ultimate Performance power plan (reverts on exit)
OPT_STOP_SYSMAINYESStops SysMain (Superfetch) service
OPT_STOP_SPOOLERYESStops Print Spooler service
OPT_NVIDIA_PERSISTYESEnables NVIDIA persistence mode (nvidia-smi -pm 1)
OPT_FLUSH_DNSYESFlushes DNS resolver cache
OPT_HIGH_PRIORITYYESSets simulator process to High priority
OPT_CPU_AFFINITYYESSets CPU affinity (Intel P-Core aware, AMD X3D safe)

4.6 Aggressive Optimizations

These only apply when OPT_LEVEL=Aggressive. All changes are reverted on exit.

KeyDefaultWhat It Does
OPT_DISABLE_GAMEBARYESDisables Game Bar auto-game mode via registry
OPT_DISABLE_GAMEDVRYESDisables Game DVR recording (overridden by Content Creator Mode)
OPT_CLEAR_STANDBYYESPurges standby memory list via NtSetSystemInformation
OPT_TIMER_RESYESSets system timer to 0.5ms via NtSetTimerResolution
OPT_DISABLE_FSOYESDisables fullscreen optimizations for the sim exe
OPT_NVIDIA_MAXPERFYESSets NVIDIA max performance mode
OPT_DISABLE_POWERTHROTTLEYESDisables Windows power throttling
OPT_KILL_WIDGETSYESKills the Windows Widgets service (overridden by Content Creator Mode)
OPT_DISABLE_NAGLEYESDisables Nagle's algorithm on all network interfaces
OPT_NET_THROTTLEYESSets NetworkThrottlingIndex to 0xFFFFFFFF
OPT_DISABLE_MEMCOMPYESDisables Windows memory compression
OPT_IO_PRIORITYYESEnables I/O priority boost for the sim process
OPT_DISABLE_VISEFFECTSYESSets visual effects to Best Performance

4.7 Custom Entries

Custom kill and restart entries are stored as indexed lists:

CUST_K_COUNT=2
CUST_K_1=obs64.exe
CUST_K_2=StreamlabsOBS.exe
CUST_R_COUNT=1
CUST_R_CMD_1=C:\Program Files\OBS\obs64.exe
CUST_R_ARGS_1=--startstreaming

These are managed through the Custom Apps Manager view in the application, but can also be edited manually.

5. Supported Simulators

The application supports 9 simulator configurations across three launch methods.

#SimulatorLaunch MethodProcess Name
1MSFS 2024 (Steam)Steam (AppID 2537590)FlightSimulator2024.exe
2MSFS 2020 (Steam)Steam (AppID 1250410)FlightSimulator.exe
3DCS World (Steam)Steam (AppID 223750)DCS.exe
5MSFS 2024 (Store)Store (AUMID auto-detect)FlightSimulator2024.exe
6MSFS 2020 (Store)Store (AUMID auto-detect)FlightSimulator.exe
7DCS World (Standalone)Direct EXE launchDCS.exe
8X-Plane 12 (Steam)Steam (AppID 2014780)X-Plane.exe
9X-Plane 12 (Standalone)Direct EXE launchX-Plane.exe
NoteChoice numbers 4, 10-13 are reserved from the original batch script numbering.

6. Simulator Detection

The application uses multiple detection strategies depending on the simulator type. Detection runs automatically when the main menu loads and can be triggered manually with the Rescan button.

6.1 Steam Games

Steam games are detected by looking for app manifest files in all Steam library folders.

  1. The Steam installation path is read from the Windows registry (HKLM\SOFTWARE\Wow6432Node\Valve\Steam or HKCU\Software\Valve\Steam).
  2. The libraryfolders.vdf file is parsed to discover all Steam library locations on the system.
  3. For each library, the detector checks for appmanifest_.acf files.
  4. If found, the manifest is parsed to extract the install directory path.

6.2 Microsoft Store / GamePass

Store games are detected using PowerShell's Get-AppxPackage command.

  1. A PowerShell command queries installed packages matching known package family names.
  2. For MSFS 2024: searches for packages matching "Limitless" in the name.
  3. For MSFS 2020: searches for "FlightSimulator" while excluding "Limitless" (to avoid matching MSFS 2024).
  4. The resolved Package Family Name is combined with "!App" to create the AUMID used for launching.

6.3 DCS World (Standalone)

Standalone DCS uses a multi-method detection approach:

  1. Registry check: HKCU and HKLM under Software\Eagle Dynamics\DCS World (and OpenBeta variant).
  2. Prefers the bin subfolder over bin-mt (bin-mt is deprecated).
  3. Fallback: Scans drives C through J for common DCS installation paths.

6.4 X-Plane 12 (Standalone)

X-Plane uses the most extensive detection with six methods tried in order:

  1. Breadcrumb file: X-Plane writes x-plane_install_12.txt to multiple AppData locations.
  2. Desktop shortcuts: Scans user and common desktop for .lnk files containing "X-Plane".
  3. Start Menu shortcuts: Same approach across Start Menu folders.
  4. Registry: Checks multiple registry paths under HKLM and HKCU for X-Plane and Laminar Research keys.
  5. Uninstall registry: Searches the standard Windows uninstall registry for X-Plane entries.
  6. Drive scan: Scans drives C-J across 9 common directory patterns (X-Plane 12, Games\X-Plane 12, Simulators\X-Plane 12, etc.).

7. User Guide

This section walks through every screen and feature of the application.

The Main Menu is the home screen of the application. It appears on launch (unless Auto-Run is configured).

What You See

  • SELECT YOUR SIMULATOR header with a detection status message
  • INSTALLED SIMULATORS section (green header) — shows clickable cards for each detected sim with its install path
  • NOT DETECTED section (dim header) — shows disabled cards for simulators not found on the system
  • QUICK ACTIONS section (cyan header) with three buttons

Quick Actions

ButtonAction
Configure App ControlsOpens the Configuration view where you manage kill/restart flags, defaults, and access optimization settings
View LogOpens the Session Log viewer
âŸŗ Rescan SimulatorsRe-runs the full simulator detection scan

Launching a Simulator

  1. Click any green simulator card in the INSTALLED SIMULATORS section.
  2. A confirmation dialog appears: "Launch [Sim Name]? The optimizer will prepare your system and start the simulator."
  3. Click Yes to proceed. The application navigates to the Running View.

7.2 Running View (Optimization Pipeline)

The Running View shows real-time progress through the five-stage optimization pipeline.

Stage Pipeline

StageNameWhat Happens
1PREPSaves current power plan, switches to Ultimate Performance, kills configured apps, stops services, applies standard/aggressive optimizations
2VR LAUNCHLaunches the configured VR runtime (Virtual Desktop, PimaxPlay, SteamVR, or skip. Also swaps the OpenXR runtime if configureds if set to None), waits 8 seconds for initialization
3SIM LAUNCHLaunches the selected simulator via Steam URI, Store AUMID, or direct EXE path
4MONITORINGPolls for the simulator process every 5 seconds (up to 7 attempts = 35 sec). Once detected, applies runtime optimizations (priority, affinity, FSO). Then monitors every 15 seconds until the sim exits.
5RESTORERestores power plan, restarts services, restores registry values, restarts configured apps, runs custom restart commands

Stage Indicators

Each stage card shows a visual status:

  • âŗ Waiting — Stage has not started yet (dim text)
  • â–ļ Running/Active — Stage is currently executing (amber border and text)
  • ✓ Done/Complete — Stage finished successfully (green border and text)
  • ✕ Cancelled — Stage was skipped due to cancellation (red border and text)

Enjoy Banner

When the simulator is detected and running, an amber banner appears: "✈ Enjoy your flight! Do not close this application." This reminds the user that the optimizer needs to stay running to monitor the sim and restore changes on exit.

Cancelling

  1. Click the "✕ Cancel & Revert" button.
  2. A confirmation dialog asks: "Cancel the optimizer and revert all changes?"
  3. Click Yes. All remaining stages are marked Cancelled, and the RESTORE stage runs immediately to revert all system changes.
  4. Once restoration completes, a "Return to Menu" button appears.

7.3 Configuration View

Accessed via "Configure App Controls" on the Main Menu. This is the central settings hub.

Defaults Section

  • Default Simulator: Dropdown to select which simulator auto-launches when Auto-Run is enabled. Options include all 9 supported sims plus (None).
  • Auto-Run on Start: Toggle switch. When enabled with a default sim selected, the app skips the main menu and goes directly to the Running View on startup.
  • VR Runtime: Dropdown to select which VR runtime launches before the simulator. Options: (None), Virtual Desktop, PimaxPlay, SteamVR. Set to None by default.

Content Creator Mode

A single toggle that protects streaming and recording tools from being disrupted by the optimizer. When enabled, the following overrides apply regardless of individual toggle settings: Discord is not killed, Chrome is not killed, Game DVR is not disabled (preserves NVENC encoding sessions for OBS), and the Widget Service is not killed (preserves overlay tools). All other optimizations continue to apply normally. This mode is designed for users who stream or record with OBS, Streamlabs, or similar tools alongside their simulator sessions.

Kill Apps on Launch

Seven toggle switches for built-in applications: OneDrive, Discord, Chrome, Edge, CCleaner, iCloud Services, and iCloud Drive. Each toggle controls whether that application is force-closed during the PREP stage.

Restart Apps After Sim Exit

Six toggle switches for post-session restarts: Edge, Discord, OneDrive, CCleaner, iCloud, and Chrome. Each controls whether the application is restarted during the RESTORE stage.

Optimization Settings Shortcut

A panel with description and an "Optimization Settings →" button that navigates to the Optimization View for Standard/Aggressive configuration.

Custom Apps Shortcut

A panel with an "Manage Custom Apps →" button that navigates to the Custom Apps Manager.

Saving

Click "Save Configuration" to write all changes to vr_opt.cfg. A themed confirmation dialog appears. Click "Cancel" or "← Back" to discard changes and return to the Main Menu.

7.4 Optimization Settings View

Accessed via the Configuration View. Provides granular control over every system optimization.

Optimization Level

Two radio buttons: Standard and Aggressive.

  • Standard: Only the Standard Optimizations section is active. Aggressive tweaks are dimmed and disabled.
  • Aggressive: Both sections are fully active. All toggles can be individually enabled/disabled.

Standard Optimizations (7 toggles)

  • Ultimate Performance Power Plan — Switches Windows to the Ultimate Performance plan (creates it if missing, falls back to High Performance)
  • Stop SysMain (Superfetch) — Stops the SysMain service to free memory and reduce disk I/O
  • Stop Print Spooler — Stops the Print Spooler service
  • NVIDIA Persistence Mode — Keeps the GPU driver loaded to reduce initialization latency
  • Flush DNS Cache — Clears the DNS resolver cache
  • Set Sim to High Priority — Sets the simulator process priority to High
  • CPU Affinity (Physical Cores) — Vendor-aware affinity: Intel hybrid chips get P-Core affinity, AMD X3D chips skip affinity (cache topology safe), other AMD chips use scheduler-managed mode

Aggressive Optimizations (13 toggles)

  • Disable Game Bar — Disables AllowAutoGameMode and AutoGameModeEnabled via registry
  • Disable Game DVR — Disables GameDVR_Enabled in user registry and AllowGameDVR in machine policy. Skipped when Content Creator Mode is active (preserves NVENC encoding sessions for OBS).
  • Clear Standby Memory — Purges the Windows standby memory list using NtSetSystemInformation API
  • High-Res Timer (0.5ms) — Sets the system timer resolution to 0.5ms using NtSetTimerResolution
  • Disable Fullscreen Optimizations — Adds DISABLEDXMAXIMIZEDWINDOWEDMODE to the sim's AppCompatFlags
  • NVIDIA Max Performance Mode — Removes power limits via nvidia-smi
  • Disable Power Throttling — Sets PowerThrottlingOff=1 in the registry
  • Kill Widget Service — Terminates the Windows Widgets process. Skipped when Content Creator Mode is active (preserves overlay tools).
  • Disable Nagle's Algorithm — Sets TcpAckFrequency=1 and TCPNoDelay=1 on all network interfaces
  • Optimize Network Throttling — Sets NetworkThrottlingIndex to 0xFFFFFFFF (unlimited)
  • Disable Memory Compression — Calls Disable-MMAgent -MemoryCompression
  • Set I/O Priority (High) — Enables PriorityBoostEnabled on the sim process
  • Disable Visual Effects — Sets Windows visual effects to Best Performance mode

Saving

Click "Save Optimization Settings" to persist. Returns to the Configuration View. All aggressive optimizations are reverted by the RESTORE stage after each session regardless of their saved state.

7.5 Custom Apps Manager

Accessed via the Configuration View. Manage user-defined processes and applications.

Custom Kill List

Processes to force-close during the PREP stage, in addition to the built-in kill list.

  1. Click "+ Add" to open the input dialog.
  2. Enter the process name (e.g., obs64.exe, StreamlabsOBS.exe).
  3. Click Add to confirm. The entry appears in the list with a red indicator.
  4. To remove, click the ✕ button on any entry.

Custom Restart List

Applications to restart during the RESTORE stage.

  1. Click "+ Add" to open the dual-field input dialog.
  2. Enter the full path to the executable (e.g., C:\Program Files\OBS\obs64.exe).
  3. Optionally enter command-line arguments (e.g., --startstreaming).
  4. Click Add to confirm. The entry shows the path and args with a green indicator.
  5. To remove, click the ✕ button on any entry.

Click "Save Changes" to persist all custom entries to the config file.

7.6 Session Log Viewer

Accessed via "View Log" on the Main Menu.

Features

  • Displays the full contents of sim_launcher.log in a read-only Consolas-formatted text area
  • Auto-scrolls to the bottom to show the most recent entries
  • Refresh button (âŸŗ Refresh) reloads the log from disk
  • Clear Log button (red-bordered) wipes the log file after confirmation, leaving only a "Log cleared by user" entry
  • The log file path is displayed at the bottom of the view

Log Entry Format

Each line follows this format:

[2025-02-09 14:32:01] [PREP] Killed: Discord.exe
[2025-02-09 14:32:01] [PREP] Power Plan: Ultimate Performance (existing)
[2025-02-09 14:32:09] [VR] VR runtime started
[2025-02-09 14:32:12] [LAUNCH] MSFS 2024 (Steam) launched
[2025-02-09 14:32:47] [DETECT] Process active: FlightSimulator2024.exe
[2025-02-09 14:32:47] [DETECT] Priority set to High

Log Tags

TagStageDescription
[SESSION START]—Marks the beginning of a new optimization session
[PREP]Stage 1System preparation actions (kills, services, optimizations)
[VR]Stage 2VR runtime launch status
[LAUNCH]Stage 3Simulator launch confirmation
[DETECT]Stage 4Process detection and runtime optimization results
[TIMEOUT]Stage 4Simulator process was not detected within 35 seconds
[RESTORE]Stage 5System restoration actions
[CANCELLED]AnyUser-initiated cancellation
[ERROR]AnyError encountered during operation
[LOG]—Log management events (rotation, clearing)
[SESSION END]—Marks the end of the session

8. CPU Affinity Intelligence

The optimizer includes vendor-aware CPU affinity logic that adapts to the user's processor architecture. This ensures optimal thread scheduling without risking performance regressions on specialized hardware.

8.1 Detection Method

CPU information is gathered via WMI (Win32_Processor) at runtime, extracting: Manufacturer, Name, NumberOfCores, NumberOfLogicalProcessors, and L3CacheSize.

8.2 Behavior by CPU Type

CPU TypeDetectionAffinity Action
AMD X3D (e.g. 7800X3D)Name contains "X3D" or L3 cache â‰Ĩ 64MBSkipped entirely — Windows scheduler handles CCD/cache topology correctly
AMD Non-X3DAMD vendor, no X3D markerSkipped — scheduler-managed, priority only
Intel Hybrid (P+E cores)Intel vendor, logical > physical coresP-Core affinity mask calculated (even-numbered logical processors)
Intel Non-HybridIntel vendor, logical = physicalSkipped — priority only
Unknown VendorNeither Intel nor AMDSkipped — priority only

9. Application Architecture

For developers and maintainers: the application follows a view-based navigation pattern with service classes for business logic.

9.1 Project Structure

FileTypePurpose
App.xaml / App.xaml.csApplicationEntry point, merges Styles.xaml resource dictionary
MainWindow.xaml / .csWindowChrome-less shell with custom title bar, status bar, and ContentControl for view swapping
Styles.xamlResourceDictionaryComplete theme: colors, brushes, button styles, toggle styles, combobox, section panels
MainMenuView.xaml / .csUserControlSim selection grid with dynamic card generation, detection status, quick actions
RunningView.xaml / .csUserControlFive-stage pipeline display with real-time status, enjoy banner, cancel/return controls
ConfigView.xaml / .csUserControlKill/restart toggles, default sim dropdown, auto-run, navigation to sub-views
OptimizationView.xaml / .csUserControlStandard/Aggressive level selector, 20 individual optimization toggles
CustomAppsView.xaml / .csUserControlObservable collections for custom kill/restart entries with add/remove UI
LogView.xaml / .csUserControlRead-only log display with refresh, clear, and path info
ThemedMessageBox.xaml / .csWindowCustom dark-themed message box replacing system MessageBox
InputDialog.xaml / .csWindowSingle/dual field input dialog for custom entries
OptimizerConfig.csModelData class with all config properties and defaults
SimInfo.csModelData class for detected simulator information
ConfigService.csServiceLoad/Save config from %APPDATA% as key=value text file
SimDetectorService.csServiceMulti-method sim detection (Steam, Store, registry, drive scan)
OptimizerEngine.csServiceCore engine: 5-stage pipeline, process management, system optimization, restoration
AssemblyInfo.csMetadataTheme resource location hints

The MainWindow uses a ContentControl named MainContent to swap views. Navigation methods on MainWindow:

NavigateToMainMenu() → MainMenuView
NavigateToConfig() → ConfigView
NavigateToOptimization()→ OptimizationView
NavigateToCustomApps() → CustomAppsView
NavigateToRunning(...) → RunningView(simChoice, simName)
NavigateToLogView() → LogView

Each view obtains a reference to MainWindow via Window.GetWindow(this) to call these navigation methods and UpdateStatus().

9.3 Theme System

All visual theming is centralized in Styles.xaml (loaded via App.xaml). The palette uses an aviation instrument aesthetic:

ResourceColorUsage
PanelDarkBrush#2B3240Main background, dialog backgrounds
PanelMediumBrush#3A4556Title bar, status bar, button default background
PanelLightBrush#4A5568Borders, hover states, toggle tracks
SurfaceBrush#344052Section panel backgrounds
AmberAccentBrush#E8A630Primary accent (headers, focus borders, status text)
GreenAccentBrush#4CAF50Success states, toggle ON, installed indicators
BlueAccentBrush#5B9BD5Sim launch button gradient, informational
RedAccentBrush#E05555Destructive actions, kill indicators, close hover
CyanAccentBrush#56C8D8Secondary accent (section headers, status bar text)
TextPrimaryBrush#E0E4E8Main body text
TextSecondaryBrush#9BA4B0Descriptions, subtitles, version text
TextDimBrush#6B7685Disabled text, empty state messages

9.4 Styled Components

The Styles.xaml defines these reusable component styles:

  • CockpitButton — Standard button with hover/press/focus states
  • SimLaunchButton — Larger button with blue gradient background for sim cards
  • CockpitToggle — iOS-style toggle switch with green ON / gray OFF states
  • SectionPanel — Rounded border with surface background for grouping content
  • SectionHeader — Amber bold text for section titles
  • StatusText — Cyan Consolas text for the status bar
  • CockpitComboBox — Fully-themed dropdown with hover states and amber accent

10. Restoration Guarantee

A core design principle of the VR Auto-Optimizer is that it never makes permanent system changes. Every modification is tracked and reverted.

10.1 What Gets Restored

ChangeRestore Method
Power plan switchRestores the GUID captured before switching (falls back to Balanced if unknown)
SysMain service stoppednet start SysMain
Print Spooler stoppednet start Spooler
NVIDIA persistence modenvidia-smi -pm 0
Game Bar disabledRegistry values restored to captured state
Game DVR disabledBoth HKCU and HKLM registry values restored
Timer resolution (0.5ms)Restored to default 15.625ms
Fullscreen optimizationsRegistry key restored or deleted based on previous state
Power throttling disabledRegistry key removed
Nagle's algorithm disabledAll interface registry values restored to captured state
Network throttling indexRestored to captured value
Memory compression disabledEnable-MMAgent -MemoryCompression
Visual effects changedRegistry value restored, desktop refreshed
Killed applicationsRestarted per restart flags (built-in paths + custom entries)
OpenXR runtime changedRegistry ActiveRuntime value restored to previous path

10.2 Restoration Triggers

Restoration runs in all of these scenarios:

  • Normal exit: Simulator process exits on its own
  • User cancellation: User clicks Cancel & Revert at any stage
  • Error: An unhandled exception occurs during any stage
  • Timeout: Simulator process is not detected within 35 seconds

Safety note: The _restored flag ensures restoration runs exactly once, even if triggered from multiple code paths. Restoration is wrapped in try/catch blocks to ensure partial failures don't prevent remaining items from being restored.

11. Troubleshooting

11.1 Common Issues

ProblemCauseSolution
No simulators detectedSteam not installed, or sims installed on unscanned drivesClick Rescan. Verify Steam is installed. Check that sim is in drives C-J.
Store sim not detectedPowerShell query timed out or package name changedRun Get-AppxPackage manually. Check the 15-second timeout.
Optimizer reports errorsNot running as AdministratorRight-click the app > Run as Administrator
Power plan not switchingUltimate Performance not available on laptop/OEM installsApp falls back to High Performance automatically
NVIDIA commands failnvidia-smi not in PATH or non-NVIDIA GPUInstall NVIDIA drivers with command-line tools. Non-NVIDIA users can disable these toggles.
Sim not detected during monitoringProcess name mismatch or slow launchThe detector checks multiple candidate names. 35-second window should be sufficient.
Config not savingPermission issue in AppDataCheck %APPDATA%\SimVROptimizer folder permissions
Log shows wrong pathLogView uses base directory instead of AppDataThe engine writes to %APPDATA%; the viewer should be updated if paths diverge

11.2 Resetting to Defaults

To reset all settings to factory defaults:

  1. Close the application.
  2. Navigate to %APPDATA%\SimVROptimizer\
  3. Delete (or rename) vr_opt.cfg
  4. Relaunch the application. A new config with all defaults will be created automatically.

12. Credits

VR Auto-Optimizer
Concept & Direction
VRFLIGHTSIM GUY â€ĸ SHARK â€ĸ g0|df!ng3R
UI Development
OverKill Simulations

Greetings from VRFLIGHTSIM GUY, SHARK, g0|df!ng3R, and OverKill Simulations