Linden Scripting Languageとは? わかりやすく解説

リンデンスクリプト

【英】Linden Scripting Language, LSL

リンデンスクリプトとは、オンライン仮想空間の「Second Life」(セカンドライフ)で利用可能な、仮想物質オブジェクト)を作成するための記述言語のことである。

リンデンスクリプトはC言語Java似た記述スタイルスクリプト言語で、プリミティブよばれる基本的な構成要素組み合わせていくことによって一つオブジェクト作り上げていく形態とっている。動作としては基本的にイベントドリブンであり、ユーザー何らかの操作に対して反応を示す(例えば、車が動く、流れる、あるいは外部Webサイトジャンプする、など)といった作りになっている

セカンドライフ存在する物質物体は、アバター含めてすべてリンデンスクリプトによって書かれている自分所有物であればスクリプト自由に書き足して改造することが可能である。オブジェクト豪華に改造すれば、希少価値付与させて流通させるともできる

2007年10月現在、リンデンスクリプトの記法を解説した書籍Webサイト複数登場している。リンデンスクリプトを扱う代表的なサイトとしては、セカンドライフ提供元であるLinden Labs社が提供しているSecond Life Wikiなどがある。


参照リンク
Second Life Wiki - LSL Portal - (英文
lslWiki - (日本語ページ

Linden Scripting Language

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/12/04 14:50 UTC 版)

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

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

LSLの構造

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

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

実行環境

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

非同期処理のサンプル

キーボード入力や、ファイル読み出しは、非同期処理で行う。指定したテキストファイル(ノートカード)の内容表示を行うサンプルを示す。

integer lsn;

string filename;
integer line;
key read;

default
{
    touch_start(integer total_number)
    {
        llOwnerSay("Enter note name:");
        lsn = llListen(0,"",llGetOwner(),"");
    }
    listen(integer channel, string name, key id, string message)
    {
        if(channel==0 && id==llGetOwner()){
            llListenRemove(lsn);
            filename = message;
            state read_file;
        }
    }
}

state read_file
{
    state_entry()
    {
        if(llGetInventoryKey(filename)==NULL_KEY){
            llOwnerSay("ERROR: note is missing.");
            state default;
        }
        line = 0;
        read = llGetNotecardLine(filename,line);
    }
    dataserver(key requested, string data)
    {
        if(requested==read){
            if(data==EOF){
                filename = "";
                state default;
            }
            llOwnerSay(data);
            line++;
            read = llGetNotecardLine(filename,line);
        }
    }
}

関連項目

外部リンク




固有名詞の分類


英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「Linden Scripting Language」の関連用語

Linden Scripting Languageのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Linden Scripting Languageのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2026 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【リンデンスクリプト】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのLinden Scripting Language (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2026 GRAS Group, Inc.RSS