@weather 曇後雨 @title あさ〜 @category 生活 @s 0330充電開始、1000再起動。 @title NDKいじり @category Android @s1 @/IMGBBSTABLE/478,wolf3dのIS01実動成功/ @s2 「@/ASIN/4822284301,プロフェッショナルAndroid ゲームプログラミング/」。出たばかりの本だが、Android側のリリース速度が速すぎるせいですでに開発環境が大昔のものに。 @s ということで、付属サンプルの「Wolfenstein 3D」「Doom」を最新のAndroid SDK r08+NDK r5で動作させられるかどうか試してみた。結果からいえばとても簡単。 @ol
  • NDK付属サンプルを動かせるところまで環境を作り込む。たぶんここまでのほうがずっと面倒。
  • 「プロフェッショナル〜」のサンプルを展開。
  • 各プロジェクトのnative/(hoge)/*をjni/*にリネーム。
  • Android.mkとApplication.mkを作成する。こんな感じ→[20101223032656.zip]
  • NDKのbashターミナルを開き、各プロジェクトのjni/*フォルダで「ndk-build」コマンドを実行して、soファイルを作成する。
  • 書籍のコンパイル例とは出力されるsoファイル名が異なるので、新しいファイル名でsoファイルを読み込めるように、javaソースを一部変更する。
    プロジェクト名 ソースファイル 変更前 変更後
    ch06.Wolf3D.SW src\wolf\util\WolfTools.java public static final String WOLF_LIB = "wolf_jni"; public static final String WOLF_LIB = "wolf3d";
    ch07.Android.Doom src\doom\util\DoomTools.java public static final String DOOM_LIB = "doom_jni"; public static final String DOOM_LIB = "doom";
  • Eclipseを起動し、ビルドする。ビルドしたものはそのままEclipseから実機やエミュレータに転送・実行できる。 @s なお、この方法ではCソース(JNI側)のEclipseによるデバッグは(現時点では)不可能。またCソースのビルドもEclipse上ではできず、bashターミナルから実行しなければならない。Eclipse側に手を入れればなんとかできるのかもしれないが、現状ではこれ以上の調査はできず。 @s 最後に動作速度。25fpsくらいは出ているように見える。