V3Xengine works for Victoria 3

Unofficial · not affiliated with Paradox Interactive

Docs · For players

Configuration reference

v3x.ini and every plugin's ini keys with their defaults.

Copied from docs/configuration.md in the V3X repository, file dated 2026-11-13.

Every V3X file lives in binaries/v3x/ (next to the game exe). Everything is optional: with no ini files at all you get the defaults below.

The loader: binaries/v3x/v3x.ini

; no V3X console window (default: the window opens)
console=0

[plugins]
; <dll file name without .dll> = 0 / off / no / false: not loaded at the next start
lazy_mesh = 0
alloc_tracker = 0

Comments go on their own line (; or #); a comment after a value becomes part of the value (lazy_mesh = 0 ; x does not disable lazy_mesh).

A missing key means the plugin is loaded. The mod_menu plugin (main menu > V3X) and the console command modmenu toggle <plugin> edit the [plugins] section for you; changes apply at the next start.

Environment variables: V3X_DISABLE=1 (V3X does nothing for this run), V3X_NO_CONSOLE=1 (no console window), plus the per-plugin ones in the table below.

Plugins

Each plugin reads binaries/v3x/<plugin>.ini; every key is optional and a missing file means the defaults below. Where a plugins/<p>/<p>.ini.example exists it holds the defaults with comments.

plugin keys (default)
devtools profile=0 (or env V3X_PROFILE=1; Ctrl+hotkey toggles), interval_sec=10, hotkey_report=F10, sample_hz=1000, sample_threads=4, unwind_depth=8
devbridge enabled=1, pipe=v3x_devbridge (env V3X_DEVBRIDGE_PIPE wins)
log_filter preset=default (aggressive), enabled=1, min_level=0, dedupe_first=3, dedupe_template=0, summary_interval=60; rules drop/drop_loc/drop_msg, keep/keep_loc/keep_msg (max 128)
keep_history [keep_history] record_all=1, rate_days=28
sim_opt [sim_opt] enabled=1, diag=0, diag_trades=1, throttle=0, throttle_tasks=HandleAutonomousInvestment:3,..., stagger_journal=0, stagger_days=4 (env V3X_NO_SIMOPT=1 = off)
fast_load timeline=1, db_nodes=1, mesh_threads=0, counters=1, pump_yield=0, worker_spin=0, checksum_cache=0 (fails closed in this build), cache_verify=1
mem_tuner [mem_tuner] enabled=1; [options] enabled=1 eager_commit=0 abandoned_page_decommit=1 decommit_delay=10 segment_decommit_delay=100 decommit_extend_delay=0; [collect] after_transition=1 own_hook=0 delay_frames=30; [oom] enabled=1 reserve_mb=128 log_mimalloc_errors=1 max_error_logs=32; [periodic] enabled=1 force=0 check_sec=30 grow_mb=256 min_interval_min=5 max_ms=100; [census] enabled=1 every_min=10; [gui_anim_pool] diag=1
alloc_tracker [alloc_tracker] enabled=0, big_kb=64, sample_kb=256, stack_mb=1, report_interval_s=30, report_top=40, wrapper_max_bytes=256, skip=
cpu_sched [cpu_sched] enabled=1, main=pcores, below_normal=ecores, normal=all, above_normal=pcores, task_threads=0
frame_pacer [frame_pacer] enabled=1, replace_busy_wait=1, idle_fps=20, idle_after_s=30, paused_idle_after_s=3, background_fps=20, minimized_fps=5, sim_idle_ms=3000, tick_render_hz=0, log_interval_s=10
gfx_driver [gfx_driver] prevent_driver_threading=1
asset_stream [asset_stream] enabled=0, texture_streaming=1, cache_mb=512
lazy_mesh mode=off (measure, lazy), skip_debug=1, defer_dirs=gfx/models/portraits/, gfx/models/military/, defer_all=0, eager_contains=bridge, eager_file=lazy_mesh_eager.txt, startup_from_report=1, prefetch_on_game=1, prefetch_all=0, prefetch_gap_ms=20, merge_report=1, prefetch_after_s=0, wait_timeout_ms=60000, log_loads=1
map_cache mode=measure (off, on), spike_ms=250, load_log_ms=50, load_log_mb=8, log_budget=2000, big_reserve_mb=16, summary_sec=300; mode=on only: budget_mb=256, max_texture_mb=32, repeat_min=2, max_pins=1024, unknown_size_kb=1024
enhance [enhance] binary_saves_in_debug=1, deflate_level=0, speed_table=0, speed1=2.0, speed2=1.0, speed3=0.5, speed4=0.25, save_timing=1, lean_debug=0, lean_gui=1, lean_tooltips=1, lean_theater_cache=1, fast_speed5=0

hello, ironman_console, crash_logger, devconsole, content_packs and tick_profiler have no ini.