Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/armory3d/armorpaint/llms.txt

Use this file to discover all available pages before exploring further.

ArmorPaint uses amake — a custom build tool located at base/tools/amake — to generate native project files for each platform. amake reads project.js configuration files in both base/ and paint/ to collect C source files, include paths, libraries, defines, and platform-specific backends. No CMake or other external build system is required; the only hard external dependency is a C compiler appropriate for your platform.

Prerequisites

Install the appropriate compiler and tools for your target platform before cloning:
PlatformRequired Toolchain
WindowsVisual Studio with Clang tools for Windows component enabled
Linuxclang plus platform libraries (see Linux tab below)
macOSXcode with command-line tools
iOSXcode with an iOS SDK and a provisioned device or simulator
AndroidAndroid Studio with NDK
Allgit

Clone the Repository

Start by cloning the repository. The steps below assume you have run these commands first:
git clone https://github.com/armory3d/armorpaint
cd armorpaint/paint
All platform build commands are run from the armorpaint/paint directory.

Platform Build Steps

1

Enter the paint directory

Open a Developer Command Prompt for VS (or a terminal with the VS environment loaded) and navigate to the paint directory:
cd armorpaint\paint
2

Run amake to generate the Visual Studio solution

..\base\make
amake reads project.js, resolves all source files and libraries, and writes a Visual Studio solution to build\ArmorPaint.sln.
3

Open the generated solution

Open build\ArmorPaint.sln in Visual Studio.
4

Build and run

Select the Release or Debug configuration, then press Build → Build Solution (or Ctrl+Shift+B) followed by Debug → Start Without Debugging (Ctrl+F5).

Additional Build Options

--compile — Compile in Place

Pass --compile to invoke the C compiler immediately after project generation rather than opening an IDE:
../base/make --compile
Useful for CI pipelines or headless environments where launching Visual Studio or Xcode is not desired.

--embed — Embed Data Files

Pass --embed to bundle asset files directly into the binary using the C23 #embed directive. This produces a single self-contained executable with no separate asset directory:
../base/make --embed
The --embed flag requires clang 19 or newer. Using an older compiler will result in a preprocessor error on the #embed directive.

--js <script> — Run a JavaScript Tool Script

amake can execute JavaScript tool scripts during the build. Pass the script path with --js:
../base/make --js base/tools/extract_locales.js <locale_code>
The script is executed by the bundled JS runtime inside amake.

Generating a Locale File

To generate a locale JSON file for a language, run the extract_locales.js tool from the repository root (not the paint/ subdirectory):
./base/make --js base/tools/extract_locales.js <locale_code>
Replace <locale_code> with an ISO 639-1 language code, for example fr for French or ja for Japanese. The tool generates the file at:
paint/assets/locale/<locale_code>.json
Locale strings inside that file can then be translated and the file committed alongside the source.
The repository targets developers and the main branch may contain unstable or work-in-progress code. If you need a stable release, download a pre-built binary from armorpaint.org/download.

Build docs developers (and LLMs) love