Inspect your PC, safely apply BDO CPU affinity, and prove the gain locally.
BDO Optimizer is an open-source desktop app for Black Desert Online players who want a hardware-aware CPU-affinity recommendation and a repeatable way to check whether it improves frame rate and frame pacing on their own PC.
Inspect hardware → Apply safely → Verify read-only → Measure baseline and optimized → Compare
The affinity recommendations are based on ACanadianDude's Ultimate BDO Performance Guide.
- Explains the relevant hardware: CPU model and topology, L1/L2/L3 cache, AMD X3D V-Cache CCDs, RAM, GPU and driver details, and local storage.
- Recommends a supported affinity mask: the recommendation is pre-filled, while alternate masks remain available under the advanced control.
- Applies affinity without touching the running game: BDO inherits the mask
from
BlackDesertLauncher.exe. - Verifies before measuring: the app reads the running process affinity and blocks an optimized capture until it matches the selected mask.
- Compares against a real baseline: saved runs contain raw frame times and locally calculated average FPS, P1 low, and time-weighted low metrics.
- Shows its version: the current package version appears in the app header.
- 64-bit Windows supported by BDO and PresentMon.
- An installed copy of Black Desert Online.
PresentMon.exebesidebdo-optimizer.exefor FPS capture. Official packaged builds should ship both files together.- Administrator permission for benchmarking. Windows ETW will not start the PresentMon trace from a non-elevated process.
Hardware inspection and saved-session viewing can run on other supported desktop platforms, but applying and measuring BDO affinity are Windows-only.
- Stable Rust with Cargo.
- On Windows, the
x86_64-pc-windows-msvcRust toolchain and Microsoft C++ build tools. - Git.
Run the development build:
git clone https://github.com/CarlosJunioor/bdo-optimizer.git
cd bdo-optimizer
cargo run -p bdo-optimizerDebug builds find the checked-in vendor/presentmon/PresentMon.exe.
Create a runnable release layout:
cargo build --release
Copy-Item vendor\presentmon\PresentMon.exe target\release\PresentMon.exe
.\target\release\bdo-optimizer.exeThe standalone release executable does not search arbitrary parent folders for PresentMon; keep the two executables together.
Open 1 Inspect and review the detected CPU, caches, memory, GPU, storage, and recommended affinity. Select Continue to Apply when a recommendation exists.
In 2 Apply:
- Confirm the detected BDO install, or browse to
BlackDesertLauncher.exe. - Enable the Steam option only for a Steam installation.
- Keep the recommended mask unless you intentionally want to test an alternate.
- Choose Launch Now with Affinity or Create Optimized Shortcut.
- Start BDO and wait for the status to change from PENDING to VERIFIED.
The app may show a UAC prompt because the BDO launcher itself requires elevation. Verification is read-only and runs once per second.
Affinity is applied only to that launch chain. To restore the default:
- Close BDO and its launcher.
- Start BDO from its normal launcher or Steam entry.
- Delete the optional optimized desktop shortcut if you no longer want it.
There is no persistent service to disable. BDO Optimizer does not write NVIDIA, AMD, or Intel driver profiles, global Windows settings, registry priority tweaks, or the running game process.
Use the same graphics settings, resolution, scene, camera path, character, and capture length for every run. Close unnecessary background work and let the system reach a similar temperature before each pass.
- Close any optimized BDO launch.
- In 3 Measure, select Baseline / normal launch.
- Launch BDO normally.
- Wait for Full CPU affinity detected. The baseline capture remains disabled while a restricted mask is detected.
- Enter the test scene, select Start baseline capture, and perform the route.
- Select Stop, or exit the game to end and save the run.
- Close BDO completely.
- Launch it from 2 Apply or the optimized shortcut.
- In 3 Measure, select Optimized / affinity launch.
- Wait for Verified running mask. Unverified or mismatched runs cannot start.
- Repeat the same route and duration, then stop or exit.
Select exactly one Baseline and one optimized session. The comparison always
uses Baseline as A and Optimized as B, so the displayed delta is B − A.
Aim for at least 1,000 captured frames; shorter runs are marked low confidence. For a result you can trust, repeat each mode at least three times and compare representative pairs rather than relying on one unusually good run.
Known limitation: baseline readiness currently derives the full affinity mask from the detected logical-processor count. Unusual Windows processor-group or offline-CPU layouts may not unlock baseline capture correctly.
| Action | Permission | Game-process behavior |
|---|---|---|
| Inspect hardware | Standard user | No game access |
| Create/launch optimized shortcut | UAC may appear | Sets affinity on the launcher before it runs |
| Verify affinity | Read-only process query | Reads the current mask; never sets it |
| Capture FPS | Administrator | PresentMon uses external Windows ETW tracing |
| Show overlay | Same app session | Separate always-on-top native window; no injection or graphics hook |
The FPS overlay can appear over windowed and borderless-windowed BDO. It cannot appear over exclusive fullscreen because it is an external desktop window. The overlay polls affinity read-only and shows live capture statistics; it does not modify or inject into the game.
Each completed run is saved locally as one JSON file containing:
- timestamp and label;
- CPU and GPU model;
- baseline/optimized role plus expected and read-only observed affinity masks;
- PresentMon version;
- raw frame times.
Metrics are recalculated from the raw frame times when loaded, so formula fixes can improve existing sessions. The per-user session directory is shown at the bottom of 3 Measure and is resolved with the operating system's standard application-data location. Runs are newest-first and can be deleted from the session table.
During capture, PresentMon CSV output is written to the operating system's temporary directory and deleted when the capture worker finishes, on every exit path including errors. The saved session JSON keeps the raw frame times. No benchmark data is uploaded.
| Capability | Windows | Linux | macOS |
|---|---|---|---|
| Hardware inspection | Yes | Yes | Partial |
| View saved sessions | Yes | Yes | Yes |
| Apply/verify BDO affinity in the app | Yes | No | No |
| Live BDO capture with PresentMon | Yes | No | No |
| External FPS overlay during capture | Yes | No BDO workflow | No BDO workflow |
BDO itself is not supported through this app on Linux or macOS. The launch library contains generic non-Windows helpers, but the desktop BDO Apply and Measure flow intentionally exposes only supported Windows behavior.
Place PresentMon.exe next to the running bdo-optimizer.exe. For a debug build,
the checked-in vendor/presentmon/PresentMon.exe is also accepted.
Use Restart as administrator in 3 Measure and accept the UAC prompt. Hardware inspection does not require elevation.
Close BDO and its launcher, then start BDO normally. Wait for the read-only affinity check to report full CPU affinity. See the processor-group limitation in the benchmark section if this PC has an unusual CPU layout.
Close BDO completely, confirm the selected mask, and relaunch from 2 Apply or the optimized shortcut. Do not switch to a normal launcher between verification and capture.
Use Browse and select BlackDesertLauncher.exe. Confirm the Steam option
matches the installation.
Use borderless-windowed or windowed mode, enable Show overlay, and begin a capture. Exclusive fullscreen cannot display a separate desktop window above the game.
Confirm BDO reached the 3D scene, run long enough to produce frames, and stop the capture normally. If the app reports ETW or access-denied errors, restart it as administrator.
Keep changes focused and preserve the core safety rule: never write to
BlackDesert64.exe.
cargo fmt --all --check
cargo test --workspace
cargo build --workspaceThe workspace contains:
crates/app— egui desktop application;crates/hw— hardware detection and recommendation engine;crates/launch— safe launch inheritance, shortcuts, and read-only verification;crates/bench— PresentMon capture, metrics, and local session storage;vendor/presentmon— pinned PresentMon executable and MIT license.
BDO Optimizer is licensed under the MIT License. Bundled PresentMon is
licensed by Intel under MIT; see
vendor/presentmon/LICENSE.txt.