リンデンスクリプト
リンデンスクリプトとは、オンライン仮想空間の「Second Life」(セカンドライフ)で利用可能な、仮想物質(オブジェクト)を作成するための記述言語のことである。
リンデンスクリプトはC言語やJavaに似た記述スタイルのスクリプト言語で、プリミティブとよばれる基本的な構成要素を組み合わせていくことによって一つのオブジェクトを作り上げていく形態をとっている。動作としては基本的にイベントドリブンであり、ユーザーの何らかの操作に対して反応を示す(例えば、車が動く、水が流れる、あるいは外部のWebサイトにジャンプする、など)といった作りになっている。
セカンドライフに存在する物質・物体は、アバターを含めてすべてリンデンスクリプトによって書かれている。自分の所有物であればスクリプトを自由に書き足して改造することが可能である。オブジェクトを豪華に改造すれば、希少価値を付与させて流通させることもできる。
2007年10月現在、リンデンスクリプトの記法を解説した書籍やWebサイトが複数登場している。リンデンスクリプトを扱う代表的なサイトとしては、セカンドライフの提供元であるLinden Labs社が提供しているSecond Life Wikiなどがある。
参照リンク
Second Life Wiki - LSL Portal - (英文)
lslWiki - (日本語ページ)
オンラインゲーム: | ラグナロクオンライン リアルマネートレード リンデンドル リンデンスクリプト Second Life 三人称シューティング チート |
Linden Scripting Language
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2015/06/19 08:21 UTC 版)
Linden Scripting Language(LSL)はリンデン・ラボが運営している仮想世界Second Lifeでユーザが使用できるプログラミング言語である。LSLによってSecond Life内のオブジェクトの挙動をコントロールすることができ、また電子メール、XML-RPC、HTTPリクエスト送信によって外部インターネットとの通信も行なえる。
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."); } }
関連項目
外部リンク
- Second Life LSL ポータル - リンデン・ラボが運営する公式 Wiki
固有名詞の分類
- Linden Scripting Languageのページへのリンク