PR

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

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のWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

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