GDD2009-Android

Android関連のメモ

・ゲーム開発を例に説明
iアプリなども同じようにパフォーマンスやメモリの管理のノウハウがあったように思うので、それが使えるか
 ゲーム中はメモリの確保や解放はしない。GCでゲームが止まるため
 ゲーム開始前にまとめてメモリを確保し、次のステージに移るときなど、止まっても良いときに明示的にGCを実行
→DDMSというツールを使うと便利
→なるべくstaticメソッドを使う
 インターフェイス経由のメソッド呼び出しはクラス経由よりも約30%遅い
レンダリング
CanvasOpenGL ESのどちらかを使うがそれぞれメリット、デメリットがあるので考えて使うこと
 Canvasは普通のアプリレベル(少ないオブジェクト)なら十分早い
OpenGL ESはG1などではハードウェアサポート有り
 2Dだけではなく、もちろん3Dも対応
 Androidのスペックとして、OpenGL ES1.0はサポートしており、ハードウェアによってはExtensionも対応している
・Tips
→タッチスクリーンを使うと、UIスレッドは大量のMotionEventを受け取るので、onTouchEvent()でsleep()を呼び出す
 とりあえず16msecあたりから調整
→pause、resumeはややこしいので、GLSurfaceViewを使いましょう
→Android1.0-1.5ではindirect bufferでVBOを使うとちゃんと動かないのでdirect bufferを使いましょう(Donutで修正予定)
→アプリのサイズはなるべく小さく(2〜3MB)
→ハードキーやトラックボールなど、機種によって無いデバイスもあるのでそれに依存したUIにしてはいけない
Androidプラットフォームで実行できるコード
→Managed code(DalvikVMで動作するJavaのコード)
 レジスタベース
 今後はGCの改善、JITコンパイル、コアライブラリの最適化、BluetoothP2P関連APIの追加などが入る予定
Ajax
 AndroidのブラウザはWebKit+SquirrelFish
 今後はHTML5への対応、JSVM、Augmented Ajaxが入る
 Augmented AjaxJavaAjaxのブリッジ
→Native code
 Cで実装したネイティブコードを実行できるようになる
 NDKで作ることが出来るようになるが、Donutで公開予定
 現状ではlibcとlibmのみリンクできるが、他の追加ライブラリは未定なので、是非とも要望を出してほしい
 nativeのみで実装されたアプリケーションには対応しない。かならずJNI経由での呼び出しになる。

Javaで作成できるので、Java開発者には敷居は低いかも。
しかしながら限られたリソースをうまく使うような実装にする必要がある。でもゲームでない限りはOK?
iアプリとか作っている人には入りやすいかも。