LSLとは、米国LindenResearch社が開発運営する仮想空間サービスSecondLifeのユーザー向けスクリプト言語である。
概要
コーリー・オンドレイカらにて設計され実装されたスクリプト言語。Linden Scripting Language。オブジェクトの中に加えてオブジェクトに機能を加えることができる。C言語に似ているがCより簡素化ている。仮想マシン(Virtual Machin、VM)とのソフトは以前はLSO(Linden Script Language Object File)、2008年以降はLSOとMono(ソフトウェア)を用いている。互換性の問題でLSOを止めていない。この辺がLindenLabらしい。
Mono(ソフトウェア)を使うことによって処理速度等が大きく向上したが、日本ではブームが過ぎ去ったあとの改良でお察しください。タイミングが悪いというかなんか。当時のユーザーが重いといって落胆しやめる気持ちも分かるような気もする。
技術のウンチク
スクリプト実行
実行はSIM側で行われ、端末(PC)側で行われない、、、ということは重い処理をプログラミングすると同じSIMユーザーに迷惑掛けてしまう…えええ、そんな。
なお、3Dのオブジェクト、いわゆるプリム(プリミティブ、Prim、Primitive)の表示処理は端末側で行う。
仮想マシンを使う理由
スクリプトを機械語にまで変換すると、違うプラットフォームでは動作しないという問題がある。これを解決するためスクリプトを中間コードにコンパイル(変換)し、各プラットフォームに「中間コードを機械語として実行するコンピューター」のエミュレーターを仮想マシンとして用意する方法が採られた。
SecondLifeのスクリプトではシュミレーションサーバーに導入されているLSOとMono(ソフトウェア)が処理を担当している。
- LSOを使う場合は、スクリプトコードを中間コード「LSOバイトコード」にコンパイル(変換)し、LSO仮想マシンで処理する。
- Mono(ソフトウェア)を使う場合は、スクリプトコードを中間コード「CIL,Common intermediate language,共通中間言語」にコンパイル(変換)し、Mono(ソフトウェア)仮想マシンで処理する仕組み。
Mono(ソフトウェア)が採用された理由は、サーバー側はLinuxのDebianディストリビューション上に構築されたから。
色々難しい話を書いたが、これらはLindenResearch社の技術担当者が扱う話だから、同じサービスを作りたいというユーザー以外は知らなくてもいいと思うよ。
HelloWorldの仕方
「HelloWorld」ならぬ「HelloAvatar」の仕方は比較的簡単で、公式ビューアならば、上の制作>制作ツールを選び、作成ボタンを押して表示された適当なオブジェクトを地面に置く。中身タグを選び、新しいスクリプトを押すと自動的にオブジェクト内にスクリプトファイルが作成されて勝手にチャット欄に「Hello, Avatar!」と表示される。
よく使うスクリプト(メモ程度に)
- オブジェクトの上に文字(フローティングテキスト)を表示する - llSetText
- メニューの「座る」を別の文字へ変更する - llSetSitText
- メニューの「触る」を別の文字へ変更する - llSetTouchText
- オブジェクトを回転させる - llTargetOmega
- テクスチャを変更する - llSetTexture
ウワサ
ブロガー間の噂程度の話でC#でのスクリプト開発実行環境の実装…本当か嘘かは知らない。
関連項目
- SecondLife - VRChatの先代にあたるサービス。非VRでヘッドマウントディスプレイ(HMD)で楽しむことができない。
- プリム(Secondlife)
- C言語
- 仮想マシン
- Mono(ソフトウェア)
- 1
- 0pt