卒論進捗発表(1)

卒論 preview
12/14 全体ミーティング
米澤研究室卒論生
山崎孝裕
テーマ
 Massively Multiplayer Online Game
(MMOG)をP2P上に実装する
内容
 MMOGとは?
 P2P技術を使ったMMOGの提案
 実装の方針
 今後の予定
MMOGとは?
 オンラインゲーム


MOG
MMOG
 アプリケーションモデル
 一般的な分散システムとの差異
 従来のネットワークモデル
 MMOGの現状
オンラインゲーム
 ネットワークで繋がれたコンピュータ上に仮
想世界を構築
 複数のプレイヤーが仮想世界上で相互作
用
 計算ノードが人間(クライアント)である分散
シミュレーションとして見られる
 規模による分類:MOGとMMOG
MOG
 Multiplayer Online Game



数人~十数人のプレイヤー
プレイヤーのあるノードがサーバになり、そこに
ほかのノードが接続する形が一般的
プレイヤーのマッチング用に中央サーバを置く
こともある
MMOG
 Massively Multiplayer Online Game




数十人~数千人以上のプレイヤー
全プレイヤーがひとつの世界を共有
ゲームステートを管理する特別なサーバ(ゲー
ムサーバ)が存在する形が一般的
ゲームサーバへ接続するためのサーバが存在
アプリケーションモデル(1)
 仮想世界中にオブジェクトが存在
 オブジェクト同士が相互作用

Player Character(PC)


Non-player Character(NPC)


プレイヤーがクライアントを通して行動を決定
コンピュータが行動を決定
その他
アプリケーションモデル(2)
 エリアの概念


広大な仮想世界を分割
基本的には実装上の都合
相互作用の複雑度の低下
 Interest Management

一般的な分散システムとの差異
 ノードの物理的位置が固定

クライアントノードの位置は固定
 リアルタイム性の重視

逆に正確性はゲームの性質次第では緩めるこ
とができる
従来のネットワークモデル(1)
 クライアントサーバモデルが主流
 サーバ



運営側が全サーバを管理
仮想空間の状態を一括して計算・管理
非常に大きな計算能力と回線帯域が必要
→Scalabilityに問題
従来のネットワークモデル(2)
 クライアント


ゲーム空間の周囲の情報をサーバから得る
サーバにPCの行動を送信
例:FINAL FANTASY XI のネットワーク構成
P2Pを利用したMMOG
 サーバの機能をPeerに分散

ゲーム空間の管理をPeerに任せる




通常はエリアごとなど
高いScalability
運営側の必要なリソースが小さい
→コスト面で大きなメリット
Peerは信頼できない
→故障耐性・セキュリティがより重要
実装の方針
 Phoenixを使った実装
 実装の詳細
Phoenixを使った実装(1)
 オーバレイネットワークにPhoenixを使用



仮想ノードによる抽象化
ノードの動的参加/脱退が容易
故障検知機能
Phoenixを使った実装(2)
 複数のPhoenixオーバレイを作成することで
システムのScalabilityをあげる



ノード管理オーバレイ
全エリア管理オーバレイ
エリア管理オーバレイ
実装の詳細
 中央で管理するサーバ


認証・データサーバ
エリアマスターサーバ
 Peer上のノード



エリアサーバ
エリアレプリカ
クライアント
認証・データサーバ
 ノード管理オーバレイを管理
 クライアント情報とPCのデータベースを保持
 クライアントにPCデータと所属エリアを提示
(マッチング)
 長期的なPersistency確保
 ユーザ数に対するScalabilityはない
エリアマスターサーバ
 全エリア管理オーバレイを管理
 エリアサーバの管理



全エリアサーバのメタ情報を保持
エリアサーバ移行時の調停
エリアオーバレイへのエントリポイントを提示
 ユーザ・エリア数に対するScalabilityはない

エリアマスターの分散も考えられるが今回は考
えない
エリアサーバ・レプリカサーバ
 エリアオーバレイを管理
 対応するエリアの管理



エリア状態の保持
エリア状態の計算
クライアントとの通信
 脱退時・故障時の移行処理
クライアント
 各エリア管理オーバレイに接続
 PCに対応する仮想ノード番号をassume
 システムと物理的なプレイヤーとの橋渡し
 エリアサーバやレプリカと物理ノードを共有
することもあるが、別プロセスで処理
今後の予定
 故障を考慮に入れないプロトタイプを作成
 エリアサーバ故障時のプロトコルの考案
→これをメインテーマにする予定
参考文献
 [1] B. Knutsson, H. Lu, W. Xu, B. Hopkins. Peerto-Peer Support for Massively Multiplayer Games
 [2] K. Taura, T. Endo, K. Kaneda, A. Yonezawa.
Phoenix: a Parallel Programming Model for
Accommodating Dynamically Joining/Leaving
Resources