CEDEC 2014の2日目となる2014年9月3日に行われたセッション「天と大地と女神の魔法のマルチプレイ技術」の内容をお届けする。
「天と大地と女神の魔法」は、グリーの新スタジオ「Wright Flyer Studios」が制作したリアルタイムストラテジー。リアルタイムにゲームが進行するなかで兵士などのユニットを使い敵の拠点を破壊する。基本的にユニットはオートで動いていくが、特殊なユニット「ロード」だけ任意のタイミングでスキルを使用することが可能だ。スマートフォンのリアルタイムストラテジーといえば1人でプレイすることが多いと思うが、本作では最大4人でマルチプレイができる。ほかのプレイヤーが配置したユニットがすぐ自分の画面にも反映されるので、連携を取ることも可能だ。
本講演では、クライアントを開発した平岡大輔氏と、リアルタイムゲームサーバーを開発した永井雅人氏がリアルタイムストラテジーでマルチプレイを実現する技術について解説してくれたので、その内容を紹介する。
バトル専用のプラグインでゲームを管理
まずはマルチバトルの技術内容を紹介。本作は、ブリーフィングなどのときはAPIサーバー、バトルやロビー画面のときは独自に実装したリアルタイムサーバーを使ってゲームを管理しているそうだ。マルチプレイバトルでは、4つのクライアントとリアルタイムサーバーで、常に情報がやり取りされているという。
クライアントとリアルタイムサーバーのなかには、ゲームのAIなどを管理するプラグインと呼ばれるバトル専用のプログラムが存在しているそうだ。クライアントでは、ユーザーの入力を経てプラグインで必要な計算をしたあとに、オブジェクト、砲弾、弾などを反映するバッファーを介して画面に出力する形になっているという。サーバーでもクライアントのプラグインと似た操作が行われており、ユーザーから送られてきた入力をプラグインで処理して、バトル結果をデータベースに送っているのだとか。
マルチプラットフォームなので、さまざまなコンパイラでプラグインを作成したが、実装時にバトルを100%でクリアできたのに、98%でクリアしたことになっているといったバグが発生したそうだ。プログラムの実行順序などの間違いによって起こったもので、一度プログラムを分解して整理し直すことで解決したと平岡氏は語った。
リアルタイムマルチバトルを実現する技術を公開
続いて、永井氏がリアルタイムマルチバトルをスマートフォンで実現する方法について解説。リアルタイムバトルを実現するためには、全クライアントのバトルの進行を同期する必要があり、各クライアントのコマンドを同じフレーム数で入力しなくてはならないそうだ。
また、各クライアント同士で同期している最中でもバトルを進行させないと、同期中のデータが過去のものになってしまい、未来が変わってしまうので処理することができなくなってしまうのだとか。
これを解決する方法としてリアルタイムサーバーを中継して各クライアントに行くコマンドを未来に先延ばしするようにしたという。早くコマンドを入力したクライアントの動作は、実行するまでに多少遅延してしまうがそこは許容するシステムにしていると永井氏は語った。
だが、それを実行するには、どのぐらい未来にコマンドを先延ばしするか考える必要があったそうだ。バトルに参加しているクライアントのなかで最悪のレイテンシ(データ転送をしてから結果が返送されるまでの時間)を出すものを想定しなくてはならないとのこと。クライアントがリアルタイムサーバーにデータ転送するまでの遅延というのは決まっており、そこから最悪のレイテンシを出すクライアントにデータが処理されるまでの遅延時間を推定する必要があったという。
そこで、定期的に取っている各クライアントのレイテンシのサンプルから、最悪遅延時間を出しているものと電車などでサンプリングした許容変化量を足して先延ばしの時間を決定したそうだ。ただ、多少誤差がでるので、遅延の許容範囲は長めに設定していると永井氏は語った。
永井氏はリアルタイムマルチバトルで大事なことをいくつか公開した。まずは、開始時刻のずれを可能な限り抑えなくてはならないということ。開始時刻がずれてしまうとそのバトル中は遅延してしまうので、最小限に抑える必要があるそうだ。それを解決するために、各クライアントのレイテンシを確認して、プレイヤーごとに別々の開始時間を設定する必要があるのだとか。レイテンシは、バトル開始前にバトルフィールドのデータをリアルタイムサーバーに送っているときに計算されているのだという。
サーバーとは関係ないが、遅延時間を体感させないための工夫として、ユニット出撃時にほかのクライアントが遅延している場合には半透明の状態で事前に設置する処理をしているそうだ。また、スマートフォンではよく起こるサーバー切断時には復帰ができるように今後のアップデートで実装予定とのことだ。
(C) Wright Flyer Studios, Inc.
※メーカー発表情報を基に掲載しています。掲載画像には、開発中のものが含まれている場合があります。
コメントを投稿する
この記事に関する意見や疑問などコメントを投稿してください。コメントポリシー