Document

卒論進捗発表(3)
11/11
31031 山崎孝裕
今日の内容
 進捗状況
 実装の詳細
 今後の予定
2
進捗状況
 この2週間でやったこと

Phoenixの詳細
ソース読み
 C++用ラッパー作り



C/C++の再勉強
相変わらず、問題点の洗い出しと取捨選択
→実装自体は何も進んでない…
3
実装の詳細
 Phoenixとの対応
 作るべきもの
 アプリケーションの流れ
4
Phoenixとの対応
 次のものに一つの仮想ノード番号を割り当てる





中央サーバ
各エリア:エリアサーバ
エリアサーバレプリカ
各PC(Player Character)→これは微妙
クライアント
 これらの仮想ノード番号は各ノードが知っている
5
作るべきもの
 中央サーバ


認証・データサーバ
エリアマスターサーバ
 Peer



エリアサーバ
エリアレプリカサーバ
クライアント
→これらそれぞれに仮想ノードを割り当てる
6
認証・データサーバ





固定の仮想ノード番号を常時assume
クライアント情報とPCのデータベース
クライアントにPCデータと所属エリアを提示(マッチング)
長期的なPersistency確保
ユーザ数に対するScalabilityはない
長期的Persistencyは今回は必須要素ではない
→今回はエリアサーバとのマッチングのみ、になるかも
→最悪なくなるかも
7
エリアマスターサーバ
 固定の仮想ノード番号を常時assume
 エリアサーバの管理

全エリアサーバのメタ情報を保持



各エリアサーバとレプリカのリソースID(物理ノードが一意に持
つ識別子)
エリアサーバ移行時の調停
サーバの存在しないエリアの仮想ノード番号を保持
 ユーザ数・エリア数に対するScalabilityはない

エリアマスターの分散も考えられるが今回は考えない
8
エリアサーバ・レプリカサーバ
 エリアに対応する仮想ノード番号をassume
 対応するエリアの管理



エリア状態の保持
エリア状態のシミュレート
クライアントとの通信
 脱退時・故障時の移行処理
 所属するPCの仮想ノード番号を持つ→微妙?
9
クライアント
 PCに対応する仮想ノード番号をassume
 システムと物理的なプレイヤーとの橋渡し
 エリアサーバやそのレプリカと物理ノードを
共有することもあるが、別プロセスで処理
10
アプリケーションの流れ
 システム全体の流れ
 エリア作成の流れ
 クライアントの流れ
11
システム全体の流れ
1. 中央サーバの起動
•
最初はエリアサーバの無い状態
2. エリアサーバの起動
•
クライアントが起動時にエリアサーバに任命さ
れたら、別プロセスでエリアサーバを起動
3. クライアントが接続
12
エリア作成の流れ
1. 最初、エリアサーバが無いエリアの仮想ノード番
号はエリアマスターがassume
2. クライアントからエリア接続要求を受け取ったエリ
アマスターは、クライアントをエリアサーバに任命
3. クライアントが別プロセスでエリアサーバを立てる
1.
2.
エリア初期化処理
エリアの仮想ノード番号をassume
13
クライアントの流れ
1. ログイン処理
1.
2.
3.
認証・データサーバに問い合わせ、所属エリアの仮想
ノード番号を得る
得られた仮想ノードのエリア接続要求を送る
エリアサーバとの接続を確立
2. シミュレート
1.
2.
エリアサーバからのデータを受信
行動を決定し送信
3. ログアウト処理
14
おまけ: NPCについて
 前回、「NPCはPCより簡単」と言った
 ある意味ではそう


特定の物理的な位置を要求しない
若干の論理的矛盾があっても文句を言わない
 でも、


PCと違ってリソースを提供しない
エリアサーバが無かったら、誰が管理?
→今回はこの場合のPersistencyは放棄でもいいか…
15
今後の予定(実装)
 優先度の高いもの



マスターエリアサーバの作成
エリアサーバ・レプリカの作成
クライアントの作成
 優先度の低いもの

認証サーバの作成
 接続処理部分をまず作る
 レプリカ処理(メイン)を作る
 シミュレート部分を追加
16
今後の予定(考えること)
 エリアサーバの移行処理


正常終了時
異常終了時

リカバリー手法のサーベイもしないと…
 クライアントの異常終了処理
 同期処理
17