2013年5月16日木曜日

Fluid Motion / 水のライブ壁紙 公開。

「Fluid Motion / 水のライブ壁紙」を公開しました。
 https://play.google.com/store/apps/details?id=jp.ga_software.fluid_f

そろそろ蒸し暑くなってきましたから、涼しげに水面がゆらめくライブ壁紙いかがでしょうか。

昔からこの水面の波紋のアルゴリズムを使って、Windows用のスクリーンセーバーとかアクセサリなどを作っていたので、Androidでライブ壁紙を作り始めてからは、いつか作ろうと思っていて、今回、公開でき、うれしいです。

大元は、PC用の所謂「メガデモ」を見たのがきっかけでした。
HEARTQUAKE byIguana
 http://www.youtube.com/watch?v=q9_VUDz_tuM
1994年のAssembly、デモ部門3位。94年!19年前!

当時、DOS/Vパソコンなんてものを手に入れて、こういう映像デモみたいなもんを、仕事のネタ集め半分、趣味半分て感じで観ていたわけですが、その中で、このデモに出会ったわけです。

今ではもう、ごく普通にこれくらいのものは、AndroidでJavaでも作れそうなもんですが、当時のPCといえば、、、IntelのPentiumプロセッサの発売が93年5月~と。自分はたぶん、i486DX4 66MHzか、Pentium ODP(83MHz)の載せてたくらいのPCだったはず。
そんな、現在レベルではどう例えたらいいもんか想像つかない(だって100MHz以下のデバイスなんて周りに見当たらないですよね。PSPですら常用222MHz、最高333MHz?)PCでも、この滑らかな波が動く!と、驚愕の思いで観てた記憶があります。

で、このデモや、その他もろもろ、なんでもかんでも詰まっていたのが、Hornet Archive。いや、でも、当時ネット繋いで観に行ってたのかな?秋葉原で買った、Hornet ArchiveのCD-ROM?に入ってたのかな?まあ、そのあたりともかく、コレの、水の波紋の計算部分のソースコードがあったんです。

ただしPascal(言語)。

Pascalて!判るかい!

、、、とは思ったものの、計算の順序みたいなものはおぼろげにでも判るもんで、最初、N88BASICで書きました。
なんでN88BASICかというと、当時、仕事で使ってたのがPC-98??EPSONの互換機、PC-386Mだったかも。まあその上で、わりと普通にテストツールとしてBASIC使っていたんです。

そんなこんなで、だいたいHEARTQUAKEのGreetingパートのような、「水」が表現できました。
その後、Visual C++ 4.0?あたりを購入し、Windows用のスクリーンセーバーと、デスクトップ上に置いておける時計なんかを作って、Vectorに上げたのが、、、99年?みたいです。ずいぶん間が開いた。

これはそれなりに人気を博して、その手のフリーソフト集めた系の雑誌に収録してもらったり、なんだかんだで今でも、月に数十ダウンロードはされてるみたいで、ありがたい気持ちになったりもします。

ちなみにその他、その後勤めた会社の組み込み系8ビット機でも実装したり、なんだかんだで、「重さ感」が知れてるアルゴリズムなので、対象システムの実力診断に使ってるような気がします。

というわけで今回のライブ壁紙。

ライブ壁紙ですから、100%CPUを使うわけにもいかないので、水面計算の「格子」は荒めです。15fps動作にして、まあまあガタガタではないし、それなりに水っぽい動きにはなる、というところでバランスしました。
フェイクの色ズレ(色収差)の効果がいい具合に出て、なかなかそれっぽく見えると思います。
プロセス負荷を見ていると、案外25~30%くらいで安定しているので、普段使いもできるんじゃないかと。

長々、どうでもいい昔語りになってしまいましたが、そんなわけで、よろしくお願いします。

2013年4月11日木曜日

AC-VR ビー玉ライブ壁紙 公開。

「AC-VR ビー玉ライブ壁紙」を公開しました。
 https://play.google.com/store/apps/details?id=jp.ga_software.marble_f

テーブルの上を、ビー玉がコロコロ転がります。
端末の姿勢によって、見える角度が変わります。見上げるとテーブルの下が見えたりもします。

