Docs

Capturing Build Details

Customize how build details are captured.

Version Forge captures the Build Number, Changelist, and Build Date when your project compiles. Each has a Source setting on the settings page which also shows a Resolves From detail so you can see what the current choice reads.

Build number

The Build Number Source setting will change where the build number is read from.

SettingReads from
Auto Detect (default)The first CI system found in the build environment. See the table below.
A specific CI systemThe selected system's standard build number environment variable. See the table below.
Environment VariableThe variable name set in the Build Number Env Var setting. The default is BUILD_NUMBER.
Command Line ArgumentThe argument name set the in Build Number Arg Name setting. The default is -BuildNumber=.
NoneNothing. The build number will be 0.

Supported CI Systems

Version Forge supports the following CI systems out of the box but can work with any others using custom command line arguments or environment variables. For auto-detection it will look for environment variables (referred to as signals) typically set by each, and will use the first one found which also has a numeric build number set.

CI SystemSignal VariableBuild Number Variable
JenkinsJENKINS_URLBUILD_NUMBER
TeamCityTEAMCITY_VERSIONBUILD_NUMBER
GitHub ActionsGITHUB_ACTIONSGITHUB_RUN_NUMBER
GitLab CIGITLAB_CICI_PIPELINE_IID
Azure DevOpsTF_BUILDBUILD_BUILDNUMBER
CircleCICIRCLECICIRCLE_BUILD_NUM
AppVeyorAPPVEYORAPPVEYOR_BUILD_NUMBER
BuildkiteBUILDKITEBUILDKITE_BUILD_NUMBER
HordeUE_HORDE_JOBIDuebp_CL

Horde job IDs are not numeric, so Version Forge uses the synced changelist (uebp_CL) as the build number.

If auto-detect fails, or the selected CI system's variables are not set, the Build Number will be set to 0 and UBT will log out the details.

Changelist

The Changelist Source setting will change where the changelist value is read from.

SettingReads from
Auto Detect (default)Perforce, Unity Version Control, or Git Commit Count, as specified below.
PerforceThe P4_CHANGELIST or uebp_CL environment variables if set by CI.
Unity Version ControlThe PLASTICSCM_CHANGESET_ID environment variable if set by CI.
Git Commit CountThe output of git rev-list --count HEAD if git is available in the workspace.
Git Commit HashThe output of git rev-parse --short HEAD if git is available in the workspace.
Environment VariableThe variable name set in the Changelist Env Var setting. The default is P4_CHANGELIST.
Command Line ArgumentThe argument name set in the Changelist Arg Name setting. The default is -Changelist=.
NoneNothing. The changelist value will be empty.

The git sources run git in your project folder, so git must be on the PATH. If git cannot run, the changelist value will be empty.

Build date

The Build Date Source setting will change where the date comes from.

SettingReads
Now (default)The current UTC time when UBT compiles the target.
Environment VariableThe variable name set in the Build Date Env Var setting. The default is BUILD_DATE.
Command Line ArgumentThe argument name set in the Build Date Arg Name setting. The default is -BuildDate=.

Accepted date formats: yyyyMMdd, yyyy-MM-dd, and ISO 8601, for example: 2026-10-07T14:30:00Z.

Give an entire build chain the same timestamp

When a CI build chain compiles multiple targets they will be compiled at different times, and the Now setting can result in different timestamps for each target.

To ensure each target has the same Build Date, pass each a consistent timestamp value:

Set Build Date Source to Environment Variable or Command Line Argument and configure a variable name.
At the start of the CI job set a date value, for example 2026-10-07T14:30:00Z.
Pass that date value to every build step as the variable you configured in Step 1.

Your CI system may already set a build start time environment variable that you can use instead. If so, you can set that variable as the Build Date Source setting.

Command Line Arguments

Command line arguments are read from the Unreal Build Tool (UBT) command line:

Build.bat MyGame Win64 Shipping -Project="C:\MyGame\MyGame.uproject" -BuildNumberOverride=418 -ChangelistOverride=98765

Or when you package with Unreal Automation Tool (UAT), pass them through -ubtargs=.

RunUAT.bat BuildCookRun -project="C:\MyGame\MyGame.uproject" -build -cook -stage -pak -package -configuration=Shipping -platform=Win64 -ubtargs="-BuildNumberOverride=418"

Overrides

The following arguments can be passed to override any of the above settings.

ArgumentOverridesExample
BuildNumberOverrideThe build number.-BuildNumberOverride=418
ChangelistOverrideThe changelist.-ChangelistOverride=98765
BuildDateOverrideThe build date.-BuildDateOverride=2026-10-07T14:30:00Z

The build values file

After the values are resolved, Version Forge saves them in a small ini file and packages it with your game that then gets read at startup.

<Project>/Intermediate/VersionForge/BuildValues/<Platform>/<Configuration>/<Target>/VersionForgeBuild.ini
[VersionForge]
BuildNumber=418
Changelist=1520
BuildDate=2026-11-23T14:30:00Z
NetworkVersion=1.5.7
  • It's rewritten on every build and should not be manually edited.
  • The path is logged as Build values file: in the build log.
  • If the packaged game doesn't contain the file, the values will be their defaults.
  • If your compile and packaging run on different machines, see Distributed builds.

Reading the build log

Version Forge outputs to the UBT build log with a [VersionForge] prefix and will report how it resolved captured values, any errors that occurred, and the final version string. If any value is not what you expected, the log should tell you why.

Example:

[VersionForge] Build Number: 418, Resolved via AutoDetect (JENKINS_URL): BUILD_NUMBER
[VersionForge] Changelist: 1520, Resolved via AutoDetect (git): git rev-list --count HEAD
[VersionForge] 1.5.7+Windows.Shipping.20261123.418

On this page