2007年10月19日金曜日

LSL convention 2007に出展します

あちこちのブログやニュースで紹介されているので知っている方が多いと思いますが、10/20から「LSL convention Japan 2007」が開催されます。内容がLSLなのでちょっと期待しつつオフィシャルサイトを見てたのですが、開発中のTwitterクライアントがとりあえずの形になったこともあって、せっかくなのでスタッフの方に問い合わせてみました。

出展の締め切り日はとうに過ぎていたのですが、なんと参加させていただけることに。

もう後には引けないので、Twitterクライアントに「SLitter」という名前を付けてブースの準備もしました。SLitterはまだアルファ版なので、お持ち帰り用のボックスは用意してません・・・すみません。


ただ、興味のある方や使ってみたい方(人柱希望?)はAmber HermansまでIMいただければHUDをお渡しします。なぜIM必須にするかというと、開発中のため、バージョンアップやサービスの一時停止などのお知らせを行う必要があるからです・・・

SecondlifeとTwitterの両方のサービスを利用している人が対象となるニッチなツールですが、興味のある方はお気軽にIMください。「SLitterくれ!」だけでOKですw

ちなみに、将来的にはフリーで配布することを考えています。というかオープンソースにしようと思ってます。その辺りの情報もこのブログでお知らせしていきますね。

さて、細かな説明用の記事も書かないとですね。

2007年9月25日火曜日

オブジェクトをHUDとして装備したとき表示される面

Twitterクライアントはぼちぼちと進めています。HUDとして装着してチャットで21チャンネルにメッセージを送るとステータスを更新、同じく21チャンネルに「chk:」とメッセージを送ると最新メッセージを1件取得して表示という形になりました。次は自動確認と新規メッセージがあった場合のみメッセージを表示という2点を実装しようと思ってます。複数メッセージの受信はちょっと考えないとなぁ・・・

とりあえず、立方体オブジェクトをHUDとして装備したとき、「いったいどこの面がどう表示されんねん!」とか思ったのでちょっと実験したメモですw。

まず面の話ですが、6面をそれぞれ色分けしたオブジェクトを準備。



このオブジェクトをHUD(Center2)に装着するとこんな感じ。



ちなみにオブジェクトのサイズはデフォルトのままなので0.5m(50cm)の立方体です。このまま画面をキャプチャしてサイズを測ると縦横373pxの正方形。

念のため、面の位置関係を確かめようとY方向に-45度、Z方向に-45度回転させてみました。



これで思った大きさのHUD作りができるかなw

2007年8月24日金曜日

Twitterクライアント for SL作成の続き

さて、これまで2つほどSecond Lifeから使えるTwitterクライアントを試してみたのですが、どれもアップデートはできるが日本語メッセージを受信すると文字化けしてしまうということで、やっぱ自分で作ってみることにしてみました。

前回作ったステータスアップデートの動作テストや2つほど試したクライアントの動作状況から考えて、lslのみでクライアントを作るのは困難な様子。
ちなみに、lslのみでステータスのアップデートは可能ですが、http_responseのbodyには「Unsupported or unknown Content-Type.」と帰ってきてしまいます。
ということでlslのみはあきらめて、間にPHPを使ったWebアプリをかますことに・・・

なぜPHPなのかは、特に深い意味はないのですが単に「Services_Twitter」というPearライブラリを使ってみたかっただけ(笑)
いや、これが簡単で便利なのですよ。

アップデートについては大体分かっているので、先にtimelineの取得をやります。
・・・できました。
もちろんα版(というよりもまだ検証段階かw)なので、フレンドのTimelineから最新メッセージ1件だけを取ってきてllOwnerSayで返すだけです。

初めはPHPからの返り値をurlencode()で処理してたのですが、これを使うと半角スペースが「+」に変換されちゃうので、lsl側での処理がめんどう。
と言うことで、Base64を使っています。この方がデータ量もちょっと少なくなりますしね。

この調子で、次は複数メッセージの取得を考えてみます。
http_responseのbodyは2048byteしか受け取れないので最大で20件分のメッセージを一気に受け取ると取りこぼれが起きちゃうので、複数回に分けて受け取るようにしようかと・・・
このとき毎回Twitterにアクセスしちゃうと1時間に70リクエストの制限に引っかかっちゃう恐れがあるので、ここも考えないといけません。メッセージをPHP側で一時保存して処理するとか。
う~ん、Services_Twitterにキャッシュ機能があるようだけど、これ使えないかなぁ。


PHPソース

