2011年6月18日土曜日

Androidでのゲーム開発手段

ABCでのLT講演が決まりました。がんばります。

Androidでゲームを開発する手段はJava一択ではありません。
わたしの知ってる限りでゲーム開発で使えそうな手段を挙げます。

  1. Unity(C#, JavaScript)
  2. HTML5(JavaScript)
  3. Adobe AIR(Action Script)
  4. SDK(Java)
  5. NDK(C/C++)
  6. Corona SDK(Lua)
Android上でさわったことがあるのはHTML5のみですが、他の開発手段もおいおい触っていきたいと思ってます。とくにクロスプラットフォーム開発が可能ならAdobe AIRとCoronaSDKは触っておきたいなと。
とはいえ、Android上で開発したことないだけで、上に挙げている言語はすべて扱ったことはありますので、ある程度予想はつきます。
まずHTML5とAdobe AIRは描画が足を引っ張ることになると思います。
CoronaSDKは複雑なものを組もうとするならば、Lua自体の動作速度がネックになるかと。
VM上で動作するJavaとC#ですが、両方ともJITを搭載しているので、動作速度はそこまで気にならない印象があります。
ただし、SDKはゲーム用のミドルウェアを使わないと非常にしんどい思いをする・・・というかしてます今。
あとGC付き言語の宿命として、GC回避コード組まないとGC起動してアクションゲームだと悲しい思いをします。GC起動を回避するためにはオブジェクトプールしかないんですが、これがまた面倒で、どれくらい面倒かというと、オブジェクトプールするならC/C++で組んだほうがいいくらいです。
C++の場合GCとしてReference Count法を採用できるので、記述能力で劣るJavaよりも(私感)ますますC++でいいような気分になります。
ただし、Android2.3のGCはConcurrentGCといって、別スレッドでコンカレントにGCを走らせることが可能になります。私の知ってるアルゴリズムを採用してるなら、停止時間3ms程度というデータも納得いきます。
特にマルチコア環境では、スループットもレスポンスも改善するという夢のようなクライアントサイドGCなのです。GoogleGJ!

0 件のコメント:

コメントを投稿