SQF Bytecode: Difference between revisions
Jump to navigation
Jump to search
Lou Montana (talk | contribs) m (Text replacement - "\[ *(https?:\/\/[^ = ]+) +([^= ]+) *\]" to "{{Link|$1|$2}}") |
Lou Montana (talk | contribs) m (Fix CSS) |
||
Line 6: | Line 6: | ||
{| class="wikitable valign-top" style="margin: auto; width: 80em" | {| class="wikitable valign-top" style="margin: auto; max-width: 80em" | ||
|+ Using bytecode as opposed to raw scripts | |+ Using bytecode as opposed to raw scripts | ||
! style="width: 66%" | Pros | ! style="width: 66%" | Pros |
Latest revision as of 19:44, 12 November 2024
An SQF bytecode is a file that contains the instructions to be executed in an SQF script. The bytecode is obtained after parsing the SQF script, which is written in a human-readable text-based file. Unlike an SQF script, SQF bytecode is not human-readable.
As of Arma 3 v2.04, it is possible to use SQF bytecode files (with the .sqfc extension) as compilation sources of in-game scripts instead of normal .sqf scripts, using the compileScript command. The Functions Library has also been modified to use this command.
Pros | Cons |
---|---|
|
|
How to use SQF Bytecode
In order to use bytecode, a SQF script compiler is needed. See Dedmen's Arma Script Compiler for an example of an SQF compiler.
To compile an SQF script into SQF Bytecode using Arma Script Compiler:
- Mount the P drive (called "Mount the Project Drive" in Arma 3 Tools)
- Copy the script files into a folder on the P drive. They can be organized into sub-folders if needed.
- Download Arma Script Compiler and extract the files into a folder.
- Create a sqfc.json file next to the script compiler's executable file (ArmaScriptCompiler.exe).
- Edit the sqfc.json file according to the following template:
{ "inputDirs": [ "P:/folder1/", "P:/folder2/" ], "includePaths": [ "P:/" ], "excludeList": [ "subfolder1", "subfolder2", "subfolder3/subfolder4" ], "outputDir": "P:/", "workerThreads": 8 }
- inputDirs: List of folders that should be searched for .sqf scripts. Search is performed recursively (sub-folders are searched as well)
- includePaths: list of paths that contain the #included files into the scripts. This should be set the same as the P drive path P:
\ to work correctly. If an external file is being #included by the .sqf script, such as #include "\a3\ui_f\hpp\definedikcodes.inc"
, you need to create that file on the P drive, such as: P:\a3 \ui_f \hpp \definedikcodes.inc - outputDir: Set this the same as P drive if you want the .sqfc files to be created next to each .sqf file.
- excludeList: List of folders to be excluded from searching.
- workerThreads: How many threads will compile the scripts. Each thread will compile one file at a time
- Execute ArmaScriptCompiler.exe. It will compile the scripts and create an .sqfc file next to each .sqf file.
- In order to use the bytecode as compilation source in the game, use the compileScript command, or the Functions Library.