Building Arma 3 mod made easier using the Arma Dev tooling extension This Visual Studio Code extensions will optimize your workflow on building and signing pbo's, preview dialog controls and automate execution and installation.
Before using the Arma Dev extension, please make sure you have properly installed the Arma 3 Tools from Steam.
Open your existing Arma (server / client) and run the Arma 3: Configure
command to setup the project.
Please refer to the Configuration section for further details
Below you can find all available commands
Arma 3: Configure
: to setup the projectArma 3: Build
: to pack / build pbos defined in your configuration fileArma 3: Binarize
: binarize cpp files from explorer context menuArma 3: UnBinarize
: Unbinarize bin files from explorer context menuArma 3: Run Server
: start the arma3server with server mod path includedArma 3: Run Client
: to start the game from your local computerArma 3: Run Client (With Logging)
: to start the game and display the logfileArma 3: Generate Key
: generate a private key to sign the client pbo'sArma 3: Transfer Files
: transfer server pbos to destination server using SFTPArma 3: Toggle Code Live
: please read the below "Toggle Code Live" section for further detailsThe configuration file is located in .vscode/arma-dev.json
and contains the following options.
title
: The title of your project (no used yet)name
: The short name of the addon (this name is used as output folder)author
: author namesteamPath
: The default steam path used for this project (default: auto-detect)buildPath
: destination folder of all pbo files being generatedprivateKey
: the private key path being used to sign the client addonserverDir
: all server directories a pbo files should be created for (E.g. core and core_config)serverUse32bit
: use legacy 32bit version of arma3server.exeserverMods
: additional server mods being loaded when running arma3serverclientDirs
: all client directories a pbo files should be created for (ussualy its one or none)clientMods
: additional client mods being loaded when running arma 3version
: a version number to track possible changes (not immplemented) ftpConnection
: setup SFTP connection using host, username and password (optionally path)ftpConnectionFile
: setup SFTP connection by using a separate filepostProcess
: run some additional scripts once a command has been successfully executed - see "Post Processing"With "Code live" you can edit *.sqf files while Arma is running.
It uses symlinks (refering to its workspace source) and the -filePatching
startup parameter.
A proper configured $PBOPREFIX$ for every addon file is required
So, how to use it
Arma 3: Toggle Code Live
to create all necessary symlinks into "Arma 3\x" directoryArma 3: Run Client
to start Arma with all necessary parameters (-filePatching)Arma 3: Run Server
to prepare a server configuration and run itexecVM
or preprocessFile*
to "reload" the changes.compileFinal
) you can use execVM
tooPlease be aware of the following
allowedFilePatching = 2;
(which is ussually the case when running with Arma 3: Run Server
)verifySignatures = 0;
to bypass itCode Live
to either use the source or PBO file (located in buildPath)compileFinal
/ config.cpp) cannot be overwritten (anti cheat)HINT: Use [] spawn { compile preProcessFile "x\youraddon\yourfile.sqf" };
instead of execVM "x\youraddon\yourfile.sqf"
from console to update file modifications
The post processing option (defined in .vscode/arma-dev.json
) can be helpful to run additional tasks once a command has been successfully executed.
An example of running a script when for instance all files are transfered to the remote can look the following:
"postProcess": {
"transferFiles": "./restart-server.ps1"
}
Please note these commands are always executed locally
PLEASE MAKE SURE STEAM IS RUNNING AS IT IS REQUIRED FOR PACKING
arma-dev.logLevel
: setup the log level (Info | Debug | Error)arma-dev.dialogAxisMode
: How to display the dialog control axis (0 = truncated, 1 = original) restart requiredarma-dev.steamPath
: The default steam path used for arma-dev (default: auto-detect)