基本的には、ビー玉の描画はフェイクなので、よく見るとガラスの屈折は表現されていません。(OpenGL ES 2.0で屈折シェーダーを書いて、そのあたりも実装したいところですが、ライブ壁紙がGPUぶん回してバッテリを喰らうのもどうかと思うので、これくらいでいいかなと、、、)

なのであまりよく見ない、のがコツ(?)です。

ビー玉らしきものがコツコツぶつかってはじける様をお楽しみください。

端末によっては、ビー玉に閉じ込められた空気の泡、の表示に使っている「ポイントスプライト」の実装に差があり、うまく見えないものがあるかもしれません。
手元では、Android2.3.1の古めのタブレットでそういう症状がでました。
別の手法で描画することで直るようなら、追って修正したいと思います。

Playストアのスクリーンショット等とかけ離れたものが表示されるようであれば、ユーザーレビュー、このブログのコメントなどでお知らせください。

-   -   -   -   -

お勧めとしては、AC-VRを「ロールのみ」、どちらかに自動回転をかけて、ぼーっと眺めていただけたらと。ただ、せっかくテーブルの裏にデベロッパ名を描き込みましたので、いちどは下から見上げてやってください。

いちおうこのビー玉の動き、衝突計算などは、ゲームを作るつもりで作り始めたのですが、まあまあいい感じに出来た気がするので、そのうちゲームとしても、進めていこうと思います。

-   -   -   -   -

しばらく前に、「Floating Cube LWP」をバージョンアップしました。
キューブ群のアニメーションを、2種類増やしました。
あと、長い時間使っていると、背景の白いラインがカクカクするようだったので、修正しました。

こちらもお試しいただけるとうれしいです。

以上、よろしくお願いします。

2013年3月6日水曜日

Floating Cube LWP 公開。

ふたつめ(3本目)のアプリ、「Floating Cube LWP」を公開しました。

https://play.google.com/store/apps/details?id=jp.ga_software.cubes_f

3つのアニメーションパターンでキューブが回転するライブ壁紙です。
キューブ(と背景)の色、ライトの色を選んで、好みの雰囲気でお楽しみいただけると思います。

自分はいわゆるガンダム者というわけではないんですが、ライト色をマゼンタにすると、赤 → シャアザク、緑 → ザク、青 → グフ、と、ジオン軍な感じで楽しめる(?)かも知れません。(※赤は3倍速かったりはしないです)

そういえば、今回は、ホームスクリーンの左右スクロールに対応しました。自分の手持ちでは、10.1インチの中華タブレットで、スクロール値が入ってこないホームアプリがありましたが、ZeamやHoloなどでは動くことを確認しています。

意味もなく左右にふわふわ動かして楽しんでください。

カッコいいアニメーションが思いついたら、パターンを増やすかもしれません。特にリング系の組み合わせは、いろいろアリだな、と思ってます。ライトも、複数回すといいかもな、とか。

- - - - - 

極めてどうでもいいテクニカルな話ですが、今回は、半透明の物体(今回はライトの表現)を正しく奥行きに合わせて表示するために、奥行きリストを実装しました。

前作の羽根LWPでは、このへんの実装方針がもやもやしていたので、とりあえず「遠いほうから描画する」というルールだけで済ませる(深度バッファを使用しない)、という実装をしました。
テクスチャのアルファ抜きやブラー表現をしても、特に問題はなかったのですが、そのため、多少、羽根の動き方に制限があったり、計画として、中央に時計表示を付ける(3D数字オブジェクトを視点中央に置く)ときに、またバレないように奥行きをごまかす実装をしないといけないなあ、と思っていました。

が、今回作ったリスト構造を組み込めば、正しい方法で描画ができそうです。
ホームスクリーンのスクロールで視野が回ったり、スワイプ動作で風が吹いて羽根が吹き飛ぶ、とかも実装できそうです。(実装するかどうかは未定ですが)

他にも、計算で構成した座標情報を変化させながら表示する、という実装もしました。
背景のライン部分、ライトがひらひら動く部分がそれに当たります。
本当は、OpenGL ES 2.0ベースに移行して、シェーダーでやるべきことなんじゃないかとは思っていたんですが、特に問題なく、自分が作るものが要求する程度の性能は出るので、これはこれでいいんじゃないかと思ったりしています。

