Addon Project template for Arma3 modifications using ACE3
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github test github issue templates (#10) Nov 19, 2018
addons/main add component_beautified define Jun 6, 2018
extras/blank added missing leading backslash Jun 6, 2018
tools remove trailing 3 Jun 6, 2018
.editorconfig Initial Commit Apr 20, 2016
.gitignore Initial Commit Apr 20, 2016
.travis.yml Create .travis.yml May 14, 2016
AUTHORS.txt Initial Commit Apr 20, 2016
LICENSE MIT License Apr 20, 2016 replace http urls by https (#11) Nov 19, 2018
logo_proj_templ_ca.paa Initial Commit Apr 20, 2016
mod.cpp Initial Commit Apr 20, 2016

ACE Project Template Version ACE Project Template Issues ACE Project Template Downloads ACE Project Template License ACE3 Slack ACE Project Template Build Status

Requires the latest version of CBA A3 and ACE3.

Arma3 AddOn Project template

A project template for Arma3 AddOn projects using the ACE3 framework. This template is based off the ACE3 project structure. It is used in projects such as ACEX and ACEX Artillery.

The project template comes with it's own implementation of tools used within the ACE project, such as build and release scripts, SQF validation scripts and more.

Development Environment

See the ACE3 documentation on setting up your development environment.


Search and replace all mentions of the following:

proj_templ by {your_prefix}

Note that both lower and upper case are necessary. Once done, replace the logo (logo_proj_templ_ca.paa) by your own. Keep the same aspect ratio and file extension (.paa). This is important for good results in game. Also remember to rename the logo file to logo_{your_prefix}_ca.paa.

proj_templ by acex


Once that is all done, run the tool found in the tools directory of your project. This will create the necessary links between your Arma installation, your P Drive and your project source directory.

You can use to pack your PBOs for use during development and use to create binarized PBOs for release.

Releasing a binarized build

You can use make to manage versioning and packing up your release version.

Fresh build and package it up for a release:

tools/make force checkexternal release 1.0.0

Build just a binarized version:



You can also manage versioning through the make tool. To do this, navigate to the addons/main directory. In there, is a file called script_mod.hpp. This contains the following:

#define MAJOR 1
#define MINOR 0
#define PATCHLVL 0
#define BUILD 0

Modify the numbers in here to represent your build version. The example listed above would be: This version will be set in each pbo during binarizing. It will also be used in the signature file names, along the commit hash. This will make it easier to identify the exact version that is being used.

Using CI

This template comes with some basic scripts to validate and enforce parts of the ACE3 coding guidelines. You can find those scripts in the tools directory.

  • - checks all .sqf files in the addons directory and checks for missing brackets, missing semi-colons and tab usage.
  • - checks all .hpp and .cpp files in the addons directory and checks for missing brackets and tabs.

For more information on the guidelines, see ACE3 coding guidelines.

You can use these scripts in combination with CI - if you are on GitHub and use Travis-CI, here is an example:

language: python
- '3.4'
- python3 tools/
- python3 tools/

Adding new components

Adding a new component to your project is done by copying the example component directory and renaming it. Follow these steps:

  • Copy the blank example component directory into the addons directory
  • Rename the component directory name (blank -> {your component name})
  • Do a search and replace of blank by your component name. Take care to preserve case sensitivity.
  • Do a search and replace of Blank by your component name in beautified form, like Ace with upper and lower casing. Take care to preserve case sensitivity at search.
  • Ensure that the required AddOns in the config.cpp file inside your new component are set correctly. You will need at least a requirement to the main component of your project. Any other modifications that your component depends on will also need to be listed here, including your own components that you depend upon.
  • Start work on your component.