ひだまりソケットは壊れない

ソフトウェア開発に関する話を書きます。 最近は主に Android アプリ、Windows アプリ (UWP アプリ)、Java 関係です。

まじめなことを書くつもりでやっています。 適当なことは 「一角獣は夜に啼く」 に書いています。

Cocos2d-x 2.2 による Android アプリの開発環境を準備する (Windows プラットフォーム; Cygwin を使わない方法)

本記事は、Windows 上で Cocos2d-x 2.x のプロジェクトをビルドするための環境を構築するための手順を書いたものです。 通常は Cygwin が必要となりますが、本記事では Android NDK の実験的な機能を使うことで Cygwin を使用せずにビルドします。

Cocos2d-x とは

Cocos2d-x とは、クロスプラットフォームな 2D ゲームエンジンです。

C++Javascript、そして Lua のいずれか *1 の言語でゲームを開発し、それをビルドすることで iOSAndroidWindows Phone、BlackBerry、Tizen などで実行できるようにすることができます。 また、ブラウザ上で動くようなゲームを開発したりもできるようです。

Android アプリ用のゲーム開発によく用いられているらしいと聞きますが、実際のところどうなのかは知りません。 最近だと 『ドラゴンクエスト モンスターズ スーパーライト』 で使われているようですね。

Cocos2d-x を用いる開発環境の準備

今回は、Cocos2d-x で Android アプリを開発するための環境の準備について説明します。 OS は Windows を対象とします。 (LinuxOS X での環境準備は Windows よりも簡単なはずです。) あと、JDK は既にインストールされているものとして話を進めます。

この説明の中でインストールする各種ソフトウェアのバージョンは次のとおりです。

Android SDKEclipse (ADT プラグイン入り)

Android アプリ開発を行っている人は既にインストール済みだと思いますが、まだ準備していない人は準備する必要があります。

Eclipse なども含まれているパッケージとして ADT Bundle が配布されていますので、ADT Bundle をダウンロードして展開します。 展開する場所はどこでもよいです。 展開後のディレクトリの中の eclipse ディレクトリを開いて、eclipse.exe で Eclipse を起動できます。

SDK Manager で Android SDK tools などをインストールしないとだめかもしれないですが、ちゃんと調べてません。 普通に Android アプリ開発をできる環境が整っていればよいと思います。

Android NDK の準備

Cocos2d-x では、Android アプリ用のネイティブコードのビルドを行いますので、Android NDK も用意する必要があります。

上のページからダウンロードして、展開します。 このディレクトリの置き場所もどこでも大丈夫です。

Python のインストール

Cocos2d-x では、プロジェクトの生成の際に Python スクリプトが使用されますので、Python をインストールする必要があります。 Python 3 系ではなく、Python 2 系をインストールしましょう。

上のページで Windows 用のインストーラが配布されているので、ダウンロードしてインストールを実行します。

Cocos2d-x の準備

Cocos2d-x をダウンロードします。 次のページがダウンロードページなので、ここから Cocos2d-x 2 系をダウンロードします。 (現時点ではバージョン 3 系は beta 版なので、とりあえず 2 系で説明を進めます。)

ダウンロード完了後、ZIP ファイルを展開します。 展開先はどこでも良いです。

Hello world, Cocos2d-x

Cocos2d-x のプロジェクトを作成し、Android アプリとしてビルドするまでの流れを説明します。

Cocos2d-x プロジェクトの作成

まずはプロジェクトの作成です。

Cocos2d-x のディレクトリの中の tools\project-creator ディレクトリに移動し、create-project.py を実行することでプロジェクトを作成できます。

C:\Python27\python.exe ./create_project.py -project MyGame -package com.vividcode.cocos2d.app.MyGame -language cpp

Python を C:\Python27 にインストールしたのであれば、上のように実行すれば 「MyGame」 というプロジェクト名、「com.vividcode.cocos2d.app.MyGame」 というパッケージ名、そして主な開発言語は JavaScript で新しいプロジェクトが作成されます。 開発言語として指定できるのは cpp、luajavascript のいずれかです。

Cocos2d-x のディレクトリ直下の projects ディレクトリの中に、新しいプロジェクトが作成されます。 プロジェクトのディレクトリの中に、各種プラットフォーム用のディレクトリがあります。 例えば今回の例だと、projects\MyGame が Cocos2d-x のプロジェクトで、さらにその中の proj.android というディレクトリが Android 用にビルドする際に使用するディレクトリです。

JNI 共有ライブラリのビルド (Android NDK 使用)

さっそく、できたてのプロジェクトをビルドしてみます。 まずは JNI 共有ライブラリをビルドします。

Windows 用に build_native.sh の代わりのスクリプトファイルを作る