この手法は、次回のライブ壁紙で使おうかと思ってます。次の次かも。

そんな感じで、お楽しみいただければ幸いです。次回もご期待ください。

2013年2月28日木曜日

AC-VR feather LWPの既知の問題、バージョンアップの検討。

これまでに判った問題点:

1、逆光演出、影表示のミス
なんらかのケースで、上方を見上げても、羽根が逆光で暗くならない、同様に、地表に近づいたとき、影が羽根そのままのテクスチャで表示される、という状況が確認されました

 → 描画処理前に、改めてライト設定、材質設定を書き加えていますが、再発しています
  今後も調査します

2、描画がおかしいハードウェア(OpenGLソフトウェア実装の問題?)
手持ちの中華パッド上で、意図した表示がされない端末がありました
左から、
 ・羽根の外周が黒ずんで表示される
 ・ブラーをかけると羽根が暗くなる
 ・ブラー高設定では、さらに暗くなる


 → テクスチャの透過部分の描画処理が正しく実装されていないと思われ、システム側の対応(ROMのバージョンアップ等)が必要と思われます
メーカーHPなどで、ソフトウェア修正がないか確認ください

3、Galaxy TAB(SO-01C)上での不具合
「動作しない」とのレポートをいただきましたが、現状、詳細が不明です
開発PC上で、Android2.2のエミュレータでの動作は確認できているので、Androidバージョンではなく、端末固有の障害かと思います

 → 詳細を報告いただければ調査を進めます



アプリのバージョンアップについて:

・フリー版の広告ソースをappCに変更
設定画面に表示される広告の変更ですので、特にお使いいただく上での差異はないと思います

・有料版に、時計表示オプション追加
せっかくライブ壁紙を設定するので、ただ見るだけでなく、実用機能が付いててもいいのではないかと思います
アラーム等、あまり複雑な機能までは未定ですが、パッと時間が判るだけでもいいかと

もろもろ検討中です

意見などお寄せいただければ、参考にさせていただきます
よろしくお願いします


2013年2月27日水曜日

AC-VR feather Live Wallpaper 公開。

「我 -GA-」の初めてのアプリ(ライブ壁紙)、「AC-VR feather Live Wallpaper」を公開しました。

フリー版(設定画面に広告表示あり):
 https://play.google.com/store/apps/details?id=jp.ga_software.feather_f
フル版:
 https://play.google.com/store/apps/details?id=jp.ga_software.feather

上空高くから、たくさんの羽根が降りそそぐライブ壁紙です。
スマホ/タブレットを上下に向けることで、向けた方向の景色を見ることが出来ます。

見方のコツとしては、つねに端末の画面を正面から見るようにすることです。
端末の画面が消えているとしたら、自分の顔が画面に映ってる状態で、そのまま上~、下~、と見ると、その方向の景色が見える、というイメージです。

ツイッターを見たり、ブラウザで調べもののあと、ホーム画面に戻ったとき、ふと、ゆったり降ってくる羽根を見て、癒されてほしいな、と思いながら作成しました。

フリー版では、フル版のすべてのオプションが、1分間、体験できます。たくさんの羽根を表示するため、端末の処理が重くなる可能性がありますので、処理負荷表示機能を併用して、このくらいのオプションなら表示できるな、と確認のうえ、よろしければフル版を購入いただければと思います。

製作者としては、やっぱりブラーが付くと見栄えの柔らかさが違うので、枚数少なく、サイズ大きくして、ブラーをかける設定が、常用にはいいかと思います。

ただ、ブラー設定は、単純に選択した羽根の枚数にx4倍、x8倍の描画負荷になりますので、バッテリ消費や発熱には注意ください。

現実的には、Android機器は、通常の設定であれば、ホーム画面で数分放置すればスリープに入りますし、ライブ壁紙はアプリとアプリの「つなぎ」で表示されるものですから、目に見える負担にはならないという印象はありますが。

さて、そういった感じで、お楽しみいただければ幸いです。
今後も、「AC-VR」なる技術を使い、端末の小さい窓からあちこち見回す感じのアプリを作っていこうと思いますのでよろしくお願いします。