GDD2009-Android
Android関連のメモ
・ゲーム開発を例に説明
→iアプリなども同じようにパフォーマンスやメモリの管理のノウハウがあったように思うので、それが使えるか
ゲーム中はメモリの確保や解放はしない。GCでゲームが止まるため
ゲーム開始前にまとめてメモリを確保し、次のステージに移るときなど、止まっても良いときに明示的にGCを実行
→DDMSというツールを使うと便利
→なるべくstaticメソッドを使う
インターフェイス経由のメソッド呼び出しはクラス経由よりも約30%遅い
・レンダリング
→Canvas、OpenGL 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コンパイル、コアライブラリの最適化、BluetoothやP2P関連APIの追加などが入る予定
→Ajax
AndroidのブラウザはWebKit+SquirrelFish
今後はHTML5への対応、JSVM、Augmented Ajaxが入る
Augmented AjaxはJavaとAjaxのブリッジ
→Native code
Cで実装したネイティブコードを実行できるようになる
NDKで作ることが出来るようになるが、Donutで公開予定
現状ではlibcとlibmのみリンクできるが、他の追加ライブラリは未定なので、是非とも要望を出してほしい
nativeのみで実装されたアプリケーションには対応しない。かならずJNI経由での呼び出しになる。
Javaで作成できるので、Java開発者には敷居は低いかも。
しかしながら限られたリソースをうまく使うような実装にする必要がある。でもゲームでない限りはOK?
iアプリとか作っている人には入りやすいかも。