Cocos2d-x 2 系では、ビルド時に build_native.sh というシェルスクリプトを使用するようになっています。 よって、プロジェクトに手を加えずに Windows 環境でビルドするには Cygwin などを使用する必要があります。 しかしながら、いちいち Cygwin を用意するのも面倒ですし、シェルスクリプトがやっていることは単なるファイルのコピーと Android NDK のビルド処理の実行だけですので、自分で Windows 用の cmd ファイルを書いてしまえば良いです。

次の記事を参考にしました。

例えば C++ で開発する場合は、次のような build_native.cmd というファイルを作れば良いです。

@rem make sure assets is exist
rmdir /s /q "assets"
mkdir assets

@rem copy resources
xcopy ..\Resources .\assets /E /Q

SET NDK_MODULE_PATH=%COCOS2DX_ROOT%;%COCOS2DX_ROOT%\cocos2dx\platform\third_party\android\prebuilt
%NDK_ROOT%\ndk-build.cmd

これはあくまで Cocos2d-x 2.2.2 における C++ を開発言語としたプロジェクトでの build_native.sh の代わりですので、開発言語が違う場合やバージョンが違う場合は、build_native.cmd ファイルの中身も変わってきます。 自分で build_native.sh の内容を見て、それに対応した build_native.cmd を書いてください。

また、上のファイルでは次の 2 つの環境変数を使用しています。 実行時には次の環境変数を設定したうえで実行してください。

  • COCOS2DX_ROOT : Cocos2d-x のディレクトリパス。 例えば D:\Development\cocos2d-x\cocos2d-x-2.2.2 など。
  • NDK_ROOT : Android NDK のディレクトリパス。 例えば D:\Development\Android\tools\android-ndk\android-ndk-r9c など。
ndk-build.cmd について

上のスクリプトでは、Android NDK に含まれる ndk-build.cmd を使用しています。 本来、Android NDK を実行するためには Cygwin 1.7 以降が必要なのですが、Cygwin 無しでビルドするための Windows 向けのコマンドが実験的に提供されていて、それが ndk-build.cmd なのです。

Experimental features

You can now build your NDK source files on Windows without Cygwin by calling the ndk-build.cmd script from the command line from your project path. The script takes exactly the same arguments as the original ndk-build script. The Windows NDK package comes with its own prebuilt binaries for GNU Make, Awk and other tools required by the build. You should not need to install anything else to get a working build system.

Important: ndk-gdb does not work on Windows, so you still need Cygwin to debug.

This feature is still experimental, so feel free to try it and report issues on the public bug database or public forum. All samples and unit tests shipped with the NDK succesfully compile with this feature.

Android NDK | Android Developers

Android NDK rev. 7 の変更点に、上のように書かれています。 実験的とは書かれていますが、導入されてから既に 2 年以上経過してるので使って大丈夫でしょう。 (心配なら普通に Cygwin をインストールしましょう。)

アプリ自体のビルドと実行 (Eclipse 使用)

最後に、アプリ自体をビルドします。 まず、Cocos2d-x のプロジェクトで共通に必要となる libcocos2dx プロジェクトをインポートします。 Cocos2d-x のディレクトリの中の cocos2dx\platform\android\java がそのプロジェクトですので、Eclipse でインポートします。

次に、今回作成したプロジェクトを Eclipse にインポートします。

これで Eclipse の実行ボタンを押すと、ビルドが行われて端末上にインストールされてアプリが実行されるはずです。

ちなみに上に書いた build_native.sh を実行するという手順ですが、C++ で開発する場合は Eclipse でのビルドの際に行われるようにもともと設定されています。 その部分を build_native.cmd を実行するというように書きかえる必要があります。 Lua のプロジェクトだと、そもそも build_native.sh を Eclipse でのビルドの際に行われるようになっていないような気がするので、ビルド時に実行されるように自分で設定する必要があると思います。 (あるいは毎回自分でコマンドを叩くか。)

最後に

Cocos2d-x 2.2 のビルドする環境を Windows で整えるのがちょっと面倒だったのでまとめてみました。 今回は Eclipse でビルドしていますが、Ant でビルドできるようになっているので、Ant が使える人は Ant を使った方がいいのかもしれないですね。 あと、最近だとやっぱり Ant より Gradle という感じなので、Gradle でビルドできるようにしてもいいかもしれません。 Gradle でビルドできるようにするのは次の記事が参考になります。

Cocos2d-x 3.0 beta では、Python スクリプトでサンプルプロジェクトをビルドするようになったので、Cygwin 無しでサンプルプロジェクトをビルドできるようです。

サンプルプロジェクト以外の、通常どおり作成されたプロジェクトの方も同じように変更されてるのでしょうかね? 試してないのでよくわかりません。

Cocos2d-x について

久々にドキュメントがまとまってないものに触った気がする。

*1:多分いずれか。 混ぜることはできないと思う。