Linden Scripting Language
From Wikipedia, the free encyclopedia
実行環境
スクリプトはSecond Lifeの仮想世界内に配置された椅子や壁といったオブジェクトの中に配置され、実行される。その点でスクリプトはオブジェクトと非常に密接に結び付けられる。システムはスクリプトにイベント(タイマー・移動・アバターとのチャット・電子メール・他のオブジェクトとの衝突など)を送信し、その結果スクリプトはステート遷移を起こしたり、他のオブジェクトやアバターとコミュニケーションを行うことになる。
スクリプトはオブジェクトに追加され次第開始される。そのオブジェクトが仮想世界内に配置されている限り、所有者がログインしていない状態でも実行は継続する。所有者がオブジェクトを撤去して自分のインベントリに移し、さらにオブジェクトを仮想世界内に再配置した場合でも、スクリプトの状態は保持されている。ファイルやデータベースといった永続的なデータ記憶機構は用意されていないが、例えばHTTPリクエスト通信を利用して Second Life 外にデータを保存することはできる。
オブジェクトには複数のスクリプトを含めることができ、それらを並行して実行できる。単体のスクリプトで使用できるメモリ領域は64キロバイト以下に制限される。各スクリプトはバイトコードの実行形式にコンパイルされ、リンデン・ラボのサーバ上のMonoを用いた仮想マシンで実行される。
いくつかの組み込み関数ではその負荷に応じて0.2秒~20秒の「遅延」が設定されており、高負荷となる関数の連続実行が制限される。さらに実行時間が掛かる処理はすべてイベントハンドラを使った非同期処理となる。これは一つの仮想世界シミュレーターのなかで、数千から数十万個のスクリプトが同時稼働するため、スクリプト実行者がシステム資源に過大な負担をかけないようにするためである。
基本となるLSLスクリプト
以下は定型で用意される基本となるスクリプト(一種のHello world)である。default というステートの中にstate_entry、touch_startという2つのイベントが記述されている。各イベント発生時、「Hello, Avatar!」「Touched.」とオブジェクトが発言する。
default
{
state_entry()
{
llSay(0, "Hello, Avatar!");
}
touch_start(integer total_number)
{
llSay(0, "Touched.");
}
}