Skip to content
Paintown is a 2-d fighting game
Branch: master
Clone or download
juvinious Fixed links to repository in README. Renamed LEGAL to and up…
…dated its contents to reflect existing data directory (Fixes #23).
Latest commit ec5824f Apr 12, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
bugs update bug May 10, 2009
cmake Move LLVM detection for cmake to own module like r-tech1 library. Apr 10, 2018
data Fixed links to repository in README. Renamed LEGAL to and up… Apr 11, 2018
debian override dh Aug 20, 2012
doc add instructions for mingw cross compiler Feb 27, 2014
editor remove unused scala jars Jul 17, 2015
installer Copy data directory to install location and paintown binary. Dec 22, 2009
misc Delete .png from icon name in launcher file. Fixes #4 Mar 26, 2016
src Fixed links to repository in README. Renamed LEGAL to and up… Apr 11, 2018
tools start an abstraction over input sources Aug 29, 2011
.gitignore Added default mod to display main menu. Ignore .swp files in .gitignore Apr 2, 2018
CMakeLists.txt Move LLVM detection for cmake to own module like r-tech1 library. Apr 10, 2018 Fixed links to repository in README. Renamed LEGAL to and up… Apr 11, 2018
LICENSE start a new mugen command design Jan 15, 2014
Makefile move low-level timer handling to implementation specific files Jan 3, 2014 Fixed links to repository in README. Renamed LEGAL to and up… Apr 11, 2018
SConstruct Added back in HAVE_NETWORKING (kazzmir/r-tech1@9b57efc). Moved Openbo… Apr 9, 2018
TODO Updated TODO. Feb 1, 2010
easy-compile-ubuntu add ogg, vorbis, and mp3 libraries to the dependancy list Sep 17, 2011
gui-installer update version to 3.6.1 Aug 20, 2012 Accept arguments for the shell script Jan 13, 2018
scripting.txt update scripting stuff Jan 10, 2009


by Jon Rafkind

Updated on 04/11/2018

Table of Contents




All Releases

Click Here

Get Source

If you are reading this you might already have the source. If not get it from the Paintown Repository.

Additional data which has collections of characters, levels and other items can be obtained in the Paintown Data Repository.

Note to distribution maintainers it is recommended to omit the data from the above repository since it may contain copyrighted material.
The included data in the Paintown Repository should be sufficient for running the application (which excludes levels and content).

Requirements to build

You need the following things to compile Paintown:

  • GNU build utils (gcc and g++)
  • Software construction tools (either or)
  • zlib
  • libpng
  • pthreads - If you are on Unix you should have this or you can install glibc and you will get it. (On Windows get it here)
  • freetype - Installed on most Unix systems along with X11. (On windows get it here)
  • Scripting
    • python and its headers (usually this comes with python)
  • Allegro 5.x
  • R-Tech1
    • You can clone it directly in the paintown directory and it will be built automatically if using Scons otherwise you will need to install it separately


You can build paintown with either Scons or Cmake.

Build Environment Flags

  • DEBUG - set to 0/1 (on/off in cmake) to enable or disable debugging
  • LLVM - set to 0/1 (on/off in cmake) to build with clang
  • DATA_PATH - set this to the desired data path
    • With Scons it will default to data
    • With Cmake it will default to ${CMAKE_SOURCE_DIR}/data
    • *Note: if planning on installing recommend setting it to something like /usr/local/games/paintown


Using Scons to build Paintown

$ make or $ scons

Using Cmake to build Paintown
$ mkdir b
$ cd b
$ cmake ..
$ make
Ubuntu users
Note, this script hasn't been updated so it may be invalid.

There is a script that will install the necessary packages and then invoke the compilation scripts. Type this: $ ./easy-compile-ubuntu




After building with Scons use the install script below $ ./ -d <data> -b <bin>

The script will prompt you to input these directories if you do not give -d and/or -b.

After running (assuming default values for and ) you can run $ /usr/games/paintown


After building with Cmake run sudo make install see notes in Compilation about the data directory

Anything other than Linux

Copy the binary and data somewhere. Otherwise use the prepackaged installers.


A python engine has been added to paintown so you can script a level. See scripting.txt for more details.

OS Specific Instructions

Note, that these are old instructions and may be invalid.


$ scons

How to build a .dmg file of paintown:

$ scons static
$ misc/make-osx-bundle

This will create and paintown-x-y.dmg.

You need I have placed the perl script in the misc directory, so just put that in a directory that is part of your path.



Type $ scons env=mingw


c:\> cd path-to-paintown c:\path-to-paintown> scons

To build a statically linked binary give the 'static' target $ scons static

c:\> cd path-to-paintown
c:\path-to-paintown> mkdir b
c:\path-to-paintown> cd b
c:\path-to-paintown> cmakesetup ..
c:\path-to-paintown> make

The executable will end up in bin/paintown.exe


Don't use cygwin's tools. Install python/scons/mingw for regular windows and use that.

$ export CYGWIN=1
$ c:\progra~1\Python24\Scripts\scons

Note it may be easier to get the gcc4.5 environment from svn: Get unxutils for things like mv, rm, cp - Find the .zip. It unzips as usr\local\wbin, so put that in your path or just copy all the files in usr\local\wbin to your c:\mingw\bin directory. For libpng/zlib see here: Python 2.4.4 (yes this is old but the game is hardcoded to use it): Add c:\python24 to your PATH Copy libs\libpython24.a to c:\mingw\lib Scons - Then add c:\python24\scripts to your PATH pthreads - get pthreads-win32-2-8-0-release.exe, let it unzip somewhere, then copy the stuff in prebuilt\include to your mingw\include directory. copy the .a files to c:\mingw\lib allegro - get the 4.2.3 package and Get freetype from Copy the resulting headers into your include path. Dont copy in freetype2, just the path underneath it, freetype2\freetype. Gnu regex: Use the dependancy walker: to check that all required dlls are around.



Join the chat at freenode

You can’t perform that action at this time.