Startup Parameters – Arma 3
These parameters can be configured by creating a new shortcut on your desktop and then adding the appropriate option in the target line.
Steam
- Choose the game in Steam\Library
- Right click on the game
- Select properties
- Hit "Set launch options"
- Example
- -nosplash -mod=test;x
\test;c: \arma3 \test2
Windows
When working with shortcuts, cmd launch options: there is max characters limit for the executing line, use -par (see: Startup Parameters Config File) to avoid it.
Startup Command Line | parameters file |
---|---|
Arma3.exe -par "D:\Arma 3 Startup Parameters.txt" |
-skipIntro -noSplash -enableHT -hugePages -noLogs |
Available Parameters
- adapter
- autoinit
- autotest
- bandwidthAlg
- bepath
- beta
- buldozer
- cfg
- checkSignatures
- client
- command
- config
- connect
- cpuCount
- crashDiag
- d3dNoLock
- d3dNoMultiCB
- debug
- debugCallExtension
- disableServerThread
- doNothing
- enableHT
- exThreads
- filePatching
- host
- hugepages
- init
- ip
- 2.04 language
- 1.98 limitFPS
- loadMissionToMemory
- malloc
- maxMem
- maxVRAM
- mod
- name
- netlog
- noCB
- noFilePatching
- noFreezeCheck
- noLand
- noLogs
- noPause
- 2.10 noPauseAudio
- noSound
- noSplash
- par
- password
- pid
- 2.06 preprocDefine
- port
- posX
- posY
- profiles
- ranking
- server
- serverMod
- 2.10 setThreadCharacteristics
- setupHost
- showScriptErrors
- skipIntro
- unit
- window
- world
- worldCfg
Display Options
-window | Displays Arma windowed instead of full screen. Screen resolution / window size are set in arma3.cfg. |
-posX=<Integer> | Sets the default X Position of the Window. |
-posY=<Integer> | Sets the default Y Position of the Window. |
-adapter=<Integer> | Sets the default Video Adapter. |
Game Loading Speedup
-noSplash | -noSplash is a startup option that allows you to bypass the splash screens on startup of Arma 3. |
-world=<string> | Select a world loaded by default. Example: -world=Utes. For faster game loading (no default world loaded and world intro in the main menu, only at game start, disabled): -world=empty. |
-worldCfg=<String> | Init Landscape by the given world config |
-skipIntro | Disables world intros in the main menu permanently. |
Performance
-maxMem=<number> | Overrides memory allocation limit to a certain amount (in megabytes). 1024 MiB is a hard-coded minimum (anything lower falls back to 1024). The maximum is influenced by your operating system (any value over the maximum will be reverted to this value):
Without the -maxMem parameter the engine attempts to set this parameter internaly to a reasonable value often defaulting to max values as described above. Note that setting maxMem to 2000 does not mean that the game will never allocate more then 2000 MiB. It says that the game will do everything in its power to not cross this limit. | ||||||||||||||||||||||||
-maxVRAM=<number> | Defines Video Memory allocation limit to number (in megabytes). Use to resolve e.g. Windows problem: http://support.microsoft.com/kb/2026022/en-us?p=1. Minimum value is 128 MiB (anything lower falls back to 128). The value is ignored (under DX11) if engine properly detected VRAM size, minus 20% reserve with ceiling limit 300MB max.. | ||||||||||||||||||||||||
-noCB | Turns off multicore use. It slows down rendering but may resolve visual glitches. | ||||||||||||||||||||||||
-cpuCount=<number> | Change to a number less or equal than numbers of available cores. This will override auto detection (which equate to native cores).
The best way to simulate dual core on quad core is to use -cpuCount=2 when you run the game and then change the affinity to 2 cores to make sure additional cores can never be used when some over-scheduling happens. | ||||||||||||||||||||||||
-exThreads=<number> | Change to a number 0,1,3,5,7. This will override auto detection (which use 3 for dualcore and 7 for quadcore).
All file operations go through a dedicated thread. This offloads some processing from the main thread, however it adds some overhead at the same time.
| ||||||||||||||||||||||||
-malloc=<string> | Sets the particular memory allocator to be used. Significantly affects both performance and stability of the game. More details. | ||||||||||||||||||||||||
-noLogs | Be aware this means none errors saved to RPT file (report log). Yet in case of crash the fault address block info is saved. More details here. | ||||||||||||||||||||||||
-enableHT | Enables the use of all logical CPU cores for parallel tasks processing. If your CPU does not support Hyper-Threading or similar technology, this parameter is ignored. When disabled, only physical cores are used. Note that enabling this parameter may slightly improve or harm the performance depending on a scenario. This parameter may be overriden by -cpuCount so if you want to use the maximum number of CPU cores use "-enableHT" without "-cpuCount". | ||||||||||||||||||||||||
-hugepages | Enables hugepages with the default memory allocator (malloc) for both client/server (https://forums.bistudio.com/topic/160288-arma-3-stable-server-166-performance-binary-feedback/?page=74#comment-3130011) | ||||||||||||||||||||||||
-setThreadCharacteristics | 2.10 Registers the game's executable as "Game" in Windows for performance improvements. |
Profile Options
-name=<string> | Profile name. |
-profiles=<path> | Location of user-profile folder. If a custom path is set, default files and folders (logFiles, AnimDataCache, DataCache, SteamPreviewCache....) located by default in %localappdata% |
-unit=<number> | parameter passes a unit's ID number to the binary, translates to https://units.arma3.com/my-units#?unit=<number> |
Developer Options
-noPause | Allow the game running even when its window does not have focus (i.e. running in the background) |
-noPauseAudio | 2.10 Keeps audio running in background while tabbed out. Should be used together with -noPause to work correctly |
-showScriptErrors | Introduced to show errors in scripts on-screen. In Eden Editor, script errors are always shown, even when this parameter is not used. |
-debug | Enables more verbose error logging. See Arma 3: Debug Mode |
-noFreezeCheck | Disables the freeze check. It creates otherwise max 4 dumps per game run in total - 2 per distinct freeze. Similar to Crash Files. |
-noLogs | Be aware this means none errors saved to RPT file (report log). Yet in case of crash the fault address block info is saved. More details here. |
-filePatching | Allow the game to load unpacked data. For more info see CMA:DevelopmentSetup (since Arma 3 1.49+). |
-init=<command> | Run scripting command once in the main menu. For example to start a certain SP mission of choice automatically. Example: -init=playMission["","M04Saboteur.Sara"]. See also playMission. The Mission has to reside in the "arma3\Missions" folder, NOT the user directory. |
"<path>\mission.sqm" | Load a mission directly in the editor. Example: "c:\arma3\users\myUser\missions\myMission.intro\mission.sqm" |
-autotest | Loads automatically a series of defined missions and on error writes to a log file.
The parameter can be used to automatically run a series of test missions. For example FPS measurement or scripting validation.
The autotest.cfg looks like: class TestMissions
{
class TestCase01
{
campaign = "";
mission = "autotest\TestCase01.Desert_E"; // relative path to the arma directory
};
class TestCase02
{
campaign = "";
mission = "C:\arma3\autotest\TestCase02.Desert_E"; // absolute path
};
};
Rpt entry: <AutoTest result="FAILED">
EndMode = LOSER
Mission = autotest\TestCase01.Desert_E
</AutoTest>
If possible use simple worlds, like Desert, to keep the loading times short. The loading screen command might be useful as well to speed up task that need no rendering. |
-beta=<string> | Loads the specified beta sub-folders. Separated by semi-colons. Absolute path and multiple stacked folders are possible. In Linux multiple folders arguments need the following separation syntax: -mod=betamod1\;betamod2\;betamod3 This allows use of beta build w/o disabling in-game mod/extension management (in UI menu). |
-checkSignatures | Introduced to provide thorough test of all signatures of all loaded banks at the start game. Output is in .rpt file. |
-d3dNoLock | Doesn't lock the VRAM |
-d3dNoMultiCB | D3D uses Single Constant Buffers instead of Multiple Constant Buffers |
-crashDiag | extra crash-logging in performance binary, added on v18 (https://forums.bistudio.com/topic/160288-arma-3-stable-server-154-performance-binary-feedback/?p=2979101) |
-noFilePatching | (deprecated) Ensures that only PBOs are loaded and NO unpacked data. It was replaced in favor of -filePatching parameter. |
-debugCallExtension | Logs extension calls in the rpt log like this: https://i.gyazo.com/afb3f6f89ad6bf51aad01e1c3f9c7eac.png |
-command=<name> | Creates named pipe "\\.\pipe\name" for receiving predefined set of commands. See Arma 3: Named Pipe |
-language=<language> | 2.04 Starts client with preferred language. Recognised languages: english, czech, french, german, hungarian, italian, japanese, korean, original, polish, portuguese, russian, spanish, turkish, chinese, chinesesimp |
-preprocDefine=<macro> | 2.06 Defines a macro and optionally its value. Multiple macro can be defined by using this parameter multiple times.-preprocDefine="CMD__MACRONAME=MACROVALUE" -preprocDefine=CMD__MACRONAME -preprocDefine=CMD__MACRO1 -preprocDefine=CMD__MACRO2 |
Misc.
-buldozer | Starts Buldozer mode. |
-noLand | Starts with no world loaded. (Used for Buldozer) |
-noSound | Disables sound output. |
-doNothing | Engine closes immediately after detecting this option. |
Modifications
-mod=<string> | Loads the specified sub-folders for different mods. Separated by semi-colons. Absolute path and multiple stacked folders are possible. In Linux multiple folders arguments need the following separation syntax: -mod=mod1\;mod2\;mod3 This setting always auto-disable in-game mod/extension management (in UI menu). Complex example:
-mod=test;x
"Relative path" starts from, or is rooted at, the directory from where the Arma 3 executable has been started, and is not always the same where the executable is, like in betas. |
Client Network Options
-connect=<ip> | Server IP to connect to. |
-port=<number> | Server port to connect to. |
-password=<string> | Server password to connect to. |
-host | Start a non-dedicated multiplayer host. |
Server Options
-setupHost | Start the game in the setup server display, works with the client exe. |
-server | Start a dedicated server. Not needed for the dedicated server exe. |
-port=<number> | Port to have dedicated server listen on. |
-pid=<filename> | File to write the server's PID (process ID) to. The file is removed automatically when the exe is stopped. Only works for dedicated servers. |
-ranking=<filename> | -ranking is a startup option allowing you to output ranking info or otherwise know as player stats.
The windows user account would need permissions to write to the folder of choice.
Output sample: class Player1
{
name = "PlayerName";
killsInfantry = 71;
killsSoft = 3;
killsArmor = 5;
killsAir = 5;
killsPlayers = 0;
customScore = 0;
killsTotal = 84;
killed = 3;
};
|
-netlog | Enables multiplayer network traffic logging. For more details see server configuration. |
-cfg=<filename> | Selects the Server Basic Config file. Config file for server specific settings like network performance tuning. |
-config=<filename> | Selects the Server Config File. Config file for server specific settings like admin password and mission selection. |
-profiles=<path> | Path to the folder containing server profile. By default, server logs are written to server profile folder. If folder doesn't exist, it will be automatically created.
Does not work on Linux, no profile will be created or used; instead, remove this parameter and the profile will be created in ~ |
-bepath=<path> | By default BattlEye will create BattlEye folder inside server profile folder. With -bepath param it is possible to specify a custom folder. For example: -bepath=C:\MyBattlEyeFolder, or if the path contains spaces, "-bepath=C:\Users\KK\Desktop\Some Folder With Spaces" (enclosed in quotes). |
-ip=<nnn.nnn.nnn.nnn> | Command to enable support for Multihome servers. Allows server process to use defined available IP address. (b1.57.76934) |
-par=<filename> | Command to read startup parameters from a file. For more details see Startup parameters config file |
-client | Launch as client (console). Useful for headless clients. |
-loadMissionToMemory | Server will load mission into memory on first client downloading it. Then it keeps it pre-processed pre-cached in memory for next clients, saving some server CPU cycles, |
-autoInit | Automatically initialize mission just like first client does.
Note: Server config file (server.cfg) must contain "Persistent=1;", if it is 0 autoInit skips. |
-serverMod=<string> | Loads the specified sub-folders for different server-side (not broadcasted to clients) mods. Separated by semi-colons. Absolute path and multiple stacked folders are possible.
In Linux multiple folders arguments need the following separation syntax: -mod=mod1\;mod2\;mod3. |
-disableServerThread | Option to disable the server send messaging thread in case of random crashing (may also decrease performance of server on multicore CPUs) |
-bandwidthAlg=2 | Uses a new experimental networking algorithm that might be better than the default one. |
-limitFPS=300 | 1.98 Start parameter to adjust server FPS limit between 5-1000 FPS (default 50). |
Closer Description
-profiles
-profiles is a startup option allowing you to choose an alternate location for the user profile files, such as downloaded missions and .cfg files.
The windows user account would need permissions to write to the folder of choice.
- An example might be like this
- "C:
\arma3 \arma3.exe" -profiles=C: \arma3 \Profiles - or
- "C:
\arma3 \Arma3.exe" -profiles=Profiles
would store all your profiles/configs/downloaded content into your ROOT Arma folder under the folder name "Profiles"
Path Definition
There are a few basics to keep in mind when defining path as part of a parameter.
Spaces
The path and -profiles need to be enclosed with quotes if it contains spaces, e.g "-profiles=c:
Relative vs Absolute
You can define most, if not all path in both ways.
- Relative
- -profiles=profiles
- Absolute
- -profiles=C:
\arma3 \profiles
The relative path is normally based on the game main folder, where the exe resides in. Using beta patches does NOT change this! However when you use -profiles, some commands use this path defined there as base.