Yes Second Life

セカンドライフ向けWebサービスを作ってました。このブログではVR・メタバースのことを書いていきます

セカンドライフ、LSLスクリプトでできること

今年は、層の薄いセカンドライフのクリエイターが集まって、アドベントカレンダーに挑戦することになりました。これは、その1日目の記事になります。

セカンドライフ 技術系 Advent Calendar

初日だしHelloWorld的なプログラムをつくろうかと思ったんですが、そもそも文法の前にLSLはどんなことができるのか知っておいてもらったほうが、プログラムの説明も簡単になる気がしたので、今回はLSLでできることをパーッとあげてみることにします。

チャット、通信

セカンドライフでは、アバター同士がチャットで会話できますが、オブジェクトにチャットさせることもできます。「○○さんが入店しました〜」みたいな通知に使ったり、自分の作品をプリムに説明させたり、応用次第でいろいろ使えます。

また、アバター会話用以外のチャンネルをつかえば、裏でオブジェクト同士でメッセージを交換させるみたいな、イベントドリブン的な制御にも使うことができます。

プリム、オブジェクト操作

セカンドライフのものつくりはプリムが基本になります。プリムは立方体、円柱みたいな原始的な立体で、それを複数組み合わせてオブジェクトをつくります。

LSLでは、これらを動かしたり、色やテクスチャを変えたり、大きさを変えたり、パーティクルを放出させたり、いろんな操作をおこなえます。LSLスクリプトの効果を見た目で実感しやすいので、とりあえずLSLを試してみたい時にオススメです。

アバター操作

アバターを踊らせたり、装飾品を装着させたりできます。これも、見た目で実感しやすく試してみたい時にオススメです。

カメラ操作

カメラ、つまりクライアントビューワの視点を制御できます。なかなか使いドコロがむずかしいですが、仮想世界の映像をそのままムービーにする「マシネマ」なんかでは、かなり活用されています。

FPSゲーム向けにマウスルックモードに移行することもできます。

メディア制御

昔はセカンドライフ上のメディアは貧弱でしたが、最近はプリムの表面に、ムービーを流したり、HTMLを表示したりといったこともできるようになりました。映画館をつくるみたいな当たり前の用途から、セカンドライフと連携するWebサービスをつくって、そのHTMLをプリムに表示みたいな応用まで、かなり面白い使い方をされています。

検出(タッチ、衝突、センサー)

LSLは、プリムがアバターにタッチ(クリック)されたり、衝突されたりしたのを検出できます。これを使えば、ボタンにタッチした人にダイアログを表示するとか、衝突してきた人を吹き飛ばすみたいなことが可能です。

また、センサー機能で近くにいるアバター群を検出することもできます。

持ち物関連

各アバターは持ち物を持っています。LSLで特定のユーザにアイテムを送ったりすることが可能です。

また、アバターだけでなくプリムもアイテムを持つことができます。たとえば宝箱の形をしたオブジェクトに、金貨を入れておくみたいな感じで使えます。LSLでプリムの中のアイテムを消したり、他のプリムにアイテムを渡したりなど、いろんな操作がおこなえます。

土地の管理

セカンドライフの重要な概念として、土地があります。LSLで土地の起伏を調整したり、土地のプリム数をカウントしたり、いろんな管理ができます。

また、LSLから特定のユーザをBANしたりすることも可能です。

乗り物

物理関連の関数を使うだけでも乗り物はつくれるのですが、LSLには専用の関数があります。車だけでなく、ボート、飛行機、気球など様々なタイプの乗り物がつくれます。

HTTP通信

LSLは、HTTP通信の機能も備えています。HTMLを取得して、文字列操作で欲しい情報を抜き出したり、直接WebAPIを叩いたりなど、いろんな使い道があります。最近では、独自のWebサービスをつくって、プリムと連携させるような高度なやり方も増えてきました。

また、HTTPリクエストをだすだけでなく、HTTPリクエストを受け取ることもできます。プリムがWebサーバになってしまうわけですね。プリム間でHTTPリクエストを送り合って自律的に動作させたりすることも可能で応用範囲は広いです。

まとめ

セカンドライフはネット上にほとんど情報がでてなくて、なにができるのかそもそも分からない人が多いとおもいます。上記にあげたのは、まだ一部分で細かくみてけば、他にも色々できることはあります。へー、こんなことができるんだと少しでも興味を持っていただけたら幸いです。