今やユーザー数も増え,代表的なインターネット・アプリケーションの一つになったオンライン・ゲーム。中でも人気が高く,オンライン・ゲームの代名詞となっているのが「MMORPG」(massively multiplayer online role playing game)と呼ばれるものだ。今回は,このMMORPGとプロトコルの関係について見ていこう。

 MMORPGとは,ネットワーク上に仮想的なゲーム世界を構築し,数百~数千人以上という大人数のプレイヤがそれぞれ自分のキャラクタを操作するというゲーム。仮想世界の中で,仲間と協力して敵を倒したり,単に日々を暮らして会話を楽しんだりする。

 MMORPGは,クライアント・サーバー型のシステムで実現するのが一般的。クライアントになるのは,それぞれのプレイヤが自分のパソコンにインストールしたゲーム・ソフトである。ゲーム・サーバーはオンライン・ゲームを提供するゲーム事業者が用意する。

 プレイヤはパソコンのマウスやキーボードを使って,ゲーム中のキャラクタを操作する。しかし,MMORPGでは,その操作結果がすぐにパソコンの表示画面に反映されることはない。画面には,ほかのプレイヤが操作するキャラクタの動作も表示しなければならないからだ。

 個々のプレイヤの操作内容は,まずインターネット経由でゲーム事業者のゲーム・サーバーに送られる。ゲーム・サーバーは送られてきた全プレイヤの位置やステータスを管理している。サーバーは,すべてのプレイヤの操作内容からゲームの仮想世界がどう変化するかを計算し,その結果を個々のプレイヤに返信する。プレイヤのゲーム・ソフトはゲーム・サーバーから返信された結果に基づいて,画面を表示する。

 この一連の処理を短時間に終えないと,ゲーム画面のキャラクタの動きがぎこちなくなったり,急に別の場所に飛んだりすることになってしまう。つまり,ネットワーク・アプリケーションとしてオンライン・ゲームを見た場合,もっとも重要なのはリアルタイム性である。しかも,正しくデータを送り届けなければならない。そこで,利用するプロトコルが重要になってくる。

 通常,インターネットではIPの上位層プロトコルとしてTCP(transport control protocol)とUDP(user datagram protocol)が使われている。一般的に見て,TCPは確実なデータ伝送,UDPはリアルタイム性が求められる迅速なデータ伝送に使われるケースが多い。

 エヌ・シー・ジャパンが提供するオンライン・ゲーム「リネージュII」は,確実にデータを送り届けるためにTCPを使ってデータをやりとりしている。ただし,TCPを使うと処理の負荷が大きくなり,送受信に時間がかかってしまう。このため,リネージュIIでは,できるだけパケットのサイズを小さくして,端末やサーバーでの処理時間を短くする工夫を加えた。クライアントからサーバーへのデータは1回40バイト,サーバーからクライアントへの返信データは70バイト程度に抑えている。

 一方,スクウェア・エニックスが提供する「FINAL FANTASY XI」(FF XI)では,データ転送にUDPを使っている。UDPには,比較的処理が軽く遅延時間を抑えやすいという特徴がある。TCPはそもそも処理が重い。さらに,再送処理が起こると遅延が大きくなり,かえってキャラクタの動きがぎくしゃくしてしまうと判断したのである。

 しかし,UDPにはエラーが発生した場合に再送する手順が決められていないので,エラー発生で廃棄されたパケットに対処する機能がアプリケーション側に求められる。そこでFF XIでは,ロスした分のデータをクライアントのゲーム・ソフトが予測して,キャラクタの動きを補うようにしている。

 同じMMORPGでも採用しているプロトコルにはこうした違いがあり,それぞれの欠点をカバーするように工夫されているのである。

高橋 健太郎