オーバーレイネットワークを用いた
大規模マルチプレイヤーオンライ ンゲーム
インフラストラクチャの構築
NAIST IPlab
飯村 卓司
1
MMOGの今と限界
• ネットワークゲームの発達
– 複数人数参加型オンラインゲーム
• 小規模参加型オンラインゲーム: MOG (~100人程度)
– 友達同士で遊ぶ
• 大規模参加型オンラインゲーム: MMOG (1000~10000人程度)
– 新しい友達と出会う
– 最近注目を集めている比較的新しい形式のゲーム
• 大規模参加型オンラインゲーム(MMOG)
– クライアント・サーバ型が一般的
• 大規模な人数を扱うサーバ
– 高処理能力 (クラスタなど)
– 広帯域幅 (多数のプロバイダとのピア接続など)
• 運用コスト、初期導入コストが高い
• ネットワークプロバイダの持つ知識などが必要
– ゲーム製作のみの知識では難しい
2
目標
• サービスクオリティの維持
– クライアント・サーバインフラストラクチャと同等の規模の実現
• 既存のMMOG(同時接続数10万人)を実現
• 低レーテンシでの通信
– さまざまな種類のゲームをサポート
• Role Playing Game (RPG)
– 膨大なデータ量の管理、維持
• First Person Shooter (FPS)
– 低レーテンシ
• 運用コストの削減
– 参加ユーザの資源を用いたクラスタサーバの機能の実現
– 最小限のサーバ運営のみでのサービス提供
• アカウンティングサーバ,データバックアップ用のストレージサーバの運
用のみ
3
Zone Federation Model (ZFM)
• ZFM
– サーバ機能をP2Pオーバレイに分散
– 伝送速度でクライアント・サーバと同
等の性能
ゲームワールド全体
Zone X
• 基本的な技術
Zone W
X
– サーバ機能をデータの塊(Zone) 単位
に分割
W
• 分割されたzoneごとに小規模のクラ
イアント・サーバを構築
– ZoneをP2Pオーバレイ上に構築
Y
• Distributed Hash Table (DHT) を用
いてZoneのデータを分散
– それぞれのZoneでは、書き換え権限
を持つノードが一つのみ
• データの一貫性を保障
• SIGCOMM併設workshop
NetGames2004にて発表
Zone Z
Z
V
Zone V
Zone Y
4
Zone
• Zoneとは
– 判定とデータ転送のブロック
• ブロックごとにメンバを管理
– Zone owner: サーバ役のノード
– Zone member: クライアント役のノード
– Independent: 対象zoneには興味の無いノード
• Zoneごとに記録されているデータ
– Candidate list
• Zone owner になりうるノードのアドレスリスト
– Member list
• Zone member のアドレスリスト
– データ
• そのZoneにおけるゲーム内データ
5
Zoning (データの分割)
candidate
Game
< ゲーム全体のデータ >
members
MAP A
川の場所
Map
Map A
MAP B
町の場所
プレイヤ X
現在地
プレイヤ Y
現在地
川の場所
町の場所
MAP B
川の場所
MAP A
町の場所
Zone W
candidate
Zoning
members
Map B
candidate
Zone X
川の場所
町の場所
members
プレイヤの現在地
プレイヤ X
プレイヤ Y
Zone Y
ログイン情報
candidate
ログイン
members
Zone Z
6
Mapping
(分割されたデータをP2P上に配置)
< DHT上のゲームデータ >
Key
data contents
zone1
Game “foo” のプレイヤ情報
zone2
Game “foo” の地図情報
zone3
Game “foo” のスコア情報
zone4
Game “bar” のプレイヤ情報
zone5
Game “bar” の地図情報
zone6
Game “bar” の敵情報
Zoneは複数のゲームを
同じDHT networkの上に実現可能
< DHT network にマップされたZone >
Node B
zone 4
Node C
Node D
zone 1
zone 5
Node E
Node G
Node A
none
zone 2
none
Node F
zone 6
Node H
zone 3
7
Zoned Federation (1/2)
• ノードの3状態
– Zone owner: Zoneを管理するserver役
– Zone member: Zoneのデータを得るclient役
– Independent: それ以外のノード
• Zone それぞれに小型の client-server を構築
– Zone ownerは一時期にひとつのみ
• データの書き換え権限を持つノードはZone ownerのみ
• データの一貫性を保障
– Zone ownerの消滅
• Zone member は検知可能
– Zone ownerが必要である可能性が高いのはZone memberである
– 必要なノードがZone owner役を買って出ることができる
8
Zoned Federation (2/2)
step up
join
commit
update
Zone X
member
member
owner
independent
ディスクスペース
を提供
Candidate list
Member list
Zone X
Zone Z
Zone Y
Zone W
DHT network
9
ZFM実装
•
libcookai
– ライブラリとして提供
• C言語にて実装
– 動作確認済みプラットホーム
•
•
•
•
•
•
NetBSD- (1.6, 2.0*)
FreeBSD-4.*/ -5.*
Vine Linux 2.6
Sun OS 5.8
Mac OS X
Game Program
DHT
libcookai
– オンラインゲームに特化させた
Pastry実装
Pastry
• C言語にて実装
• Hash関数としてSHA-1を使用
• X Rally-X
Network
– サンプル実装
10
ダウンロード

ZFM概要(日本語)