別の仮想世界にアバターを転送する!

2008年9月26日(金)
劉 小路

仮想世界サービスの仕組み

 前回まで3回を通して、OpenSimの構成およびグリッドサービスの概要を説明しました。今回はクライアントからOpenSimにアクセスする際のさまざまな処理について見ていきます。さらにこれに基づいて、ユーザーのアバターを仮想世界サービス間で転送する仕組みを紹介します。

 図1はOpenSimのグリッドモードで、クライアントがサーバーにアクセスする時の手順を示しています。以下、この図の手順にしたがって、解説していきましょう。

 1.まずクライアントがユーザーサーバーにアクセスし、認証情報を送信します。認証情報には「名前」「パスワード」「アクセスするリージョン」などがあります。ユーザーサーバーが認証情報を受信すると、送られてきたユーザー名とパスワードで認証処理を行います。

 2.認証に成功すると、ユーザーサーバーは、グリッドサーバーにクライアントが「アクセスするリージョン」の情報を問い合わせます。

 3.グリッドサーバーはリージョンの名前からリージョンサーバーを検索して、ユーザーサーバーにリージョンのサーバーIPアドレス、座標などの情報を返します。

 4.アクセスするリージョンのIP情報を取得したユーザーサーバーは、該当するリージョンサーバーに認証したIDとランダムなキー値を送信します。

 5.次に、ユーザーサーバーはインベントリサーバーにユーザーIDを送信して、ユーザーの持ち物のフォルダ情報を問い合わせします。

 6.インベントリサーバーはユーザーIDの該当するインベントリ情報をユーザーサーバーに返します。

 7.ユーザーサーバーは手順3で取得したリージョン情報、手順4でリージョンサーバーに送信したキー値、手順6で取得したインベントリ情報をクライアントに返します。

 8.クライアントは手順7で受信したキー値をリージョンサーバーのアドレスに送信します。

 9.リージョンサーバーでは、手順4と手順8で受信した2つのキー値が一致する場合、クライアントのアクセスを受理します。受理された後ユーザーのアバターがリージョンサーバー上で初期化され、クライアントとリージョンサーバーのインタラクションが始まります。

 以上のプロセスで、ユーザーアカウントが認証されて、仮想世界にログインできるようになります。

ログイン処理の3つのポイント

 ログイン時の処理について3つのポイントを紹介します。

 1つ目は、状況に応じてTCP通信とUDP通信を使い分けることです。OpenSimの通信では、TCPとUDPをともに使います。ユーザーのログインプロセスの手順1から手順8は高い信頼性を要求されるので、HTTPベースで行います。ログインした後は、手順9を含めて、ユーザーとリージョンサーバーの頻度の高いインタラクションを行うため、UDP通信で行います。

 2つ目は、インベントリ情報の扱いです。手順6の「インベントリ情報」にはユーザーのインベントリのフォルダだけが入っています。ログインした後に、ユーザーからインベントリの中のアイテムを要求された時だけ、リージョンサーバーによって取得されます。

 3つ目は、ファイアウォール設定です。ユーザーが直接アクセスするのはユーザーサーバーとリージョンサーバーだけなので、セキュリティー上の安全を考慮して、グリッドサービスを作る時に、ユーザーサーバーとリージョンサーバーのみを公開し、ほかのグリッドサーバー、インベントリサーバー、アセットサーバーはファイアウォールで保護することをおすすめします。

 続いて、手順9で認証完了後、アバターがリージョンサーバーで初期化される処理について説明します。

3Di株式会社
京都大学情報学科、東京大学大学院を経て、2006年ヤフー株式会社に入社し、Webサービスのバックエンドシステムの開発に従事。現在、シニアエンジニアとして3Di株式会社で3Dサーバアプリケーション製品開発を担当。OpenSimプロジェクトのコントリビューターでもある。http://3di.jp/

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています