Note: See ReleaseProcessDraft for a more specific (and updated) list.

Brief approximation:

  • Ensure Alpha name and number have been updated in label.xml, mainmenu.xml, mod.json, and Pyrogenesis.cpp.
  • Feature freeze + regenerate the translation templates via and the translations (for backup purposes) via
  • Test for release blocking bugs (minimum 5 days, promised to the translators)
  • Commit freeze + pull final version of translations for this version and check for vandalism
  • Edit the script to include all languages that need to be in the release (Include only >90% languages supported by our fonts and font system - see progress on Transifex)
  • Test some more
  • Change the MUC room for the lobby in default.cfg and on the server. (Maybe reset the rankings)
  • Change the bot's welcome message to notify users that a new version is available.
  • Check that SVN compiles and runs on Linux
  • Check that SVN compiles and runs on Linux (Gentoo) with --without-pch
  • Check that SVN compiles and runs on Windows
  • Check that SVN compiles and runs on OS X
  • Run Windows autobuilder (or build manually with VS 2008 if autobuild is down - update svn_revision.txt first!)
  • Update public trunk checkout
  • Ensure it is clean (svn st --no-ignore)
  • Check that debug/unnecessary files are excluded from the Windows installer script source/tools/dist/0ad.nsi
  • Run source/tools/dist/
  • Build OS X app bundle:
    • Requires OS X and Xcode
    • Read documentation in, update options if necessary (defaults work with Xcode 4.2+ and Lion)
    • Run --release, by default it creates a 64-bit 10.7+ compatible bundle, ~/0ad-export/
    • Package app into DMG (as outlined here and here)
      • Use Disk Utility to create an uncompressed DMG large enough to hold
      • Set background image, build/resources/dmgbackground.png
      • Copy and Applications shortcut, arrange icons, set folder view options as desired
      • Create a bzip2-compressed DMG with hdiutil: hdiutil convert 0ad.dmg -format UDBZ -o 0ad-[version]-alpha-osx64
  • Test on Windows:
    • Delete %localappdata%\0ad\cache
    • Extract release
    • Run pyrogenesis.exe, check everything seems to work
    • Run Atlas.bat, check everything seems to work
    • Delete %localappdata%\0ad\cache
    • Build Debug version, check everything seems to work
    • Run test project
  • Test on Linux:
    • Delete ~/.cache/0ad
    • Extract release
    • Build with config=debug, run test_dbg, run game, run editor
    • Build with config=release, run test, run game, run editor
  • Test on OS X:
    • Delete ~/Library/Caches/0ad/
    • Mount release DMG
    • Run 0ad and test that it works on e.g. Snow Leopard and Lion
    • Test Atlas (main menu > Tools & Options > Scenario Editor)
    • Delete ~/Library/Caches/0ad/
  • Update OBS packages 0ad, 0ad-data:
    • Update version numbers in 0ad.changes, 0ad.dsc, 0ad.spec
    • Replace .tar.gz with new version
  • Update PPA packages (ping ricotz on IRC):
    • Find an Ubuntu machine.
    • Copy source/tools/dist/ubuntu/ into a place for packaging
    • Update changelog files
    • Update version number
    • Run (Optionally disable the debuild -b lines because they're not needed, we only require the source packages.)
    • dput ppa:wfg/0ad <source.changes>
  • On error goto beginning
  • Upload releases to
  • Verify sha1sums on server
  • Upload to Sourceforge:
    rsync -v --progress -e ssh 0ad-${SVNREV}-*.{exe,gz,xz} philiptaylor,
  • Update release redirects to point to SF
  • Update release pages (links, file sizes, checksums?):
  • Announce release:
  • ?
  • Profit

Building on EC2

Sign up to EC2. Create an EC2 instance (Ubuntu 14.04, 64-bit, c3.xlarge). ssh into it (as user 'ubuntu').


sudo apt-get update
sudo apt-get upgrade
sudo apt-get install zip cmake nsis p7zip-full

# Standard dependencies for building the game:
sudo apt-get install build-essential libboost-dev libboost-filesystem-dev   \
    libboost-signals-dev libcurl4-gnutls-dev libenet-dev libminiupnpc-dev   \
    libnspr4-dev libnvtt-dev libogg-dev libopenal-dev libpng-dev            \
    libsdl2-dev libvorbis-dev libwxgtk2.8-dev libxcursor-dev libxml2-dev    \
    subversion zlib1g-dev libgloox-dev libicu-dev

sudo mkdir /mnt/0ad
sudo chown ubuntu:ubuntu /mnt/0ad
cd /mnt/0ad
svn co 0ad
cd 0ad/build/workspaces
./ -j4
cd gcc
make -j4
mkdir /mnt/0ad/dist
cd /mnt/0ad/dist
cp ../0ad/source/tools/dist/ .
cp ../0ad/source/tools/dist/ .
# change PREFIX 
rsync -avP 0ad-*.{tar.gz,tar.xz,exe}

Then delete the EC2 instance so you don't keep paying for it.

The whole process takes about 2 hours.

Last modified 8 years ago Last modified on Mar 13, 2016, 2:05:31 PM
Note: See TracWiki for help on using the wiki.