最近、「Androidゲーム開発」に力を入れています。といっても、開発環境はJavaではなくHTML5が基本。HTML5ベースでいわゆる「ハイブリッドアプリ」形式のゲームを作っては、Google Playで公開しているのです。

開発の手順としては、まずFirefox/Chromeといったデスクトップ版Webブラウザを対象に「パソコン用Webゲーム」を作ります。もちろん、この段階でAndroidアプリ化しやすいようゲームを設計し、画面サイズや入力周りもスマートフォンを意識しながら作りこんでおくわけですね。

Androidスマートフォン/タブレットともにタッチ操作が基本になるので、ゲームとしては画面タッチで遊ぶパズル/テーブルゲームか、ゲームパッドを画面描画で実装する(ソフトパッド)通常のゲームということになるでしょう。

画面タッチの方は、それほど複雑な情報(タッチ数など)を必要としなければ、マウスと統合する「クリックイベント」で処理します。また、ソフトパッドの方はキーボード入力にも対応しておけばパソコン上で実行しても特に問題ありません(というか、Android端末でもゲームパッドやキーボードが利用できるので、問題ないように作ります)。

こうやって作った「Webゲーム」を、AndroidのWebViewコンポーネントに読み込ませて、Androidの(ネイティブ)アプリにするわけですね。HTMLや画像、jsなどWebゲームに必要なファイル群は、リソース(assets)としてAndroidアプリのapkファイルに取り込みます。実行時にネット上から読み込む必要はありません。

HTML5ベースで「Androidアプリ」を開発する利点は、まず「他の環境へ持ち込みやすい」点。元がWebベースですから、Webブラウザが動く環境なら元になったWebアプリをそのまま実行できますし、iOSでもAndroidと同様「Web表示用コンポーネントに取り込んでネイティブアプリ化する」手法が使えます。

また、あくまでも「Androidアプリ」ですから、Google PlayなどAndroidアプリを公開するプラットフォームに乗せることができますし、HTML5ではやりにくい部分(AndroidのWebブラウザでは制約の多い音声/動画周りや各種センサ、広告・課金など)をAndroid側のAPIで作りこむことも可能です。

弱点としては、WebViewの機能・性能の制約を受けることでしょうか。現状だとごく一部の端末以外ではOpenGL(WebGL)は使えませんし、性能を追求するようなゲームには向きません。もっとも、性能に関してはかなりのペースで「底上げ」されてきているので、通常のカジュアルゲームならそれほど問題はないと思いますけど。

Firefox OSなどHTML5を基盤とする新しいモバイルOSの動向によっては、「Webアプリの資産価値」がさらに高まるかもしれませんね。


創作プログラミングの街 > ノート