KLab株式会社さんが、9/25付で2Dゲーム(および2.5Dゲーム)用のゲームエンジンであるPlaygroundをオープンソースで公開されました(KLabさんによるプレスリリース )。
さっそく動作を確認してみようとされた方も多いと思いますが、Android版はハードルの高さに挫折された方も多いのではないでしょうか。弊社でも苦労しました。
まずドキュメントが英語です。この時点ですでに振り落とされる方も多いでしょう。そして、9/26時点でのドキュメントにはいくつか不備があります。
弊社では試行錯誤の結果、MacOS Xとその上で動作させているWindows7 VMを組み合わせて、Playgroundチュートリアルとして公開されているサンプルのビルドおよびAndroid上での動作確認まで行うことができました。その備忘録として、セットアップ手順をまとめておこうと思います。おそらく、数日中にPlayground側のドキュメントも改善され、この備忘録も不要になっていくだろうと思いますが。
(9/28追記: すでにかなりの修正がPlaygroundOSSで行われているので、ハマりポイントはこの記事執筆時点よりも減っていってます。)
Playgroundの取得
まずはgithubで公開されているPlaygroundのリポジトリからソースを取得します。ついでに作業用ブランチを作成します。
% git clone https://github.com/KLab/PlaygroundOSS.git
% cd PlaygroundOSS
% git checkout -b working
masterブランチ上で作業していて衝突(conflict)が発生すると面倒だったりする場合がありますので、ここでは念のためローカルブランチを作って作業しています。
Playgroudに含まれるもの
取得してきたものがそれぞれどういう役割を持っているか知っていた方がこれからどういう作業をしているのか理解しやすくなるので、少し説明します。
- CSharpVersion
- C#での開発に関連したファイルが入っています(調査中)。
- Doc
- ドキュメント類が入ってます。基本的に英語ドキュメントなので読むのに苦労します。また、9/26現在ではまだAndrodでのビルド方法などのドキュメントに不備がありますので、気をつけてください。
- Engine
- Playgroundのゲームエンジンそのものです。この下にある各プロジェクト用のひな形ファイルと、後述するassetsを組み合わせることで実行できるアプリをビルドすることができます。
- SampleProject
- 紛らわしいですが、これはサンプルアプリが入っているディレクトリではありません。後述するエンジンのビルド時に用いるファイルが格納されています。エンジン本体をビルドする際には、このディレクトリ名を指定しなければなりません。
- Tools
- Windows用のassets作成ツールTobogganが入ってます。Tutorial以下に入っているサンプルをビルドするためには、このツールを使ってassetsを作成しないといけません。どうやらWindowsを用いなくても、monoでassetsの発行はできるらしいです(調査中)。
- Tutorial
- Luaを用いたサンプルプログラムがまとめられたzipファイルが入っています。本記事ではこちらのサンプルのビルドと実行までを確認します。
AndroidでPlayground を試すのための事前準備
開発環境インストール
Android SDKのインストール、Elicpseのインストール、EclipseへのADTのインストール、Android NDKのインストールを行ってください。
それぞれのインストールと設定の手順については本記事では省略します。各種のAndroid開発入門サイトや書籍を参考にしてください。
環境変数の設定
- 環境変数 ANDROID_NDK_ROOT にNDKの場所を設定してください。.profileや.bash_profileなどに以下のような行を追加すると良いでしょう。export ANDROID_NDK_ROOT=$HOME/android-ndk-r9
- 同様に、環境変数 ANDROID_SDK_ROOT にSDKの場所を設定してください。
export ANDROID_SDK_ROOT=$HOME/adt-bundle-mac-x86_64-20130917/
- 環境変数PATHにNDKとSDKを追加してください。
PATH=$PATH:$ANDROID_NDK_ROOT:$ANDROID_SDK_ROOT/platform-tools
Playgroundエンジンのビルド
githubから取得した Playgroundは $HOME/PlaygroundOSS にあるという前提で説明します。
以下のコマンドを実行します(chmod は初回のみ必要です)。
% cd $HOME/PlaygroundOSS/Engine/porting/Android/GameEngine-android
% chmod +x ./build.py
% ./build.py --rebuild --project SampleProject
引数に指定するプロジェクト名は、SampleProjectでなければ成功しません。他のプロジェクト名を使いたい場合は、前述したSampleProjectディレクトリを複製して別の名前に変更し、さらには中のファイルもいろいろいじらないといけないと思われます。
ここではとりあえずサンプルのビルドと実行を目指していますので、上記のカスタマイズ方法については追求しないこととします。
環境設定が正しく行われていれば、$HOME/PlaygroundOSS/Engine/porting/Android/GameEngine-android/libs/ 以下の x86ディレクトリとarmeabiディレクトリの下に libGame.so ができるはずです。
Tobogganを用いて assets を発行する
ゲームエンジンはできましたが、それだけではゲームは動きません。ゲームの動作を記述したプログラムとデータを組み込む必要があります。
動作確認できるサンプルがTutorialディレクトリに用意されていますので、それで試しましょう。
先に述べたTobogganアプリを用いて、ゲームエンジンが利用できる形にassetsを発行する必要がありますので、ここからの作業はWindows上で行います。
Toboggan のインストールと実行
- Tools/Toboggan-Tools.zip を展開してください。その中にできる Toboggan ディレクトリを適当な場所に置いてください。
- Toboggan/KLBToolHost.exe を実行してください。
assetsの発行(publish)
Tutorial/Samples.zip をどこかに展開してください。たくさんのディレクトリができてしまいますので、どこか展開用のディレクトリを作成して、そこに展開するようにした方が良いかと思います。9/28追記: 最新のリポジトリではすでに展開済みになっていますので、この手順は不要です。- 実行しているTobogganから、01.SimpleItemを開きます。 (メニューの File -> Open)
- メニューの Tools -> Setup で開かれるダイアログに “Publish Targets” という項目がありますので、androidにチェックを入れてください。
- メニューの File -> Publish All で発行処理を行ってください。
- 01.SimpleItem/.publish/android ディレクトリに発行されたデータがありますので、このディレクトリをまるごとMacOS X環境にコピーしてください。
発行されたassetsをまとめる
ここから再び、作業環境はMacOS Xに戻ります。
前項で発行されたassetsは、AppAssets.zip というファイルにまとめなければなりません。Windowsでもこの作業は可能かとは思いますが、念のため、Playgroundの手順に従って、zip コマンドを用いて行いましょう。以下のコマンドを実行して下さい。
% cd .publish/android
% zip -0 -r <どこか適当なディレクトリ>/AppAssets.zip ./*
zip の最初のオプションは-O (オー)ではなく -0 (ゼロ)です気をつけてください。これは非圧縮でzipファイルを作成するためのオプションです。
また、再帰的にサブディレクトリもアーカイブしておかないと、参照するデータがAppAssets.zipに含まれないという事故も起こってしまうので、-r オプションもつけましょう。
Eclipseへのプロジェクトのインポート
Eclipse に Playground 用の Androidプロジェクトを作成しなければなりませんが、これはすでに用意されているコードをEclipseにインポートすればOKです。英語版Eclipseのメニューで説明しますので、日本語化されている場合は適宜読み替えてください。
- File -> Import を選択し、開いたダイアログで Existing Android Code into Workspace を選びNextボタンで次に進みます。
- Browsボタンを押して、$HOME/PlaygroundOSS/Engine/Android/GameEngine-android を選択します。
- Copy projects into workspace にチェックを入れ、Finishボタンを押します。
AppAssets.zip のEclipseプロジェクトへの組み込み
インポートしたElicpseプロジェクトは、Playgroundのゲームエンジンが入っているだけで、ゲームプログラム部分はまだ入っていません。それは AppAssets.zip としてまとめたものになりますので、このファイルをプロジェクトの assets フォルダに入れてください。
また、プロジェクトのassetsフォルダに version というファイルを新規作成し、その中に 1 とだけ記載してください。Playgroundのドキュメントに記載されている通り、 echo コマンドを用いて version ファイルを作成しても構いません。
AppAssets.zip を別のファイルに入れ替える際には、versionファイルの中身も書き換えましょう(たとえば数字をインクリメントしましょう)。AppAssets.zip 入れ替え前と違う数になっていればOKです。
プロジェクトのビルド
ここまででPlaygroundドキュメントに記載されているビルドできるプロジェクトの準備ができました。ではビルドしてみましょう。たいていの方はここで失敗します。
さて、何が悪いのでしょうか?実はインポートしたEclipseプロジェクトがあなたの環境にあっていないのです。
ということで、プロジェクトを選択し、右クリックしてコンテキストメニューからPropertiesを選んで設定画面を開いてください。以下の設定項目をご自身の環境に合わせて修正してください。
- C/C++ の下のEnvironmentを選び、右側に表示された環境変数の一覧のうち、ANDROID_NDK_ROOT, NDKROOT, NDK_ROOTをご自身の環境に合わせて修正します。
- C/C++ を選び、右側に表示された Build Command の項目を、${ANDROID_NDK_ROOT}/ndk-build -j に修正します。
プロジェクトの実行
ビルドが成功したら実行してみましょう! PlaygroundゲームエンジンはOpenGLを用いているので、Androidではエミュレータではなく実機を使った方が良いでしょう。
最後に
ビルド手順についてまとめたドキュメントの不備については、すでにPlaygroundのオープンソースプロジェクトの方に伝達していますので、Github上のドキュメントも今後改善されていくでしょう(9/28追記:改善作業が着々と進んでいます)。
オープンソースの2Dゲームエンジンとしては、cocos2d-x が有名です。また製品では、Unity も今秋の4.3から2Dゲーム開発を支援する機能を提供していくことが発表されています。Playground はそれらと競合するという位置づけです。
プレスリリースによると、Playgroundゲームエンジンは、音の遅延が小さく、リズムアクションゲームなどに適しているなどの強みがあるとのことです。
Playgroundについては、すでにハッカソンの企画も動いています。弊社もハッカソンの参加や、開発情報の共有などを通じて貢献できればと考えております。