|
多人数
P2P ネットワークを利用した新たなネットワークゲームの基礎となる部分,つまり互いの
P2P を利用してマップ間を接続し,ネットワークゲームプレイヤがお互いのマップ上を行き来できるシステムを開発した.これによって,多く人が偶然ネットワーク上で遭遇する可能性を含みながら,まったくサーバを必要としないというネットワークゲームの基礎ができた.また,その上に簡単な実際のゲームを開発した.
今までも
P2PMMORPG というような名前で多人数参加型の
MMORPG を開発するプロジェクトはいくつか存在した.しかしそれらはサーバ・クライアント型で実現されていたシステムを,ネットワークの部分のみを
P2P だけで実現しようとしているものであったり,サーバと
P2P のシステムを併用して
MMORPG の運営コストを下げるものであった.いずれも,本質的なシステム構成は従来のままでしかなく,
P2P 特有のゲームシステムを考案して実現するというプロジェクトはなかった.
本プロジェクトは,
P2P のシステムを利用して,これまでとは違ったゲームシステムの設計と実装を行なうことを目的とした.
開発した
P2P ゲームの基本コンセプトは以下の通りである.
ゲームに参加するプレイヤは全員ノード
( プレイヤの
PC) 上に自分のつくったマップを持つ
( 図
1) .このマップは所有者が自由に編集できる庭のようなもので,「ヤード」と呼ぶ.このヤードを他のノードとネットワーク越しに接続する仕組みを開発した.これにより,プレイヤがお互いのヤード間を行き来することが可能になる
( 図
2) .これが複雑な
P2P ネットワークを形成するようになると,ヤードを移動するプレイヤは,あたかも
P2P ネットワークの上を歩いているような状態になる.

朝倉 図
1 ユーザのマップがワープポイント
( 白い四角
) でつながる

朝倉 図
2 多数のユーザのマップがつながった状態
多数のノードが接続された状態では,プレイヤが他のプレイヤと遭遇する可能性が高くなり,ネットワークゲームが成立する.これはサーバ・クライアント型の多人数参加型ゲームの特徴である「未知のノードと出会う」という要素をそのまま残してゲームが構築できるということである.これを「ヤードリンクシステム」と呼ぶ.ヤードリンクシステムの実装は,自分のヤードを管理するサーバ
( ヤードサーバ
) ,そのヤードサーバに参加するクライアントなどの実装からなる.さらにプレイヤの動きを伝えるメッセージを送受信するプロトコルを設計・実装した.これによって自分の動きをサーバに伝えて反映させることが可能となった.
なお,ノードが他のノードに接続するまで自分自身の
IP が判らないという問題点があったので,プレイヤが全員
DDNS などによってあらかじめ自分の
IP を設定して,ヤードリンクを生成する際もそのドメインによって接続できるように実装した.
ヤードリンクの中の参加ノードがオフラインになったとき,そのままではプレイヤが
その先のヤードに到達できない.そのため,一度到達したヤードをキャッシュしておき,そこを経由してその先のオンラインノードに到達できるようにした
( 図
3) .

朝倉 図
3 真中のノードがオフラインになっていても,
B から
A に行ける
上のように開発したヤードリンクシステム上で,簡単な駆け引きが存在するようなゲームを設計し,実験版を実装した.実験版ゲームでは,一つのノードに複数のプレイヤがいても同期をまったく取らずにプレイヤのコマンドを送信して,各クライアントが独自にそれを実行するというようなスタイルをとっている.こうしたのは,フレーム毎の同期を取ろうとするとノード間のレスポンス速度がネックになってフレーム落ちが起きたからである.同期の実装は開発期間内では困難だったため,実験版ゲームではノード間のステータスの同一性が重要にならないようにした.
各ヤードのタイルに草地や岩場などのステータスを持たせ,プレイヤがそれを自由に編集できる機能を実装した.さらにヤード上でのチャット機能を実装し,ヤード上に存在するプレイヤ同士で会話ができるようにした.
試験版ゲームを実際に数人で試行し,問題なく動作することを確認した.
ノード間で厳密な同期をとっていないため,ノードによって表示されているものが違うという問題点もあるが,それ自体が逆にゲームとして面白いものにする側面もあることを発見した.
試験版ゲームでは,プレイヤが自分のヤード上で自分の資源を消費して戦闘ユニットを生成する.それをストックしながら他のプレイヤのヤード上に進入して,ストックしておいた戦闘ユニットを展開して戦うという,一種のストラテジーゲームである.
ただし,他のマップへ進入することによりすぐ戦闘が始まると,強いプレイヤが急にやってきて弱いプレイヤと戦うという状態が起き,ゲームバランスが悪くなる.そこで,「戦闘状態」というステータスを設けた.これはプレイヤが任意に設定でき,戦闘状態が
ON 同士のプレイヤ間でしか戦いが起こらないようにした
( 図
4) .
また戦闘状態にチームカラーという条件を設けることでチーム戦を可能にした.同じチームカラーに設定されたプレイヤ同士では戦闘状態であっても戦いが成立せず,一時的な同盟関係が成立する.これらにより,多人数特有の流動的なチーム戦が展開できるようになった.

朝倉 図
4 色による同盟と敵対関係
このシステムではゲームで使う資源をマップから採掘するという形態は取りずらい.そのため
P2P 特有のシステムによって供給するようにした.たとえば,ヤードリンクが成立している間はボーナスとして資源を供給したり,戦闘状態のまま他のノードにワープしたりというリスクを負った時に資源を発生させるなど.これによって,資源の供給を得る行動が,同時に
P2P ネットワークの活性化に繋がることを可能にしている.

|