hyoromoのブログ

最近はVRSNS向けに作ったものについて書いています

Cocos2d-x v3.3 環境構築

f:id:hyoromo:20141215222558j:plain
Cocos2dx v3.3の環境構築方法について書きます。
内容はMac上で環境構築を行い、iOS/Android向けにアプリ起動させるところまでとなります。
なお、v3.3自体のバージョンアップ情報は公式のnews内容を参照ください。

環境

Mac上での構築を行います。Cocos2d-x以外は事前に導入済みという想定で書きます。

Cocos2dxのインストール

Cocos2dx公式サイトのダウンロードページからDL可能です。
http://www.cocos2d-x.org/download

  1. 【Cocos2d-x】欄の下にある「Download v3.3」ボタンを押下し、DL開始
  2. DL完了後、任意のディレクトリへzip解凍して配置

Cocos2dxのパスを通す

Cocos2dxのプロジェクト作成する際、ターミナル上からコマンドを叩く必要があるため、まずはCocos2dxディレクトリへのパス通しを行っておきます。

  1. Python 2.7 をインストール
  2. ターミナル起動
  3. ターミナルから、DLしたCocos2dxディレクトリ直下へ移動
  4. ターミナル上で以下のコマンドを実行後、ターミナルを再起動
$ ./setup.py

これにより、~/.bash_profile にCOCOS_X_ROOTCOCOS_TEMPLATES_ROOTにパスが追加されます。Cocos2dx v3.3以外のバージョンが設定済みだった場合、内容が書き換わります。

プロジェクトの新規作成

下準備は終わりましたので、いよいよCocos2dxプロジェクトを作成します。

  1. ターミナル起動
  2. ターミナルから、プロジェクトを作成したいディレクトリへ移動
  3. ターミナル上で以下のコマンドを実行
$ cocos new GameProject -p jp.hoge.gameproject -l cpp

「GameProject」はプロジェクト名、「jp.hoge.gameproject」はパッケージ名です。作成時には書き換えて作成ください。

iOS対応

先ほど作成したプロジェクトをXcodeから起動し、シミュレータで実行させます。

  1. 「プロジェクト名/proj.ios_mac/プロジェクト名.xcodeproj」をFinder等からクリック起動
  2. 起動したXcodeスキーマを「プロジェクト名 iOS」に切り替えてシミュレータへデプロイ

Android対応

Androidの環境構築は若干手間ですので、見出しを分けての解説をします。

Android SDK/NDKのパスを通す

ここで1つ注意する事があります。Cocos2dx v3.3 から、Android NDK r10c 以上でのビルドが必須となりました。
理由としては Android 5.0(Lolipop) 対応が行われているからです。

  1. ターミナル起動
  2. ターミナルから、~/.bash_profile を編集*1
  3. 以下の変更を行った後、.bash_profile を閉じ、ターミナルを再起動
NDK_ROOT=/NDK配置親ディレクトリ/android-ndk-r10c
export NDK_ROOT
ANDROID_SDK_ROOT=/SDK配置親ディレクトリ/android-sdk
export ANDROID_SDK_ROOT
EclipseへCocos2dフレームワークをインポート

作成したプロジェクトをインポートする前に、Cocos2dxフレームワーク自体のインポートを行う必要があります。

  1. Eclipse起動
  2. Eclipse上のメニューから File > Import を選択
  3. Android > Existing Android Code Into Workspace を選択
  4. Import Projects画面のRoot Directory項目にて「cocos2d-x-3.3/cocos/platform/android/java」を選択
  5. Finishボタンを押下
    f:id:hyoromo:20141215223108j:plain

これでCocos2dxのlibcocos2dxプロジェクトがインポート出来ます。インポート後、クリーン&ビルドしておいてください。

Cocos2dxの複数バージョンを同一Eclipseで管理する場合はプロジェクト名にバージョン番号を入れておくと良いです。

Eclipseへ作成したプロジェクトをインポート

作成したプロジェクトをインポートします。

  1. Eclipse起動
  2. Eclipse上のメニューから File > Import を選択
  3. Android > Existing Android Code Into Workspace を選択
  4. Import Projects画面のRoot Directory項目にて「作成プロジェクト/proj.android」を選択
  5. Finishボタンを押下
    f:id:hyoromo:20141215223515j:plain
