このチュートリアルではAndEngineの基礎的な部分について説明します。
AndEngine にはドキュメントがありません - これは紛れもない事実です。 しかしニコラス・グラムリッチ氏はAndEngine の機能を網羅したアプリケーションと拡張クラスを作成しています。 Google Play storeのアプリを確認して、すぐに各機能を見ることができます。 またニコラス氏の' GitHubからこのアプリのソースコードをダウンロードすることもできます。 それでも足りない場合は、このAndEngineの本で基本的なことが全てよく説明されています。
このサンプルをコンパイルして実行するには、サンプル内で参照している拡張クラスをダウンロードして設定する必要があります。 ニコラス氏のGitHub にはサンプルで参照されている以外の拡張クラスもあり、AndEngine関連以外のプロジェクトも含まれているので注意してください。 To make it easier, let's work only with the extensions needed for AndEngine examples project.
Physics Box2D 拡張やLive Wallpaper拡張のような、便利なAndEngine 用の拡張クラスが多数あります。 これらはAndroid ライブラリプロジェクトとは分かれて存在しています。 このチュートリアルでは、サンプルプロジェクトで最も人気のある拡張クラスを設定する方法を説明します。 このチュートリアルは2013年の9月9日に書かれており、GitHub リポジトリに何らかの変更があった場合は情報が古いかもしれないので注意してください。 何かあれば、android@kul.isへメールを送ってお知らせください。
重要: 前回のチュートリアル入門編の内容を修正しました。 9月8日以前に上記チュートリアルを参照していた場合は、インポートするプロジェクト名をAndEngine-GLES2-AnchorCenterからAndEngineに変更しているので注意してください。 It's the correct way and it makes things easier later. チュートリアルを確認して、インポートの手順を再実行してください。
基本的なAndEngineの設定をまだしていない場合は、最初のチュートリアル: 入門編から始めてください。 次にDownload Zipボタンをクリックしてプロジェクトをダウンロードしてください。 GLES2 - AnchorCenter ブランチを正しくダウンロードしていることを確認してください。 Git を直接使用すると良いかもしれませんが、それだと少し高度な話になります。
このチュートリアルでは、オリジナルのニコラス氏のGithub リポジトリから全てをダウンロードするやり方を説明します。 後で出てくるコード上のバグ修正部分のチュートリアルを飛ばしたい場合は、私が既に修正済みの特別バージョンをGitHubからダウンロードできます。 URLの"nicolasgramlich"を"sm4"に変更するだけです。: https://github.com/sm4/AndEngine/tree/GLES2-AnchorCenter
GitHubについて記載した別のチュートリアルでは、ソースをダウンロードする別の方法を説明しているので確認してください。ダウンロードするプロジェクト:
上記全てのプロジェクトを、既にAndEngine プロジェクトを解凍してインポートしてあるワークスペースに解凍してください。 フォルダ名の語尾についている"-master", "-GLES2" , "-GLES2-AnchorCenter"を削るために、全てのフォルダ名を変更してください。 これらのフォルダ名はGitHubによって自動的に付けられます。 - Gitを使用した場合は、"GLES2-AnchorCenter"という名前のフォルダにならないでしょう。 全てのプロジェクトをインポートする方法については次の"GitHub"のチュートリアルで説明します。
Eclipseを起動して、ファイル -> インポート... -> Existing Projects into Workspaceの順に選択します。 「参照」をクリックして、「ルート・ディレクトリー」の項目でワークスペースのディレクトリを指定します。 以下のような画面が表示されるでしょう。もちろん、基本となる AndEngine プロジェクトは既にインポート済みでなければなりません。
[2013-09-08 22:48:16 - AndEngineAugmentedRealityExtension] Unable to resolve target 'android-15' [2013-09-08 22:48:16 - AndEngineScriptingExtension] Unable to resolve target 'android-15' [2013-09-08 22:48:16 - AndEngineSVGTextureRegionExtension] Unable to resolve target 'android-15' [2013-09-08 22:48:16 - AndEnginePhysicsBox2DExtension] Unable to resolve target 'android-17' [2013-09-08 22:48:16 - AndEngineMultiplayerExtension] Unable to resolve target 'android-17' [2013-09-08 22:48:16 - AndEngineExamples] Unable to resolve target 'android-15' [2013-09-08 22:48:16 - AndEngineTMXTiledMapExtension] Unable to resolve target 'android-15' [2013-09-08 22:48:16 - AndEngineMODPlayerExtension] Unable to resolve target 'android-15' [2013-09-08 22:48:16 - AndEngineLiveWallpaperExtension] Unable to resolve target 'android-15' [2013-09-08 22:48:16 - AndEngineCocosBuilderExtensionCCRotatingSpriteExtension] Unable to resolve target 'android-15' [2013-09-08 22:48:16 - AndEngineCocosBuilderExtension] Unable to resolve target 'android-15'
これは想定通りのものです。各プロジェクトでAndroid SDKの設定を修正する必要があります。
各プロジェクトで右クリックし、プロパティ→Androidの順に進みます。 そこに選択可能なオプションが一つ(Android 4.3)あるでしょう。Android 4.3のオプションをチェックしてください。 全ての拡張クラスとサンプルのプロジェクトでこの操作をしてください。 このチュートリアルを手順通りに進めた場合、サンプルプロジェクトのプロパティは以下のようになります:
Eclipseのメインメニュー上でプロジェクト -> クリーン -> すべてのプロジェクトをクリーンを選びます。 いくつかのプロジェクトはまだバグが残ったままなので、それらを修正しないとAndEngineExamples プロジェクトをコンパイルできません。
他の誰かが作成したプロジェクト、特にオープンソースを使用する場合は、そうした問題に対応しなければなりません。では、修正しましょう:
VGBaseBitmapTextureAtlasSource.java内に記述されている SVGBaseBitmapTextureAtlasSourceでは、抽象メソッドIBitmapTextureAtlasSource.onLoadBitmap(Bitmap$Config, boolean)を実装しなければなりません。
SVGBaseBitmapTextureAtlasSource.javaを開いて (Ctrl+Shift+R)、Eclipse のクイックフィックス機能を使います: 未実装のメソッドを追加します。 これで完了です。この問題は、SVG 拡張クラスにAnchorCenter 版がないために発生します。
これに対処するにはいくつかの方法があります - サンプルから参照を削除して、それが原因で発生する問題を修正します。 もしくは、拡張クラスないの各問題を個別に修正できます。:
最後に、AndEngine サンプルプロジェクトの問題を解決します - 作業のほとんどは単にパッケージ名の変更だけです。 ファイル内で一括検索・置換を使い、サンプルプロジェクト内で以下のように置換を行います。
検索 | 置換 |
---|---|
import org.andengine.extension.multiplayer.protocol | import org.andengine.extension.multiplayer |
import org.andengine.extension.multiplayer.exception.BluetoothException; | import org.andengine.util.exception.BluetoothException; |
import org.andengine.entity.particle.modifier.ExpireParticleInitializer; | import org.andengine.entity.particle.initializer.ExpireParticleInitializer; |
import org.andengine.extension.multiplayer.util.IPUtils; | import org.andengine.util.IPUtils; |
import org.andengine.extension.multiplayer.util.WifiUtils; | import org.andengine.util.WifiUtils; |
if(!AndEngine.isDeviceSupported()) { | if(!AndEngine.isDeviceSupported(this)) { |
どの行で何を置換するのか必ず確認するようにしてください。この作業を完了した後も、まだエラーは残っています。 誤った例外処理が発生しているクラスをEclipse が教えてくれます。 ワークスペース内の全てのプロジェクトの全エラーを参照するには"問題"ビューを使います。
これらは大雑把なやり方で簡単に修正できます: 単に、問題が発生している全てのtry-catchのcatchブロックを、"Exception"のみに変更します。 これで完了です。このパターンの場合は簡単に検索・置換はできません。
まだエラーが残っている場合は、全ファイルを保存して全てのプロジェクトをクリーンします。 このチュートリアルどおりに作業したのであれは、Eclipseはエラーのない状態になります。 そうならなかった場合は、何かをやり忘れたのかもしれません。 自分で解決できない場合は、私宛のandroid@kul.isにメールを送ることができます。
AndroidExamples プロジェクトを右クリックし、 実行 -> Android アプリケーションをクリックします。デバイス選択画面がポップアップ表示されたら、あなた Android 端末を選んでください。 楽しみましょう!
AndEngine コミュニティメンバーの何人かは、既にこれらの問題を修正して独自のリポジトリで管理しています。 通常はいくつかエラーが修正されていますが、場合によっては最新版ではないこともあります。 フォーラムへ行って自分で検索することもできます。 こうした修正済みリポジトリで有名なものは以下があります:
ですが、私はこれらを使用していません。私のリポジトリを使用することもできます。 私のバージョンのAndEngine ではバグが修正済みです。