Cocos2D-X - ArchWiki

Jump to content

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, macOS. This page will focus on properly configuring this package for initial usage for the most part. Other documentation is linked in #See also.

## Installation

Install the cocos2d-x-srcAUR package.

## Configuration

### $PATH

If you install manually, add `/your-cocos2d-x-dir/tools/cocos2d-console/bin`, and `/your-cocos2d-x-dir/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.

If you use the version from AUR, package will automatically add all the necessary environment variables to the `$PATH`. After installation, you need to reload the environment variables from `/etc/profile`. You can do it manually:

    source /etc/profile

or just reload your session.

### Python scripts workaround

Since some Cocos2D-X scripts use `python2` instead of `python3` (and does not plan to move from it), like `sdkbox`, simply calling `python2 foo.pyc` will not suffice since other modules will be called with `env python` which points to python3. To avoid this, install the version from AUR, or change script headers. Do not 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 is an example shell script workaround:

    /usr/local/bin/python

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

    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

- Official Programmers Guide
- Cocos2D-X Developer Guide
- Official API Referenece Guide
- Texture Rendering + Blur Tutorial
- Particle2DX - Cocos2D-X Particle Generator

Category:

- Gaming