From ArchWiki
Jump to: navigation, search

Cocos2D-X is a high-performance cross platform 2D/3D game engine that supports multiple platforms such as iOS, Android, WinXP/7/8, WP8, BlackBerry, MeeGo, Marmelade, WebOS, Mac OS X. This page will focus on properly configuring this package for initial usage for the most part. For other documentation, click here.


Install cocos2d-x-srcAUR from the Arch User Repository.


PATH Environment Variable

After installation, add /opt/cocos2d-x/tools/cocos2d-console/bin, and /opt/cocos2d-x/tools/cocos2d-console/plugins/plugin_package to your PATH environment variable mostly to run the cocos python2 script to create projects, and also run sdkbox respectively. Add the following to your respective shell configuration file (~/.bashprofile, ~/.zshenv, etc):

export PATH=/opt/cocos2d-x/tools/cocos2d-console/bin:/opt/cocos2d-x/tools/cocos2d-console/plugins/plugin_package:${PATH}

Python Scripts Workaround

Since some Cocos2D-X scripts use python2 instead of python3, like sdkbox, simply calling python2 foo.pyc will not suffice since other modules will be called with "env python" which could point to python3. To fix this, read here. Don't forget to add /usr/local/bin, or whichever directory the workaround shell script is installed at, before /usr/bin in your PATH environment variable. The following should suffice:

export PATH=/usr/local/bin:${PATH}

Here's an example shell script workaround:

script=$(readlink -f -- "$1")
case "$script" in (/opt/cocos2d-x/*|/path/to/project1/*|/path/to/project2/*|/path/to/project3/*)
    exec python2 "$@"

exec python3 "$@"

Disable sending usage data

Sending the usage data can be disabled setting enable_stat to false in /opt/cocos2d-x/tools/cocos2d-console/bin/cocos2d.ini:

# sed -e 's/enable_stat=.*/enable_stat=false/g' -i /opt/cocos2d-x/tools/cocos2d-console/bin/cocos2d.ini

Cross Compiling for Android

Install jdk8-openjdk, android-ndkAUR, android-sdkAUR and android-sdk-platform-toolsAUR, and also add the following to your shell configuration file:

export NDK_ROOT=/opt/android-ndk
export ANDROID_SDK_ROOT=/opt/android-sdk
export ANT_ROOT=/usr/bin

The android tool should suffice to fetch the SDK platform for a certain android version, however there are also packages in the Arch User Repository such as android-platform for downloading these SDK platforms.

Updating SDKBOX

Cocos2D-X comes with a tool called sdkbox for integrating third party software development kits into projects easily. To update this tool, you must have read/write/execute access to /opt/cocos2d-x/tools/cocos2d-console/plugins/plugin_package and the following files in that directory: sdkbox, sdkbox.bat, sdkbox.pyc

For a single-user configuration, executing the following will suffice:

# chown $USER:$USER /opt/cocos2d-x/tools/cocos2d-console/plugins/plugin_package/{,sdkbox,sdkbox.bat,sdkbox.pyc}
$ sdkbox update

Cocos2D-X Development Notes

Creating a Scene with Physics

  • As of Cocos2D-X version 3.14, the HelloWorldScene.cpp and HelloWorldScene.h templates have been updated in cocos2d-x-srcAUR to reflect the the fact that cocos2d::Layer has been deprecated. See issue #16941 in the official Cocos2D-X repository.
    • In order to create a cocos2d::Scene with physics, line 16 of HelloWorld.cpp must be changed to the following: if ( !Scene::initWithPhysics() )

See also