プログラミングノート

一からものを作ることが好きなエンジニアの開発ブログです。

Google Developer Day 2009 に行ってきました

今日はGoogle Developer Dayに参加してきました。


予想外の人の多さで驚いていたのですが、基調講演で「事前登録をして参加した人全員にAndroid開発機をプレゼントします」というサプライズがあってさらにびっくり。docomoHT-03Aを買うか迷っていたのでラッキーでした。



本日参加したセッションは下記のとおり。

  • 複雑でスケールするアプリを Google App Engine で構築するには
  • O3D -サイトに3Dコンテンツを加えよう-
  • Google Chrome の内部構造
  • Android のデータ共有
  • Android でリアルタイムゲームの開発方法
  • Android 高度方法指南


セッションの内容は後日アップされるとのことだったのであまりメモしていない(後日リンクする)のですが、「Android でリアルタイムゲームの開発方法」はこれまでやってきた携帯開発と非常に近いものがあったのでメモしてきました。


Android開発エンジニアであり、以前はゲーム会社で開発していたというChris Pruett氏の発表だったのですが、Android、ゲームに限らず、携帯開発全般で応用できそうな内容でとても参考になりました。

スレッド重要
  • メインスレッド

入力などの管理を行うが、ほとんどsleep

  • ゲームスレッド

ゲームの処理全般 (レンダリングはコマンドだけ発行する)

キューに溜まったレンダリングコマンドをOpenGLに投げる

Javaの高速化
  • GCが走ると100〜300msほど止まるので、ゲーム中にはメモリ確保/開放はしない
  • GCはユーザーの操作に影響がないタイミングで実行させる
  • 関数を呼ばない(特にインターフェース経由の関数は通常の関数よりも30%遅い)
  • なるべくstatic関数を使う
  • float/doubleは遅い
  • なるべくローカル変数を使う
レンダリング

ソフトウェアで2Dレンダリング
描画するオブジェクトが少なければ早い

2D, 3D両方
大量のオブジェクトでもCanvasより遅くならない
Androidは最低 OpenGL ES 1.0をサポートしていて、機種によっては Extention が使える
Draw Texture Extensionという拡張が最速

  • テクスチャ

画像の利用方法によってはVBO Extentionが最速

Tips

タッチイベントが発生すると大量のMotionEventを受け取る
  ⇒ onTouchEvent()にsleepを入れてイベントの発生タイミングを調整する
pauseやresumeはややこしいので、GLSurfaceViewを使う

参考

Androidアプリで高速描画チューニングをするコツ
Google Developer Day 2009 事前インタビュー(Android編)
Google Developer Day 2009 Japanの事前インタビューでAndroidの話を聞いてきました


去年の今頃からiPhoneを始めたような気がするので、今年はAndroidをやってみようかなと思う今日この頃。携帯アプリは端末依存が色々と大変ですが、実機で動いた瞬間が結構楽しいのではまるんですよね..