Linden Scripting Language

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

Linden Scripting Language(LSL)はリンデン・ラボが運営している仮想世界Second Lifeでユーザが使用できるプログラミング言語である。LSLによってSecond Life内のオブジェクトの挙動をコントロールすることができ、また電子メールXML-RPCHTTPリクエスト送信によって外部インターネットとの通信も行なえる。

LSLはC言語に近い文法構造を持ち、非常に強い型付けの言語である。有限状態マシン(有限オートマトン)をモデルにした「状態(State)-イベント駆動型スクリプト言語」といえる。

LSLの構造[編集]

スクリプトは変数関数定義、1個以上の状態(ステート)、から構成される。各ステートには、そのステートにある場合に起こったイベントにどう反応するかが記述される。

基本データ型は整数型浮動小数点実数型文字列、キー(UUID)、ベクトル(3次元位置、およびRGB色表現)、ローテーション(クォータニオン)がある。また、配列型や構造体に相当するものとして基本データ型を要素とするリスト型がある。組み込み関数は2010年3月時点で350個あり、ユーザーは必要に応じてユーザー定義関数を定義することもできる。

実行環境[編集]

スクリプトは 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.");
  }
}

関連項目[編集]

外部リンク[編集]