卒論進捗発表(2) 10/29 31031 山崎孝裕 今日の内容 ゲームデザイン Phoenixモデル ネットワークモデル 今後の予定 ゲームデザイン 全体像 オブジェクトの性質 具体デザイン 全体像 エリア型MMOG エリアの大きさと数は固定 今回はInterest Managementは考えない エリア間移動(zoning)以外のエリア間の相互作用は考 えない Phoenix上に構築 データの性質によっては生TCP/UDPで送ることも検討 ゲームデザインはSimMud[1]を参考 オブジェクトの性質 オブジェクトの分類法 状態の変化の有無 能動行動の有無 自分と周囲のオブジェクトの状態を入力とする能動 行動 能動行動の主体 人(クライアント) コンピュータ 状態変化の有無 状態変化のないオブジェクト 状態を管理する必要が無い →クライアントに静的に持たせられる ex. 地形など 状態変化のあるオブジェクト 誰かが状態を管理し、Consistency/Persistency を保つ必要 能動行動の有無 能動行動をしないオブジェクト 周りのオブジェクトの状態を知る必要が無い 自らのステートさえ持っていればよい ex. 食料・扉など 能動行動をするオブジェクト 能動行動のために、周りのオブジェクトの状態 を知る必要がある 能動行動の主体(1) コンピュータ 入力に対して能動行動を決定する ノンプレイヤーキャラクタ(NPC) 能動行動の主体(2) 人(クライアント) 周りの状態をクライアントが人に提示 人がそれに対する行動を決定 プレイヤーキャラクタ(PC) オブジェクトの行動を計算する物理ノードが特 定されている →他の分散/並列システムとの最大の違い 具体デザイン(1) ゲーム世界をN×Nのエリアに分割 エリア 正方形の格子状空間 各エリアは互いに独立した空間 固定的なInterest Management エリア端にPCがくると、隣のエリアへ移動 具体デザイン(2) オブジェクト 地形 食料 状態を持たない 主体行動をしない 位置を状態として持つ PC/NPC 位置とエネルギーを状態として持つ 自ら移動し、他のオブジェクトと相互作用をする 具体デザイン(3) 相互作用 PC/NPC ↔ 食料 PC/NPCが食料を食べる 食料は消滅 PC/NPCのエネルギーが増加 PC/NPC ↔ PC/NPC 互いが戦う 双方のエネルギーが減少 Phoenix[2] メッセージパシングのモデル/API ノードの動的な参加/脱退 仮想ノード空間による抽象化 故障感知機構も実装[3] タイムアウトによる Phoenixモデル 仮想ノード名 [0, L)の整数 メッセージの送り先を指定 仮想ノードと物理ノード(プロセス)を対応 仮想ノードの数は物理的なノードより大きい 物理ノードへのルーティングを自動化 Phoenix API メッセージの送受信 ph_send(vp, msg) ph_recv(tag) 仮想ノードの割り当て ph_assume(vps): 仮想ノードの取得 ph_release(vps): 仮想ノードの開放 故障検知 ph_get_broken_vps(vps) ネットワークモデル 仮想空間のマッピング エリアサーバの多重化 通信データ 重複エリアモデル 仮想空間のマッピング エリア単位の管理 1エリア:1仮想ノード:1物理ノード→エリアサーバ そのエリアに属するオブジェクトをすべて管理 オブジェクトデータの管理 オブジェクトの生成 NPCの行動決定 PCの操作ノードとの通信 隣エリアとの通信 etc… エリアサーバの多重化 エリアサーバにレプリカを作成 レプリカも1仮想ノード エリアサーバ故障時は ひとつのレプリカがエリアサーバとなる 新たなレプリカを作成する 効率的で信頼性のあるレプリカ作成が必要 通信データ PCクライアントとエリアサーバとの通信 レイテンシが重要 信頼性の必要なデータ PCのエリア移動の際のエリアサーバ間通信 エリア間の唯一の相互作用 PCクライアント間の通信 信頼性の低くてもよいデータ ex. 移動データ etc… 重複エリアモデル 1つのエリアを複数のノードがオーバラップ して管理 エリア境界をまたがって管理するノードが存在 →擬似ノンエリア型も構築可能 モデル自体が多重化を含む ゲーム空間が単純な2次元ならオーバラップが 簡単だが、そうでないと、オーバラップの仕方が 難しいかも 今後の予定 二つの方針 Fault Toleranceの向上 効率的で信頼性のある多重化 etc… Scalabilityの向上 重複エリアモデル etc… たぶん今回両方やるのは無理 どっちに力を入れるか悩み中 次回は実装の進捗報告をできるように・・・ 参考文献 [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 [3] 堀田勇樹, 田浦健次郎, 近山隆. Phoenixプログ ラミングモデルにおける故障検知ライブラリ
© Copyright 2024 ExpyDoc