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%くらいで安定しているので、普段使いもできるんじゃないかと。

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