<?php
//ライブラリの準備
$PATH = get_include_path();
set_include_path($PATH . PATH_SEPARATOR . ’classes/’);
require_once ’Services/Twitter.php’;
require_once ’Jsphon.php’;

//変数の準備
$user = ’TwitterのユーザID’;
$pass = ’パスワード’;

//Twitterに接続
$st =& new Services_Twitter($user, $pass);
$st->enableJsonConvert();
$a = $st->getFriendsTimeline();

//SLに値を返してやる
$str = $a[0]["user"]["name"] . "(" . $a[0]["created_at"] . ")\n" . $a[0]["text"];
echo base64_encode($str);
?>



lslソース

//変数の準備
key requestid;

default
{
  state_entry()
  {
    llOwnerSay("Touch me, I will get recent message.");
  }
  touch_start(integer tcnumber)
  {
    state download;
  }
}

state download
{
  state_entry()
  {
    requestid = llHTTPRequest("http://上のPHPにアクセスするURL",[HTTP_METHOD,"GET"],"");
  }
  http_response(key request_id, integer status, list metadata, string body)
  {
    if (request_id == requestid)
    {
      llOwnerSay(0,llBase64ToString(body));
    }
    else
    {
      llOwnerSay(0,(string)status+" error");
    }
    state default;
  }
}

2007年8月21日火曜日

SLTweets HUD v0.78を試す

in-worldで使えるTwitterクライアント2つ目のご紹介。

SLTweets
http://www.sltweets.com/index.php




物は前回にSL Exchangeで手に入れましたので、早速装着!



デフォルトではTopに装着されます。
チャットメッセージに簡単な使い方が出てきますので、まずはID/PWの登録から。

「/30074 setup <username> <password>」でセットアップするらしいので、早速やってみます。



無事セットアップ(Twitterとの接続)が完了すると「Registration Succeddful!!」と表示されます。



Twitterにメッセージをアップデートするときは「/123 post <message>」。
アップデートの時はもちろん日本語OKです。



ただし、読み込みの時は日本語は文字化け・・・
このあたりは以前に試したTwitterBoxと同じですね。

ちなみに、HUDの左右の矢印をクリックするとメッセージの履歴を切り替えられます。
新しいメッセージが届くと羽ばたいている鳥のアイコンが赤く点滅するので、右の矢印をクリックしてメッセージを読みます。

今回のクライアントも残念ながら日本語のメッセージを読むことができませんでした。
前回のTwitterBoxではID/PWの設定をスクリプト内に直接記述する方法でしたが、今回はチャットから指定できます。
非常に簡単ですが、おそらくSLTweetsがアクセスするTwitter用プロキシサーバにID/PWを記録しているのではないかと思いますので、そのあたり気にされる方は使わない方が良いと思いますよ。

スクリプトがno-modなので内容は推測するしか内のですが、このHUDの場合一度ログアウトしたり取り外したりしても設定が保存されています。リログイン後や再送着後も設定を保持するためにはノートカードなりスクリプト内なりに情報を記録しておく必要があるのですが、現在のLSLではそのような記録はできなかったと思います。ということは、サーバに情報を送って、サーバ側で記録しておくしかないなぁと・・・

う〜ん、いよいよ自作しかなくなってきたのか・・・
いや、実は全然制作進んでないんですけどね orz

少なくとも受信に関してはLSLのみでは無理ということは分かってまして、やはり間にプロキシをかまさないと無理みたいです。PHPかRubyでも触ろうかなぁ・・・

送り主不明のプレゼント!

う〜ん、ログインしていないときに、いきなりオブジェクトを送りつけられました。
in-worldして受信メッセージ見ると送り主不明・・・あやしぃ。。。

しかも、送ってきた場所がSandbox・・・危険!きけん!!キケン!!!

というわけで、ネタ的にはちょっとだけRezとかWareしてみようかなと考えなくもないのですが、自分は恐がりなので何もせずに削除と。

ちなみに、オブジェクトの名前は「b.places HUD」
ちょっとググってみるとBrussels Airlineというサイトが見つかりました。
名前からするとここで配っているHUDのようです。

が、送られてきたオブジェクトの説明にはなぜかbluepill GROUPのサイトへのリンクが。
bluepill GROUPはSecondLife内のビジネスコンサルティングをしている会社のようです。

う〜ん、わけわからん。

まっ、送り主不明なので考えるだけ時間の無駄ということで。

2007年8月17日金曜日

MacのテキストエディタでLSLを編集

