セカンドライフのメイングリッドのサーバー(SIM)のバージョンアップが今月行われて、1.27になりますが、このバージョンアップにはLSL関連で久々に大きな機能追加が行われています。それが「HTTP-IN」と呼ばれている機能です。
HTTP-INは何か?というのを端的に説明すると、「これまでのXML-RPCをHTTPでできるようにした」ものです。
具体的には、以下のようなことができるようになります。
- プリムに割り当てられたURLを使用してアクセスする
- Second Life内部ではLSLのllHTTPRequestを使用してアクセス可能
- Second Life外部からも同様にアクセス可能
- URLにアクセスがあると、スクリプトに「http_request」イベントが発生します。
- このイベント内で何らかのスクリプト処理を行って、レスポンスとして返すことができます。
- 例えば、イベントが発生した時点でセンサーを起動して、その時点で周囲にいるアバター名の一覧をレスポンスとして返すことなどもできます。
HTTP-INで割り当てられるURLは、例えば以下のようなものです。
このURLの「sim3893」という部分は、リージョンのホストに対応しています。つまり、SIMが変わればURLも変わります。
実際には、URLのハンドリングがちょっと難しいので、そこを理解しておかないと利用するのが難しそうです。以下に、URLが無効になってしまう例を挙げます。
- スクリプトがリセットされた時
- スクリプトを書き換えて保存した場合も同様です
- state_entryイベントで処理します。
- スクリプトの入ったプリム/オブジェクトをtakeした時
- takeした瞬間に無効になります。再度rezしてもダメです。
- on_rezイベントで処理します。
- リージョンが再起動した場合
- changedイベントのCHANGED_REGION_STARTイベントが発生します。
- アバターが身につけているオブジェクトの場合、テレポートしたりSIMを超えた場合
- changedイベントのCHANGED_REGIONまたはCHANGED_TELEPORTイベントが発生します。
このように、URLが頻繁に変わってしまいます。
以下、HTTP-IN関連で追加された関数・イベント・定数の一覧です。
現在はまだNew Script SIMはバージョンアップされていないようなので、今日のスクリプターの会ではどこかバージョンアップされているSIMに移動して、HTTP-INをアレコレ試してみたいですね。
関連リンク: