slonopotamus / octobuild

Simple distributed compile system for C++

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

octobuild

Build Status Download Chocolatey package Homebrew formula

Overview

This project allows you to speedup re-compilation of Unreal Engine (and UE-based games) by caching intermediate compilation files, reducing time by 60-90%.

Supported platforms

  • Android

  • iOS

  • Linux

  • macOS

  • PS4

  • PS5

  • Win64

  • Xbox One

  • Xbox Series

Installation

Chocolatey (Windows)

octobuild is available via Chocolatey package manager. If you already have Chocolatey installed, you can just run the following command from elevated console:

choco install octobuild

WinGet (Windows)

winget install octobuild

Manual (Windows)

  1. Download MSI installer

  2. Double-click on it

  3. Next-next-next

deb package (Ubuntu 20.04, 22.04)

You can install octobuild on Ubuntu using the following commands:

# Set up repository
curl -1sLf 'https://dl.cloudsmith.io/public/octobuild/octobuild/setup.deb.sh' | sudo -E bash

# Install octobuild
sudo apt-get install octobuild

Manual (Ubuntu/Debian)

  1. Download deb package

  2. Install it via dpkg -i <octobuild>.deb

Homebrew (macOS/Linux)

octobuild is available via Homebrew package manager.

If you already have Homebrew configured, you can install octobuild with a single command:

brew install octobuild

Usage

You do not need to use octobuild directly. Just build Unreal Engine as usual, via Unreal Build Tool, Unreal Automation Tool or your IDE. Under the hood, they will automatically use octobuild.

Also see Linux notes and macOS notes.

Cleaning cache

You can use xgConsole /reset command to clean octobuild cache.

Configuration files

You can list configuration files and check actual configuration by running ib_console/xgConsole without parameters.

Platform System-wide config User-specific config (overrides system defaults)

Linux

/etc/octobuild/octobuild.conf

$XDG_CONFIG_HOME/octobuild/octobuild.conf (with fallback to ~/.config/octobuild/octobuild.conf when $XDG_CONFIG_HOME is not set)

Windows

%ProgramData%\octobuild\octobuild.conf

%AppData%\octobuild\octobuild.conf

macOS

/etc/octobuild/octobuild.conf

~/Library/Application Support/octobuild/octobuild.conf

Environment variables

Environment variables have higher priority than config files.

OCTOBUILD_CACHE (string)

specifies path to directory where octobuild cache is stored. Default is %LocalAppData%/octobuild/cache on Windows, ~/.cache/octobuild on Linux and ~/Library/Caches/octobuild on macOS.

OCTOBUILD_CACHE_LIMIT_MB (number)

specifies octobuild disk cache size limit in megabytes. Defaults is 64GB.

OCTOBUILD_PROCESS_LIMIT (number)

specifies max number of concurrent processes octobuild will spawn. Default is number of cores.

OCTOBUILD_USE_RESPONSE_FILES (bool)

specifies whether octobuild should use compiler response files to overcome commandline length limitation. Default is true on Windows and false on other platforms. Enable this if you’re getting ERROR: The filename or extension is too long. (os error 206) on Windows.

Benchmark

Linux build tested on AMD Ryzen 7 3700X, 32GB DDR4 @ 3200MHz, SSD and Unreal Engine 5.0.3 by running <engine>/Engine/Build/BatchFiles/RunUAT.sh <game>.uproject <game>Editor DebugGame Linux.

Windows build tested on Intel Core i7-9700F, 32GB DDR4 @ 2400MHz, SSD and Unreal Engine 5.0.3 by running <engine>/Engine/Build/BatchFiles/RunUBT.bat <game>.uproject <game>Editor DebugGame Win64.

Console builds tested on Intel Core i7-9700F, 32GB DDR4 @ 2400MHz, SSD and Unreal Engine 5.0.3 by running <engine>/Engine/Build/BatchFiles/RunUBT.bat <game>.uproject <game> DebugGame <platform>.

Platform Without octobuild octobuild (0% cache) octobuild (100% cache)

Linux

3m54s

3m53s

36s

Win64 (MSVC 2019)

8m4s

10m6s

2m15s

PS4

6m12s

7m10s

2m34s

PS5

5m48s

6m56s

2m11s

XB1

4m40s

6m10s

1m39s

XSX

4m49s

5m42s

1m40s

Linux notes

This project requires several patches to Unreal Engine:

  • #9933: Allow usage of octobuild on Linux

  • #9903: Restore ability to use XGE executor on non-Windows platforms (already included in UE >= 5.2)

  • #9932: Fix action graph copy action on non-Windows platforms (already included in UE >= 5.2)

macOS notes

This project requires minor patching of Unreal Engine:

  • #10191: Allow usage of octobuild on macOS (already included in UE >= 5.3)

  • #9903: Restore ability to use XGE executor on non-Windows platforms (already included in UE >= 5.2)

  • #9932: Fix action graph copy action on non-Windows platforms (already included in UE >= 5.2)

Building from source

  1. Install Rust

  2. (Windows only) Install Visual Studio 2019 or 2022. Enable "Desktop development with C++" workload. Also, enable "C++ 2019 Redistributable MSMs" "C++ 2022 Redistributable MSMs" in individual components.

  3. Clone octobuild Git repository

  4. Run cargo build in repository root to compile octobuild

About

Simple distributed compile system for C++

License:MIT License


Languages

Language:Rust 73.5%Language:SWIG 25.9%Language:PowerShell 0.6%