misc: avril 2008アーカイブ

長らく「coming soon」でごまかしていたトップページの更新をすることにした。とは言え、Adobe Photoshopで適当なロゴを作成してアップロードしただけだ。とりあえず、正式公開というところか。そもそも、レンタルサーバーを借りた目的がブログではないので、どうも身が入らないというのは事実だ。新しいトップページのイメージはこんな感じ

Web2.0なんて、やや乱暴に言えば、情報のアップストリームが急激に増加しただけのことだ。その結果、インターネットは、露出狂的な個人情報の最終処分場と化した。ゴミを入れればゴミが出るというのは、情報科学では昔から知られた事実だが、昨今の検索エンジンは、こうした状況には、ほとんどお手上げのように思われる。などと言いつつ、今夜も「情報のゴミ」をアップロードしている訳だが。


TETRIS.JPG
雨の一日だった。肌寒いので軽く暖房を入れた部屋で、テトリスで遊ぶ。プラットフォームマシンはNINTENDO DSだ。ただし、ゲームカートリッジは、DS専用ではなくゲームボーイアドバンス用のものだ。DS専用のものも手元にあるが、BGMが気に入らない。アドバンス用のBGMの、ちょっとミニマルテクノ風なのが好きだからだ。

元々、ポータブルゲームマシンには興味がなかったのだが、例の「大人の脳トレ」ブームでDSを衝動買いしてしまった。しかし、単純計算を延々と繰り返したり、画面に表示される単語の記憶数を競ったりして、「脳年齢」なるものの若返りを図るというこのソフトの馬鹿馬鹿しさに気付いて、やる気が失せてしまった。

最近のゲームソフトは、CGを駆使した高精細かつ高速なものが多いようだが、正直言って、どこが面白いのか良く判らない。やはりゲームのルールは単純なのが一番だ。そんな意味でテトリスは、1980年代後半の日本初登場以来、私のお気に入りのゲームなのである。平面を予め決められた数種類のブロックで充填するという極めてミニマルなルールのゲームで、当時のソヴィエトで開発された時には教育目的だったそうだ。

前述のアドバンス用のカードリッジは、近所のDVDショップで中古品を安価で手に入れたものだ。前の持ち主がプレイした記録が残っており、購入時のHIGH SCOREは、35万少々であった。DSでプレイし始めた時には、この数字にはとても到達できなかった。そもそも、十万オーダーにはとても及ばないという情けない力量だった。しかし途中から、面白いことに気付いた。それは、ゲームの初期設定で、レベルを「最高」に、そして難易度を「Very Hard」に設定した方が、結果として高得点となるという一見矛盾した事実である。

考えてみれば、ハイリスク・ハイリターンということなのだろうが、この設定でプレイし始めてから得点は軽く数十万ポイントに跳ね上がった。そして、つい先日、855ライン、562万ポイントという当初では考えられなかったような結果を得ることができた。これが、どの程度のものなのかについては、判らないが、少なくとも、前の持ち主より一桁上であることは確かだ。

調子が良かったこともあるが、300ラインをクリアするあたりから、私がテトリスをプレイしているのか、テトリスが私にゲームを行わせているのか判らないような状態になる。ゲームのルールは、極めて幾何学的かつ数理的なのだが、プレイしている本人の頭は、そんなことは考えていないようだ。ほとんど脊髄反射的にマシンを操作しており、自分で止めようと意識しない限り、いつまでもプレイし続けることができるような状態となるのだ。こういうのをトランス状態と言うのかもしれない。


Cellab

| | コメント(0)
Islam5.jpg久しぶりに、セルオートマトンシミュレータの「CELLAB」でムービーを作ってみた。有名なのは、ジョン・コンウェイのライフゲームだが、ルールを変えればいくらでも面白い挙動を示すものを発見することができる。今日は、自作のルールを適用して、ちょっと面白い幾何学模様を生成するセルオートマトンで遊んでみた。

上に示す画像がそれだが、幾何学模様の面白さを示すためには、無圧縮の画像でないとダメなので、AVIファイル形式となっている。WindowsMedia形式では、圧縮に伴う画像の劣化があり、緻密な変化の面白さが判らないのだ。ダウンロードには少し時間がかかるかもしれないが、なかなか面白いので乞うご期待である。

20年ほど前は、このような計算負荷の重いシミュレーションがPC上で可能になるとは、夢にも思っていなかった。当時は、セルオートマトンに特化したPC用のISAボードが、MITで開発されており、私も大枚をはたいてアメリカから個人輸入して使ったものだ。セルオートマトンに特化したボードなので、速度は、当時の汎用スパコンのCRAY-2並みと言われていた。このハードウェア処理によるシミュレーションのパラメータを設定するのに用いられていたのがFORTHという言語だった。私がこの言語に接したのは、その時が初めてであったが、実に奇妙な、そして融通無碍な言語であった。

それはさておき、その後、PCのCPU処理速度が向上するにつれて、ハードウェアに頼らなくても汎用のCPU上でシミュレーションが可能となった。そのためのソフトウェアも市販されるようになり、何と、CADメーカとして有名なAutodesk社から「CA-LAB」というのが発売されていた。まだWindowsが出現する前のことなので、IBM互換PCのPC-DOS上で、これを動かして遊んだものである。

そして、現在、Windows化されたCA-LABが、前述のCellabである。CA-LABは、セルオートマトンのルールをCやPascalを用いて自分で定義することができたが、Cellabも同じ手法でルールを定義できる。上記の画像に用いられているルールは、私がCで書いたものであり、その内容は以下の通りだ。


#include "jcrule.h"

int jcrule(oldstate,     nw,  n      , ne,
                              w,   self,     e,
                              sw,  s     ,  se
            )
int oldstate, nw, n, ne, w, self, e, sw, s, se;
{
    int count;
    static int firstime = 1;

    if (firstime) {
       firstime = 0;
           strcpy(patreq, "islam");
           strcpy(palreq, "islam");
    }

    count = (nw*2 + n*3 + ne*2 + w*3 + e*3 + sw*2 + s*3 + se*2)%8;


    if(((oldstate >> 2) & 0x01) == 0) {
        if(count == 0 || count == 2 || count == 4) {
            if(self == 1) {
                return 7;
            } else {
                return 5;
            }
        } else {
            if(self == 1){
                return 6;
            } else {
                return 4;
            }
        }
    }
    if(((oldstate >> 2) & 0x01) == 1) {
        if(count == 0 || count == 2 || count == 4){
            if(self == 1) {
                return 3;
                } else {
                return 1;
                }
            } else {
            if(self == 1) {
                return 2;
                } else {
                return 0;
                }
            }
        }
}

変数等の詳しい内容は、前述のCellabのサイトにマニュアルが掲載されているので、興味のある人は、参照すると良いが、何はともあれ、オートマトンのムービーを見てみることをお勧めする。こんな単純なルールからは、思いもよらない多様なパターンが展開されるのに驚くことだろう。因みに、幾何学的な文様を次々と生成するので、このルールを「Islam」と名付けた。決定論的でありながら、予測不可能であるというのが、セルオートマトンの面白さだと改めて思う。




アーカイブ