Full ZScript files are referred to as "translation units." This terminology comes from the C standard, and refers simply to the entirety of a ZScript source file. ZScript files are searched for in lumps named zscript with any extension, including none. The standard extension is .zs, but .zsc, .zc and .txt are common as well.

Translation Units

The base translation unit zscript may start with a version directive, then followed by any number of top-level definitions and #include directives. Included translation units may not have version directives.

All keywords and identifiers in ZScript are case insensitive.


VersionDirective? TopLevelDefinition*

Version Directives

A version directive may be placed at the very beginning of a ZScript file. The version directive describes the ZScript version to use. By default ZScript is version 2.3, the original ZScript specification. This old version is not supported by this documentation and it is highly encouraged to always use the latest version of ZScript. The minimum version supported by this documentation is 3.0.


version StringLiteral

Top-level Definitions

A ZScript file can have one of several things at the top level of the file, following a version directive.


Include Directives

Include directives include other files to be processed by the ZScript compiler, allowing you to organize and separate code into different files.

Note that included files will conflict with other mods. If two mods have a file named zscript/MyCoolClasses.zsc and both include it, expecting to get different files, the engine will fail to load with a script error.

To avoid this, it is suggested to place your ZScript code under a uniquely named sub-folder.


#include StringLiteral


Version Directives

version "4.3.3"

Include Directives

#include "zscript/MyCoolMod/MyCoolClasses.zsc"