WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

異色の Android ゲーム開発解説書「プロフェッショナルAndroidゲームプログラミング」書評

先日、日経BPさんから Android ゲーム開発の解説書「プロフェッショナルAndroid ゲームプログラミング」を献本していただきました(ありがとうございます!)。洋書「Pro Android Games」の邦訳で、 Android API Expert の安生真さんが監修されています。

ここ数日、移動中などにパラパラと読んでみたのですが、すごくマニアックな本です。 Java と C 言語を組み合わせたゲーム開発を解説しているのですが、なんとそれを NDK を使わずにやっています。というのも、本書(の原著)が執筆されたのは Android 1.5 の時代で、まだ NDK 自体が存在しなかったのです(NDK がリリースされたのは Android 1.5 本体よりも後のことです)。そこで、本書では ARM 向けの GCC を利用して Android のネイティブ開発環境を独自に構築し、その上で FPS の元祖と呼ばれる「Wolfenstein 3D」と「Doom」を Android に移植するという離れ業をやってのけています(付録でこれらを NDK でコンパイルする方法も解説されています)。これをマニアックと呼ばずしてなんと呼ぶのか。

というわけで、本日はこの「プロフェッショナルAndroid ゲームプログラミング」をご紹介します。ただし、私自身は Android アプリを開発した経験がないので、 Android に特有の部分は評価できません。とはいえ、一応元ゲームプログラマでゲームプログラミングに関する知識はひと通りありますから、そういった立場からの感想として参考にしていただければ幸いです。

概要

前述のとおり、本書は Android で Java と C 言語を組み合わせたゲーム開発の解説書です。とくに、既存の C/C++ ベースのゲームを Android に移植する方法にフォーカスしています。入門書ではないので、内容を理解するにはけっこうな下地が必要です。おそらく以下の知識は必須でしょう。

  • Android 向けアプリ開発の基礎知識
  • C 言語による開発の基礎知識(C++ はほとんど出てこない)
  • Linux の一般的な操作方法、シェルスクリプトの知識など
  • その他、一般的なゲーム開発に関する知識

冒頭に開発環境のセットアップ方法などが解説されているものの、それ以降はこれらの知識を前提として実際に動作するゲームを題材にした応用的な解説が続きます。上記に馴染みのない方は別途入門書などを併せて読むことをお勧めします。

本書では、まず 1 章で Android のネイティブ開発に必要な開発環境を構築する方法を解説しています。標準的な Android の開発環境に加えて、 Android 自体のソース、 Android デバイスからの共有ライブラリのコピー、 ARM プロセッサ向けの GCC (Sourcery G++ Lite Edition for ARM) のインストールなどの作業が解説されています。

続けて 2 章では、簡単な Hello World アプリケーションを題材にして Java と C 言語を組み合わせる方法が解説されています。 JNI を利用して Java から C 言語を呼び出す方法は NDK でも同じなので、この部分は非常に参考になります。

これ以降は実際に動作するゲームを題材にした実践的な内容になっていきます。まず 3 章と 4 章では Java のみを使った基本的なゲームアプリケーションの開発方法を解説し、 5 章では OpenGL を利用して回転するキューブを表示します(まず Java で作り、その後ネイティブコードに移植)。

そして、本格的な PC ゲームを移植する実例として、 6 章で Wolfenstein 3D を、 7 章で Doom を Android に移植して、本文は終わりです。これらはいずれもオープンソースでの実装がいくつか公開されているので、それらから移植性の高いものを持ってきて、 Java とのインターフェースの追加とその他の必要な変更(最終レンダリング画像の反映やサウンド処理、キー(タッチ)入力など)を施すという手段を使っています。

付録としては、アプリケーションに署名して実際の Android デバイスで動作させる方法(本文ではエミュレータでの動作確認までなのです)、 Wolfenstein 3D や Doom を NDK で動作させる方法が含まれています。

本書の良いところ

本書はとてもユニークな Android 本です。まだ NDK が存在しない時代に Java という限界を打ち破り、ネイティブコードの動作を実現させた方法が詳細に解説されています。このような情報を記載した書籍というのは、後にも先にも本書だけではないでしょうか。

しかも、その環境を利用して Wolfenstein 3D と Doom という(多少古いとはいえ)トップレベルのゲームアプリケーションを移植するという内容は、ゲーム開発に携わる者なら誰でも興味を惹かれます。とくに既存のコンテンツを保有しているベンダーなら、それを活用して Android という将来性のあるプラットフォームに参入できるというのは願ってもない話でしょう。

また、 OpenGL やサウンド、キーやタッチイベントの扱い方といったゲームに必要な機能について、実例を含めて解説されている点も見逃せません。通常の Android 入門本と併せて読めば、 Android におけるゲーム開発の大半がマスターできると思います。

本書の足りないところ

本書で残念なのは、情報が少々古い(Android 1.5 ベース)ことです。とくにネイティブ開発においては Android 1.5 以降で大きな進展があり、現在では優れたネイティブ開発用 SDK (NDK) が提供されています。しかし、本書の主旨は OpenGL, JNI といった汎用的な技術の解説であり、それらはまったく陳腐化していません。本書で解説されている内容は、公式 NDK を使う際にも非常に役立つはずです(掲載されているサンプルコードは Android 1.0, 1.5, 1.6, 2.0 で動作確認されているそうです)。

また、将来的に ARM 以外の CPU を使った Android デバイスが発売され、そこでネイティブコードを利用したアプリを動作させたい場合、本書のように独自のツールチェインを構築する必要があるかもしれません。現状の NDK は ARM しかサポートしていないのです。

まとめ

ということで、まとめると、本書は以下の方にお勧めです。

  • Android の基礎は既に知っており、さらに高度なゲームなどを開発したい。
  • Android におけるネイティブ開発の仕組みを理解したい。
  • 既に C/C++ で書かれたゲームコンテンツがあり、それを Android に移植したい。
  • 日本語や Java よりC言語の方が得意(笑)

正直、本書はかなりマニアックな本であると言わざるを得ません。しかし、それだけに必要としている方にとっては貴重な情報源です。既存のゲームコンテンツの Android への移植という仕事は今後かなり増えてくるでしょうから、とくにゲーム開発者の方々は買っておいて損はないと思います。

プロフェッショナルAndroid ゲームプログラミング (Amazon.co.jp 3,150 円)

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles