ネットワーク×ゲーム×プログラミング―オンラインゲーム開発のキーワード15

オンラインゲームは、ネットワークを介して楽しめるゲームです。最近の携帯ゲーム端末のローカル通信をはじめ、さまざまなネットワークがその対象となりますが、インターネット経由のものが大きな割合を占めていて、とくに複数ユーザがネットワーク越しにつながるからこそ遊びの幅がぐっと広がるマルチプレイヤーゲームがその醍醐味と言えます。

さてはて、広大なインターネット経由で、どうしたら、多数のユーザに向けてゲームならではの高い反応速度を維持しながらリッチなコンテンツを届けられるのか... そんな疑問が沸き上がるかもしれません。そもそもソフトウェア開発において、ゲーム開発は極めて専門性の高い分野の一つとされていますが、オンラインゲーム開発ではネットワークという地理的、時間的に大きな隔たりがあるプレイヤー間でのゲームプレイを実現することになり、一段と幅広い知識が求められます。

ここではオンラインゲーム開発を横断的にイメージできるよう、オンラインゲームの基本技術となるゲーム分野、ネットワーク分野、プログラミング/システム分野から超基本となる選りすぐりのキーワードを15個ピックアップしてみました。

MMORPG(Massively Multiplayer Online Role Playing Game)
RPG(ゲーム設定に応じて、プレイヤーがキャラクターの役割を演じるゲーム)のなかでも、大規模なユーザを抱えるマルチプレイヤー参加型のオンラインゲームを指す。全世界で過去5年以上にわたりシェアトップを走り続けるBlizzard Entertainment社の『World of Warcraft』は登録ユーザ数は1200万に上るという。
ARPG(Action Role Playing Game)
RPGのうち、アクション性のあるリアルタイムゲームまたはアドベンチャーゲームの特徴を持つゲームを指す。
ゲームクライアント(Game Client)
プレイヤーが所有しているPCやゲーム機などのマシンで、プレイヤーにより起動されゲームの描画や入出力の処理を行うソフトウェア。たとえば、高性能な描画や入出力が必要なARPGや3D表示を行うMMORPGなどのオンラインゲームでは、専用のゲームクライアントが開発される。ゲーム端末ソフトウェア、単に端末ソフトウェアとも呼ばれる。
16ミリ秒/フレームレート(Frame Rate)
ビデオゲームでラスタ表示のディスプレイとして一般用テレビを用いる場合、典型的には秒間60回、画面を更新する。この画面更新時間がフレームレートで、1秒の60分の1で16ミリ秒(0.0167秒=16.7ミリ秒)である。プレイヤーにとって、ゲームの状態変化を認識できる最も短い時間間隔とされる。
永続性(Persistent)
ゲームデータでは、永続性はゲームプレイに必要な時間の長さ、ゲーム進行に必要な時間の長さがどのくらい継続するかを示す。レーシングゲームなどでは数分単位で使い捨てにするデータが中心で、永続性が低くデータの蓄積性も低いが、MMORPGなどコツコツ続けるゲームは永続性がありゲームデータの蓄積性が高い。永続性によって、データをどのような形式で、どの物理メディアに保存し、どう利用するかなど、違いが出る。
イベント駆動(Event Driven)
イベントが起きたタイミングで処理を行うというプログラミングの方式。イベントの種類としては、たとえば「データが届いたら」⁠マウスが動いたら」などがある。ネットワークプログラミング、ゲームプログラミングではイベント駆動のプログラミングを多用する。
CPUサイクル(CPU Cycle)
CPUが動作する最小の単位。1GHzのCPUでは1秒間に10億サイクルあり、1サイクルで実行できる命令なら、1秒間に10億回実行できる。命令の種類によって、実行に必要なサイクル数は1未満から数百までと大幅に異なる。ゲームではCPUサイクルを極限まで節約して限られたリソースを使い、大量のオブジェクトを動かし続ける必要がある。
オンメモリ(on Memory)
CPUクロックが数サイクル、つまり数ナノ秒~数百ナノ秒の間に情報を取得できる距離に配置されているメモリにデータが載っている状態。
I/O(Input/Output)
入出力。ネットワークI/O、ディスクI/Oなど。サーバプログラムではI/OのほとんどがネットワークI/Oである。
同時接続数(Number of Simultaneous Connections)
サービスに、同時に接続可能なユーザ数。ゲームの企画段階では最大値としての同時接続数を想定して使用されることが多い。一方、運用中はおもに接続数のスナップショットを指す。ネットワーク接続関係(通信路)としてのコネクション数とは区別される。
レイテンシ(Latency)
処理の所要時間。たとえば、プレイヤーがキーを押してから操作が画面に反映されるまで1秒もかかってしまうゲームはレイテンシが非常に悪いと言える。さまざまな場面で使用される用語で、CPUアクセスのレイテンシはナノ秒、メモリアクセスは数十~数百ナノ秒、SSDアクセスは数百マイクロ秒、ハードディスクアクセスは数十ミリ秒、ネットワーク遅延はミリ秒秒単位。
補助的システム(Additional System)
ゲーム本体に対し、ゲーム内容とは別の補助機能を提供するシステム部分。プレイヤーマッチング、プレイ実績管理(スコア管理⁠⁠、ランキング、コミュニケーション機能などを実装する。多くの場合、サードパーティのパッケージやサービスが利用可能。
ミドルウェア(Middleware)
アプリケーションで使用する汎用的な機能を集約し、機能特化したパッケージソフトウェア。通信など柔軟性や性能が要求されるといった処理をパッケージ化することで個別では面倒になりがちな処理を隠蔽し、APIを叩くだけで高度な機能を利用できる。
スケーラブル(Scalable)
システムの性能の拡張が可能なこと。オンラインゲームではプレイヤーの増減に応じて、容易に性能や機能を拡張であることが望ましい。
クラウド(Cloud)
クラウドコンピューティング(Cloud Computing)における、おもにサーバ側のコンピュータ網を指す。単なるサーバマシンのホスティングサービスに加えて、ストレージや負荷分散、課金システム、ログ解析など、サーバ構築に必要なあらゆるコンピュータ関連リソースを、必要時応じて柔軟かつ即座に調達することが可能。極めて便利だが、重要な機密情報や個人情報をクラウド運営会社に渡す必要がある。
『オンラインゲームを支える技術 壮大なプレイ空間の舞台裏』⁠中嶋 謙互著)前付けより一部引用。

キーワードの幅が広く、一つ一つが難しく見えますが... これらが作用し合って「システム」となり、オンラインゲームが形作られている、そんな様子がなんとなくでもイメージできたでしょうか。