written: 2012-12-07 .. 2014-12-12

Android ゲームプログラミング

  1. (Android スマートフォンを入手したことを機に)2012 年末、突如として Android プログラミングを思い立つ。Java は未経験だが、自分が習熟した Perl 等を始めとする諸言語の経験から、リファレンス片手にどうにかなるだろうとナメてかかる。
  2. 「Java 単体」「Android プラットフォーム単体」であれば、どうにかなったかもしれないが、「Java を 0 から」と「Android プラットフォームを 0 から」を同時に手がけるのは強引過ぎた。Android プログラミングの解説は Java のサンプルコードを読むことになるが、その作業自体に多大な労力を要するので、学習効率が悪過ぎて、挫折。
  3. まずは Java でゲームプログラミングでもしながら、Java を使った GUI プログラミングに一通り慣れるのが先決と考える。それで Java 関連の入門書を色々と読んだ。並行して Android 関連の入門書も読む。
  4. 日本の Java ゲームプログラミング関係の本は、Java アプレットの時代(2002 年頃)の情報でストップしている。最近の Android ブームで再び Java ゲームプログラミング関係の新版の本もボチボチ出だしたが、10 年前の本の著者が改版していたりするため、依然として時代錯誤な感が払拭できず、頭に来たので、海外のインターネット上の情報を探った。どうやら、LWJGL が常識のようだ。さらに、2D は Slick2D という LWJGL に上乗せして使うフレームワークが定番らしいことを知り、突撃を開始する。これが 2013 年 5 月の段階。
  5. Slick2D に突撃を開始した直後、Slick2D の公式サイトが消失する。数日前までは存在していたので、一時的な現象かと思って突撃を続けていたら、復活の兆しはない。そもそも Slick2D の開発の中心的人物が手を引いてしまっていたようだし、どうも雲行きが怪しい……。
  6. 2013 年 6 月、図書館で予約待ちだった『Android ゲームプログラミング A to Z』(2 月頃に一度借りて返却期限によって返却後、2 度目の貸出予約をしていた)が手元に届いたので、ふと思い立って、著者の Mario Zechner が開発した LibGDX を使ってみる。「すごく良い!」。デスクトップ用も Android 用も並行して開発できる超スグレモノ Java ゲーム開発フレームワーク。Android プラットフォームの学習をほとんどしなくても、Android 用のゲームが作れてしまう。ただし、本の方は、Android プラットフォームにおいて LibGDX がどのような技術的課題をクリアしているのかという解説が主となっている。つまり本は非常に詳細な(比較的低レベル層のプログラミングに関する)内容も網羅しており、LibGDX を利用するだけであれば、気にしなくてもいい内容を多く含む。
  7. 実は、Slick2D の元中心人物であった Kevin Glass 氏も、既に LibGDX ユーザーに転向済みだったことが後に判明。
  8. そういったわけで一旦は LibGDX で突撃していた。2D のゲームも試作で作ったりした。
  9. ところが、LibGDX の唯一最大と言っていいかもしれない弱点に行き当たる。それは、日本語フォントがあまりきれいに表示されないのである。デスクトップ PC 用のゲームを作っている分には問題ではなかったが、いざ、Android 用のものを作ろうと思った時、小さな細かい画面で、フォントにハンディがあるのは、かなり致命的である。
  10. 結局、深入りを避けていた Android の標準 API だったが、このようにして逃げ切れなくなったので、真っ当に勉強しながらプログラミング中。今や Java にある程度馴染んできたので、Android と直接向き合っても、それほど無茶な感じでもなくなってきた。Activity のライフサイクルというイベント駆動なプログラム設計にも慣れてきて、マルチスレッドとかも普通に扱えるようになってきた。
  11. 今では、Fragment や ActionBar (Android 5.0 以降では Toolbar) なども駆使できるようになったが、未だに、使っていない API は謎(まあ、必要になれば覚えると思うが)。例えば、Service など。また開発環境の使い方も、網羅はできておらず、デバッガは使い方を覚えるのが面倒なので、放置で、主に LogCat に頼るやり方でしのいでいる。Android 5.0 から Material Design が導入されたが、これも勉強不足で手付かず。


MiHR.net