Second LifeでLSL遊びをしてみました

2007/3/12

LSL(Linden Scripting Language)で遊んでみました。 といっても、恐ろしく初歩的なことだけしかまだ出来ていません。 とりあえず、プログラムを書いてみるところまで出来て安心して夜(半分朝)寝てしまったら、次の日からつながらなくなってしまったためです。 (早く乗り物を作りたい。。。)

Official Linden Blog : We're experiencing some technical difficulties…」によると、何か問題があって200以上のリージョンが落ちているらしいです。 そのせいかは不明ですが、結局週末はSecond Lifeに接続できませんでした。 「折角これから色々LSL遊びをやろうとしてたのに!」という気分でしたが、とりえあえず現状でやったところまでを紹介したいと思います。 本当に下らないところまでしか出来ていません(言い訳)。 あまり期待しないで読んでください(言い訳)。

使える機能リストは「LSL Portal : Second Life Wiki」を見ると良いと思われます。 また、簡単なスクリプトサンプルも「LSL Portal : Examples」にありました。

もの作りが出来る場所を探す

Second Life内では、どこにいてもスクリプトは書けます。 しかし、書いたスクリプトを試すには、もの作りが可能な場所に行く必要があります。 コンパイルして文法的に正しいかどうか以上の事がわからないのでは、折角書いても楽しくないので、まずはもの作りができる場所を探します。 Second Life画面の左上に物作りが許可されているかどうかマークがついていますが、それを見ながらプリム(Prim)と呼ばれる物体を設置できる場所を探します。 何と無く探してみた感じでは、誰も購入していない空き地はプリムを設置できそうな気がします。 気のせいかも知れませんが。。。

とりあえずプリムを配置してみる

まず、地面に向かって右クリックします。 そうすると、丸い選択UIが出てきます。 その中から、Createを選ぶとプリムがそこに設置されます。


作る


作成される

とりあえずスクリプトを書いてみる

スクリプトを書くには、インベントリ(Inventory)ウィンドウを開きます。 Inventoryウィンドウで「Create > New Script」とやると、新しいスクリプトが出来上がります。

新規スクリプトは、Hello Avatarスクリプトになるようです。 新規作成スクリプトを開いた中身を以下に示します。

書いたスクリプトをSaveすると、コンパイルが自動的に開始されます。 そこで、「Compile successful!」と表示されれば書いたスクリプトは文法的に正しいということがわかります。

書き終わったスクリプトを地面に置いたオブジェクトへドラッグすると、スクリプトが実行されます。

Hello Avatarスクリプトは、オブジェクトへ適応された瞬間に「Hello Avatar!」と言います。 さらに、オブジェクトを触ると「Touched.」というメッセージを表示します。 オブジェクトを触るには、右クリックをします。

IMを送ってみる

llInstantMessageを使うと、IM(Instant Message)を送れるようなので、試してみました。 IMは、指定したUUIDを持つユーザに対して送信されます。 そのユーザがログインしていない場合には、次回ログインしたときにメッセージが送られるそうです。

とりあえず、何も考えずにオブジェクトを触ると自分にメッセージが届くようなスクリプトを書いてみました。 llGetOwnerを使うとオブジェクトの持ち主のUUIDが得られます。


default
{
    state_entry()
    {
        llSay(0, "Hello, Avatar!");
    }

    touch_start(integer total_number)
    {
        llInstantMessage(llGetOwner(), "touched");
    }
}

表面のテクスチャを置き換えてみる

次は、オブジェクトを触ると表面のテクスチャが変更されるようにしてみました。 llSetTextureを使うと表面を変更できるようです。

オブジェクトのUUIDを得るには、Inventoryのウィンドウで右クリックから「Copy Asset UUID」を選んでUUIDをカットバッファに読み込みます。 その後、スクリプトを書くウィンドウでペーストをするとUUIDがペーストされます。 今回は、最初から用意されている「Inventory > Library > Textures > Steel Plate」テクスチャを使ってみました。


default
{
    state_entry()
    {
        llSay(0, "Hello, Avatar!");
    }

    touch_start(integer total_number)
    {
        llSetTexture("fd459a9a-576b-a063-a1cd-d0e9253", 0);
    }
}

最後に

とりあえず、軽く遊んでみました。 遊んでいる途中にSecond Lifeクライアントが落ちたりもしましたが、全体的に出来は良い気がします。

UIが使いにくいという意見も良く聞きますが、色々出来すぎるのがUIを難しくしている気がします。 例えば、AdobeのPhotoshopやIllustratorは広く使われているソフトウェアですが、恐らく初めて使う人は何をどうして良いのかわからないと思います。 PhotoshopやIllustratorの性能を限界近くまで引き出して活用している人は少数だと思います。 PhotoshopやIllustratorは「超プロが使うと魔法が使えるが、一般人にとってはほとんどの機能が意味不明」というようなものだと思いますが、Second Lifeも似たようなものではないかと思いました。 要は、マニアックだという事でしょうか。

スクリプトを書くにあたり、出来る事を見ながら自分が同じものを作るのであればどれぐらい大変だろうという視点で見ると、出来は非常に良いと思いました。 日本語版が公開される前に話題にならなければ多くの人の視点は違ったのだろうなぁと、何と無く思いました。 大きな話題にならなければ、一部のマニアが「これ面白いよ」と密かに拡がっていったんではないかと思いました。

最近のSecond Lifeに感する話題は「流行るか流行らないか」「一般ウケするかしないか」「企業が多く参入」といったものが多い気がします。 それを見た技術者の多くが「一般ウケはしないじゃないか」という感想を持ちます。 少なくとも私はそのような感想を持ちました。 そのため、本来ならば試してみてワクワクしていた人達が自分が楽しいかどうかという視点ではなく、一般ウケするかどうかという視点で試用をしているのではないかと思いました。 考え過ぎかも知れませんが。

まあ、とりあえず流行らないでくれた方が私は嬉しいかもしれません。 大量に人が入り込んでくるとサーバが重くなったりするでしょうし、衆愚化する気がします。 私が飽きるまでは、運営会社がなくならない程度の繁盛具合に落ち着いてくれると嬉しいかも知れません。 そんな事を書くと怒られそうですが。。。



Second Life - the official guide(英語)

最近のエントリ

過去記事

過去記事一覧

IPv6基礎検定

YouTubeチャンネルやってます!