axmol/docs/RELEASE_NOTES.md

5.9 KiB

cocos2d-x v3.2rc0 Release Notes

Table of Contents generated with DocToc

Misc Information

Requirements

Runtime Requirements

  • Android 2.3 or newer
  • iOS 5.0 or newer
  • OS X 10.7 or newer
  • Windows 7 or newer
  • Windows Phone 8 or newer
  • Linux Ubuntu 14.04 or newer
  • Browsers via Emscripten N/A for the moment

Compiler Requirements

  • Xcode 4.6 or newer for iOS or Mac
  • gcc 4.9 or newer for Linux
  • ndk-r9d or newer for Android
  • Visual Studio 2012 or newer for Windows (win32)
  • Visual Studio 2012 or newer for Windows Phone 8

How to run tests

Mac OSX & iOS

  • Enter cocos2d-x/build folder, open cocos2d_test.xcodeproj
  • Select iOS or OS X target in scheme toolbar
  • Click run button

Android

You can run the samples...

Using command line:

$ cd cocos2d-x
$ ./setup.py
$ cd build
$ ./android-build.py cpp-empty-test -p 10
$ adb install cocos2d-x/tests/cpp-empty-test/proj.android/bin/CppEmptyTest-debug.apk

Then click item on Android device to run tests. Available value of -p is the API level, cocos2d-x supports from level 10.

Using Eclipse:

$ cd cocos2d-x
$ ./setup.py
$ cd build
$ ./android-build.py cpp-empty-test -p 10

Then

  • Import cocos2d-x Android project into Eclipse, the path used to import is cocos/2d/platform/android
  • Import cpp-empty-test Android project into Eclipse, the path used to import is tests/cpp-empty-test/proj.android
  • Build cpp-empty-test Android project and run

Windows

  • Enter cocos2d-x/build, and open cocos2d-win32.vs2012.sln
  • Select cpp-empty-test as running target
  • Click run button

Linux

$ cd cocos2d-x/build
$ ./install-deps-linux.sh
$ cd ../..

Then

$ mkdir build
$ cd build
$ cmake ../cocos2d-x
$ make -j4

Run

$ cd bin/cpp-empty-test
$ ./cpp-empty-test

How to start a new game

Please refer to this document: ReadMe

Highlights of v3.2rc0

  • fbx-conv support generating binary format, and Sprite3D support it
  • about 20% performance improved in Sprite3D
  • game controller support
  • fast tilemap support, it is faster for static tilemap
  • physics body supports scale and rotation
  • added Node::enumearteChildren(), and support c++ 11 regular expression

Toolchain requirement changed

Node::enumerateChildren() uses std::regex which will cause crash using gcc v4.8 or lower version. So

  • NDK r9d or newer version is required for Android building
  • gcc 4.9 is required for linux building

Features in detail

Sprite3d

Sample code to use binary version

auto sprite3d = Sprite3D::create("filename.c3b");
addChild(sprite3d);

fbx-conv usage

  • Mac OS X
$ cd COCOS2DX_ROOT/tools/fbx-conv/mac
$ ./fbx-conv [-a|-b|-t] FBXFile
  • Windows
cd COCOS2DX_ROOT/tools/fbx-conv/windows
fbx-conv [-a|-b|-t] FBXFile

Options:

  • -a: export both text and binary format
  • -b: export binary format
  • -t: export text format

Controller support

Supported controller type:

  • amazon tv
  • OUYA
  • Moga
  • Nibiru
  • iOS standard controllers

In order to use controller on Android, you should refer to this Android project(COCOS2DX_ROOT/cocos/platform/android/ControllerManualAdapter).

Full demo please refer to COCOS2DX_ROOT/tests/game-controler-test.

Fast tilemap

Fast tilemap has the same API as TMXTiledMap without deprecated functions.

Sample code

auto tilemap = FastTMXTiledMap::create("MyFile.tmx");
addChild(tilemap);

Full demo please refer to COCOS2DX_ROOT/tests/cpp-tests/Classes/TileMapTest/TileMapTest2.cpp.

Node::enumerateChildren

This functions is used to enumerate children of a Node recursively. It supports c++ 11 regular expression.

// Find nodes whose name is 'nameToFind' and end with digits.
node->enumerateChildren("nameToFind[[:digit:]]+", [](Node* node) -> bool {
    ...
    return false; // return true to stop at first match
});

Full test please refer to NodeNameTest in COCOS2DX_ROOT/tests/cpp-tests/NodeTest/NodeTest.cpp.

Because this function uses std::regex which is not supported well in gcc 4.8 or lower version. So we use clang and stdc++ instead for Android building. This lead to the result that NDK r9d or newer is required. And gcc 4.9 is required on linux.

utils::findChildren

This is a helper function to find children of a Node share a name. The implementation of this function bases on Node::enumerateChildren.

auto children = utils::findChildren(node, "nameToFind");

...