ビルド

Cocos2dx向けに作成したコードは別途ビルドする必要があります。

  1. ターミナル起動
  2. ターミナルから、「作成プロジェクト/proj.android」へ移動
  3. ターミナル上で以下のコマンドを実行
$ ./build_native.py

問題なくビルドが成功したら以下の様な内容が出力されます。

The Selected NDK toolchain version was 4.8 !
(中略)
[armeabi] SharedLibrary  : libcocos2dcpp.so
[armeabi] Install        : libcocos2dcpp.so => libs/armeabi/libcocos2dcpp.so
make: Leaving directory `作成プロジェクト/proj.android'

問題がある場合はsoファイルが出力されず、途中でErrorを吐きますので内容変更してクリーン&リビルドしておいてください。

Androidプロジェクトをデプロイ
  1. Eclipse起動
  2. 追加した「作成プロジェクト」をClean
  3. Package Explorerからプロジェクトを右クリックし、 Run As > Android Application

これでデプロイ出来ます。
Cocos2dxアプリ開発をする際、Android側の確認をする場合は「ビルド - Androidプロジェクトをデプロイ」の手順を行う必要があります。
もしくはEclipseのプロジェクト設定からRun As時にbuild_native.pyを実行する必要があります。

Androidのビルドパス設定

Androidの場合はビルド対象のソースファイルのパスを「作成プロジェクト/proj.android/jni/Android.mk」に追加する必要があります。
毎回追加していくのは手間なので、ファイルの一部を以下のように変更します。以前どこかで見かけたエントリーの内容をほぼそのまま使わせて貰っています*2

()
LOCAL_MODULE_FILENAME := libcocos2dcpp


#ソースファイルを自動検索して設定
ifeq ($(HOST_OS),windows)
  CPP_FILES := $(shell dir $(LOCAL_PATH)/../../Classes/*.cpp /b/a-d/s)
else
  CPP_FILES := $(shell find $(LOCAL_PATH)/../../Classes -name *.cpp)
endif

ifeq ($(HOST_OS),windows)
  CPP_FILES_JNI := $(shell dir $(LOCAL_PATH)/*.cpp /b/a-d/s)
else
  CPP_FILES_JNI := $(shell find $(LOCAL_PATH) -name *.cpp)
endif

LOCAL_SRC_FILES := $(CPP_FILES_JNI:$(LOCAL_PATH)/%=%)
LOCAL_SRC_FILES += $(CPP_FILES:$(LOCAL_PATH)/%=%)

#SQLite3を利用する時は追加
#LOCAL_SRC_FILES += ../../Classes/lib/SQLite3/sqlite3.c

ifeq ($(HOST_OS),windows)
  LOCAL_C_INCLUDES := $(shell dir $(LOCAL_PATH)/../../Classes /b/ad/s)
else
  LOCAL_C_INCLUDES := $(shell find $(LOCAL_PATH)/../../Classes -type d)
endif

ifeq ($(HOST_OS),windows)
  LOCAL_C_INCLUDES += $(shell dir $(LOCAL_PATH) /b/ad/s)
else
  LOCAL_C_INCLUDES += $(shell find $(LOCAL_PATH) -type d)
endif

LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../cocos2d/extensions
#自動検索して設定する処理はここまで


LOCAL_STATIC_LIBRARIES := cocos2dx_static
()

Cocos2dxアプリ開発する上でタメになる公式ページ

  • Cocos2d-x公式トップページ
    Cocos2dxをDLする時だけではなく、定期的に更新される「What's new?」や「Recent Wikis」はタメになるので読んでおくと良いと思います。
  • Cocos2d-x Programmers Guide v3.3
    公式で作成されたCocos2dxのプログラミング ガイドです。Cocos2dxフレームワークを使って欠かせない情報が集約されており、まずはこのドキュメントを読むと良さそうです。ただ、現時点でcoming soonが多いため、もう少し埋まってからのほうが良いのかもしれませんが...
  • Cocos2d-x Forum
    公式のフォーラムです。自分が投稿する時でなくても閲覧するようにしておくと、自分が利用しているバージョンの不具合等を早めに知ることが出来ます。

*1:「$ vim ~/.bash_profile」等で

*2:ちゃんと参照先を貼りたかったのですがどこだったか忘れてしまいました