UGAIがわかれば仕組みがわかる!
OpenSimのグリッドモード
「第2回:自分の島を創ろう!(http://www.thinkit.co.jp/article/129/2/)」ではOpenSimをグリッドモードで起動して、OSGridに接続しました。スタンドアローンモードでもグリッドモードでも、OpenSim.exeを実行して仮想世界のサービスを開始することができますが、今回はグリッドモードがどのようなサーバーから構成されているのか、またそれらの設定について紹介していきます。
まず、グリッドモードを構成するサーバーは、以下の5つです。()内は各サーバーを起動する実行ファイル名です。
・リージョンサーバー(OpenSim.exe)
・ユーザーサーバー(OpenSim.Grid.UserServer.exe)
・グリッドサーバー(OpenSim.Grid.GridServer.exe)
・アセットサーバー(OpenSim.Grid.AssetServer.exe)
・インベントリサーバー(OpenSim.Grid.InventoryServer.exe)
それぞれのサーバーの役割について説明しましょう。
「リージョン」は仮想世界での島のことを指しますが、「リージョンサーバー」は空、海洋、陸地、建物などの仮想世界要素のデータを保持して、ユーザーのクライアントに送信します。そして、それらを物理シミュレーションすることで、よりリアルな仮想世界を再現します。ユーザーはログインした後、アバターを通してリージョンサーバーとのインタラクションを取ります。
ユーザーサーバーはユーザーアカウントを管理します。具体的には以下の役割があります。
・仮想世界でのオブジェクトの作成者、所有者、島の管理者などのユーザー情報の提供
・ユーザーグループ、友達リストなどのコミュニティ機能
・ユーザーが仮想世界にログインする時のアカウント認証
グリッドサーバーは、リージョンと呼ばれる「島」の座標、IPアドレスなどの情報を保持しています。以下の役割があります。
・リージョンの登録受け付け
・DNSサーバーがWebサーバーのドメイン名からIPアドレスに変換できるように、リージョンの名前あるいは座標からIPアドレスに変換する
アセットサーバーは、仮想世界のデータのストレージサーバーです。テクスチャ、画像、背景音楽、スクリプト、ユーザーの外形、服装など仮想世界中のほとんどのものがアセットとしてこのストレージサーバーに保存されています。各アセットには一意的なUUIDが付いています。
インベントリサーバーは、ユーザーの持ち物を分類してディレクトリ構造で管理します。ユーザーのデフォルトインベントリには「服装」「音楽」「ジェスチャー」「画像」などと言ったフォルダがあって、ユーザーが持ち物を、それぞれの種類に対応するフォルダに入れることができます。
なお、ユーザー持ち物のデータそのものはアセットサーバーで保存されています。インベントリサーバーにはアセットのUUIDだけが入っています。
これらのサーバーは1つのマシンで動かすことも、分散させてそれぞれ独立なマシンで動かすこともできます。ユーザーサーバー、グリッドサーバー、アセットサーバー、インベントリサーバーの頭文字を取り、省略して「UGAI」と呼びます。図1のようにUGAIと複数のリージョンサーバーの共同作業によって巨大な仮想世界を構成できます。
リージョンサーバーの設定
では、リージョンサーバーの設定について説明しましょう。リージョンサーバーの設定ファイルは、binディレクトリにあるOpenSim.iniです。
OpenSim.exeを実行すると、同じディレクトリにあるOpenSim.iniから起動オプションを読み取ります。OpenSim.iniが存在しない場合、OpenSim.exeがデフォルトのオプションをOpenSim.iniに書き込み、起動します。
Subversionからダウンロードしたソースファイルの中に、設定ファイルのサンプルとして、OpenSim.ini.exampleがあります。初めて設定する時はそれをOpenSim.iniにコピーして使用すると簡単です。
ここで、OpenSim.iniに含めることができる形式について説明します。
以下の形式のように「;」ではじめることで、コメント行を挿入できます。空白行は無視されます。
;comment
以下のように区切ることでセクションを指定できます。セクション行は、機能ごとに設定項目をまとめたグループを示します。セクションでの設定は次のセクション行が指定されるまで有効です。
[section]
以下は、設定項目に値を指定する行です。「name」は設定項目の名前で、「value」には設定値を入れてください。「value」には空白や「;」などのメタ文字を入れる場合、「"」で囲んでください。
name=value
続いて、重要な設定項目を紹介します。