Bonsai Blast

画面上の道に色玉が押されてどんどん出てくる。画面をタップすると、左下にある砲台からタップした場所に向かって色玉が発射され、色玉は元あった色玉とくっついて止まる。そのとき同じ色が3つ以上並ぶとまとめて消える。連鎖もあり。出てくる色玉を全部消せば面クリア。


シンプルだけど、片手で持ったまま親指でタップすればいいので、電車の中で立ったままプレイできる。面クリアしたときの達成感もある。面が進むにつれ仕掛けも増えていくが、その時点で説明があるので、最初からいっぱい憶えなくていいのでとっつきやすい。お勧め。


http://www.android.com/market/free.html#app=bonsaiblast

HTC Magic のブラウザからの YouTube 再生

Android のブラウザは Flush に対応してないので、DohhhUp だの ニコニコ動画(ββ) だのの動画サイトが見られないのだが、YouTube だけは専用アプリを立ち上げて見られるようになっている。以下はその様子。


1. ブラウザから YouTube へのリンクをクリックして開く
2. そのままブラウザで見るか YouTube 専用アプリで見るか選択
3. 専用アプリならそのまますぐに全画面で再生開始 (ブラウザでは 動画は見れない。)


ケータイの小さい画面だと、YouTube 再生ページにある動画へのコメントだの関連動画へのリンクだのは見づらいので、いきなり全画面再生をする方がありがたい。しかも設定によっては、途中の選択画面もスキップできる。


WindowsMobile だと TCPMP というあらゆる動画フォーマットをサポートしたプレーヤーがあって、溜め込んだムービーを見るという使い方だったが、Android ではオンライン環境の中で YouTube を見ることになるんだろなぁ。これはどっちの使い方にも一長一短あって、電車の中でムービーを見るには蓄積したデータの方がよくて、家で寝る前に寝床で動画をあれこれ見るにはオンラインの方がよい。Android にもオールラウンドな動画プレーヤーが登場するのを期待。


 YouTube アプリの直接起動は、Android 開発環境のエミュレータのブラウザにはない機能だが、HTC のオブションなのか、この先標準で提供されるのかは不明。



YouTube へのリンクのあるブラウザ画面



ブラウザで見るか専用アプリで見るか選択



YouTube アプリ起動中



再生スタート

ブレイクセッション

実はブレイクセッションでやってることについて、どれもほとんど予備知識がない状態で参加した。ごめん。なので面白い公演を聞き逃してるかもしれないが、聞いたセッションそのものは、なんかパッとしない感じだった。Android もらったんで、早く家に帰って遊びたい気持ちが強すぎたのかも。

複雑でスケールするアプリを Google App Engine で構築するには

 Google App Engineの予備知識が全然ない上に、Android をもらうのに並んでたんで公演途中から入ったので、ちんぷんかんぷん。
 Google App Engine は複数のコンビュータにデータベースが配置してあって、データはそれぞれバラバラに入っている。クエリー時にコマンドを数千台に投げて帰ってきた答えをマージするみたいな話。

O3D サイトに3Dコンテンツを加えよう

 HTML5 にあった、Javascript で3D描画を行うときの記述についての話。オブジェクト側のプロパティに色とか形とかいろいろ情報を持たせて、イベントやループ内ではパラメータ変更するくらいのことしか書かずにすむとかなんとか。

Android のデータ共有

 スレッド間のデータの受け渡しには、intent から HTML コールまで4段階あって、それぞれ利点欠点があるので用途によって選びましょう。

Android でリアルタイムゲームの開発方法

具体的で面白かったので、このセッションだけたくさんメモした。

・プログラム構造は、経過時間をパラメータにして、ゲームのロジック部と描画部は別スレッドにするといい。つまりタイマーイベントをかけて、そのときの時間によって画面内容を計算して描画コマンドをリストアップし、それを別スレッドで描画する。
・ゲームは作って操作してみて、いろいろ手直ししながら作成していくので、パフォーマンスのみならず拡張性も大事。

TIPS

・ゲーム中にメモリの確保、開放をやらない。GC が起きて何もかも止まってしまうから。開始前にすべて確保しておく。DDMS を使ってメモリ使用状況を確認。
・関数は呼ばない。なるべく static 関数を使う。
・インターフェース経由の呼び出しは遅い。
・JNI処理は速いが呼び出しにオーバーヘッドがかかる。
・なるべくローカル変数を使う。
・floatは遅いけど、まあ気にならない。
SDK にプロファイルツールがあるから活用を。

描画コマンド

Canvas
・使うのが簡単。描画オブジェクトが少なければそれほど遅くない。10スプラインで10ms
OpenGLES
Canvas より速いが呼び出しにオーバーヘッドあり。
Android は OpenGLES 1.0 だが、端末メーカーによってそれ以上サポートしていることも。
glGetString( GL10.GL_EXTENSIONS ) で確認。
・背景描画でタイルの合成をするのに、glTexParameter() が遅い。
・VBOで複数タイルを同時描画するのが速い。(Vertex Buffer Object?)

TIPS

・タッチスクリーンを触ると UI スレッドに物凄い数のイベントがくるので、 onTouchEvent() に sleep() を入れる。16ms から始めて要調整。
・pause, resume はややこしいが、標準コマンド GL_SurfaceView() を使うといい。
Android 1.0-1.5 で indirect buffer で VBO を使おうとするとちゃんと動かずエラーも投げない。動くときもあるが GC がメモリを動かすと変な動き。direct buffer を使う。
その他
・アプリケーションは小さく作る。でかいと端末で邪魔になって消される。2-3MBがベスト。
・どんな機種でも動くようハードウェアキーやトラックボールに依存しないで作るといい。

基調講演

Google

HTML5 の紹介
 先日発表があったもの。フラッシュ要らなくなるね。
GoogleWave の紹介
 同じく。面白いがやりすぎかなぁ。どこで誰に何が見えてるか把握するのが大変で、秘密のメールと思ってたら、ブログで全世界が見てたとかならないかなぁ。API も用意したし、数週間後におまいらにID配るからアプリ頑張ってくれ。
Android の紹介
 今から全員に端末配るから、おまいらアプリ頑張ってくれ。

docomo

 Android の普及に docomo は1台3万円の販促費をつけて販売面からサポートする。おまいらはアプリ作成頑張ってくれ。

mixi

 OpenSocial 対応アプリについて。PC版のβは出した。モバイルのベータは6月に出す。アプリページの広告料の0.02%を作者に渡す、有料課金がしたいなら仕組みを作る、金がないなら少々貸してやってもいい。だからおまいらアプリ頑張れ。
  

Google Developer Day 2009 Japan

 とりあえず Tシャツでも貰えたらいいなと思って参加したら、全員に Android 携帯がオミヤゲとして配られた。AndroidiPhone より1年遅れているので、開発者を増やそうと必死なわけだ。その他にも基調講演には google の人、mixi の人、docomo の人が現れて、全体として、おまいらオレたちのためにアプリ書けゃゴラァ、いや、書いてくださいお願いします、というのが趣旨のお祭りであった。まぁ Developer Day ということだから当然か。有象無象の開発者でも五万と集まると強いということね。

その場編集を作ってみた

自作のブログシステムに、その場編集機能をつけました。すべてその場編集できて、絵やテキストの位置をドラッグ・アンド・ドロップで変更できます。
デモページはこちら。 http://m-obj.com/demo/memo