実は、しばらく前にMacBookのHDDがお逝きになりました。
時間を見つけてはぼちぼちと必要なアプリのインストールや設定をしてきたのですが、テキストエディタにLSL用の色設定モジュールを入れてない事を思い出したので、ついでにメモっておきます。
ということで、今回はMacのお話のみ。
Windowsの方ごめんなさい・・・
ちなみに、使用しているテキストエディタはTextWrangler2です。

まず、設定ファイルですが、TextWrangler用は以下のサイトにおいてあります。
もちろんBBEditでも使えますよ。

LSL Language Module for TextWrangler and BBEdit

このページから「lsl.plist」を落とします。
ページにはインストール方法の説明も書いてますので、途中まで参考にします。
インストールといっても指定のフォルダに落とした設定ファイルを入れるだけです。

[ユーザのホーム]/ライブラリ/Application Support/TextWramgler/ に「Language Modules」というフォルダを作ります。すでにある場合は、作らなくていいでいいですよ。
Application Supportの中にTextWranglerフォルダがない場合は、おそらくTextWranglerをインストールしてから一度も起動したことがないのだと思います。アプリケーションフォルダからTextWranglerを探して起動すれば、自動的に作られます。
「Language Modules」フォルダを作ったらその中に、先ほど落としたlsl.plistをコピー(もしくは移動)します。

と、サイトの説明ではここまでですが、このままではまだTextWranglerが設定ファイルを認識してくれないので、もう一手間。
「lsl.plist」を「lsl.bblm」というファイル名に変更します。
実はここに気づくまでかなり迷走しました。
おそらくlsl.plistが作られたころのTextWranglerはそのままでよかったんでしょうね・・・
ファイル名を変更したら作業は終了です。
TextWranglerを立ち上げて、設定が有効になっているか確認します。
ファイル名を変更前にTextWranglerを立ち上げていた人は、一度終了して起動し直してください。

TextWranglerが起動したら、Preferencesウィンドウを開きます。
正しくインストールできていれば「Languages」の項目で、「Installed languages:」のリストに「Linden Scripting Language」があり、「Suffix mappings:」には「.lsl」に「Linden Scripting Language」が割り当てられているはずです。



LSLスクリプトを扱う場合は「.lsl」を拡張子につけてやればOKです。

2007年8月16日木曜日

SL Exchangeを使ってみる #2

前回SL Exchangeに登録するまででした。
無事登録できましたので、今回は入金から買い物までです。

SL Exchangeを使って買い物をするためには、次の2ステップを行います。
  1. まずSL Exchangeにお金を預ける
  2. 商品を選んで購入する。
1.の「SL Exchangeにお金を預ける」ですが、ここで言うお金とはもちろんL$のことです。
したがって、お金を預けるにはin-worldでSL Exchangeのターミナルから操作します。
SL Exchangeのターミナルを右クリックします。

パイメニューの「支払い」をクリック。



メニューが開くのでいくら入金するかを指定します。
1L$、5L$、10L$、20L$のボタンを押すか、左下のフォームに金額を入力して「支払い」をクリック。
これで1.は終了。



念のためWebブラウザでSL Exchangeにログインして、正しくお金が預けられているかを確認してみましょう。
ログインすると左側に表示される「My SLX」の「SLL Barance」が預けたお金の総額になります。
私の場合は元々預けていたお金が0L$でしたので、支払いで入力した101L$がそのまま総額になっています。



ちなみに、「支払い」といっても、SL Exchange用の財布にお金を入れるイメージですので、後で引き出すことも可能です。
引き出し方の説明はまた後ほど・・・

財布にお金が入ったので、早速買い物です!

今回は「SLtweets」というTwitter用クライアントHUDを買うつもりでしたので、SL Exchangeのホームから検索を使って商品を探しました。



買いたい商品が見つかったら、詳細ページを開いて、「Buy now」をクリックしましょう。
クリックする前に金額をよく確かめてくださいね。



なお、クリックするとすぐに商品が転送されます。
in-world上のキャラクター宛に届きますので、Second Lifeにはログインしておいてください。
Second Lifeのウィンドウを最小化していたり、Away状態だったりすると転送エラーになります。

商品の購入と転送が成功すると、こんな画面が表示されます。



それではちゃんと商品が届いたか、in-worldで確認してみましょう。
Second Lifeの画面を見ると、SL Exchangeがオブジェクトを送ってきたというダイアログが表示されていますので、「維持」をクリック。



持ち物を確認すると、無事届いています。



今回は商品の購入までなので、ここまで。
SL Exchangeからお金を引き出したりするのはまた後日説明します。