別の仮想世界にアバターを転送する!
仮想世界サービスの仕組み
前回まで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で認証完了後、アバターがリージョンサーバーで初期化される処理について説明します。