いまや猫も杓子もSecondlifeという感じになってきた、仮想空間。
うちの会社も研究目的で土地を買ったということなので、ぼくもはじめてみた。
SLの一番の魅力は、ユーザが自由に物体を作り出せること。
その物体を自由にプログラミングできること。
作っている風景は、エスパーみたいでかっこいい。けっこうこれだけで楽しい。
そて、この物体の振る舞いを定義するためのプログラム言語は、SL独自のリンデンスクリプト言語(LSL)という。
一見、C言語っぽい文体を持つが、構造はawkに近い。
物体が持つ「状態」を定義し、その状態ごとに、イベント発生における処理を記述する。
状態A(初期状態)
{
event1
{
処理1
}
event2
{
処理1
}
・
・
・
}
状態B
{
event1
{
処理1
}
event2
{
処理1
}
・
・
・
}
こんな構造だ。状態というのが分りにくいが、自動ドアを考えてみる。初期状態Aというのは、ドアが閉まっている状態。ドアのオブジェクトが、閉まっている座標を持っている。そのA状態の中のイベントに、誰かがドアに触れると、touchイベントが発生する。
touchイベントの処理の中で、ドアを左に2m動かす、という処理をする。さらに、
状態Bのドアが開いている状態に移行する。
状態Bの中で、同じくtouchイベントが発生すると、ドアを右に2m動かす処理をして
状態Aに戻る。
LSL風に書くと、流れはこんな感じ。
default( =ドアが開いている状態)
{
touch()
{
ドアを動かす(右に2m); //この処理は自分で作る
state opened_door; //状態を移動する
}
}
opened_door
{
touch()
{
ドアを動かす(左に2m)
state default; //状態を移動する
}
}
Cとは違って、手続き型言語ではなく、イベントドリブンなので、書くには多少コツがいる。そうしたコツに慣れていないので、これから少し練習が必要だ。
処理のための関数も300以上もあり、その関数を理解するのだけで大変だが、以下にリファレンスがある。
LSL wiki