【CEDEC 2011】『鉄拳 タッグトーナメント2』におけるメモリ管理と負荷削減 | GameBusiness.jp

【CEDEC 2011】『鉄拳 タッグトーナメント2』におけるメモリ管理と負荷削減

CEDEC初日の6日は、「2体から4体!? 〜鉄拳タッグトーナメント2における描画システムと負荷削減について〜 」と題して、バンダイナムコゲームスの堂前嘉樹氏による『鉄拳 タッグトーナメント2』のプログラムセッションが行われました。

その他 その他
CEDEC初日の6日は、「2体から4体!? 〜鉄拳タッグトーナメント2における描画システムと負荷削減について〜 」と題して、バンダイナムコゲームスの堂前嘉樹氏による『鉄拳 タッグトーナメント2』のプログラムセッションが行われました。
  • CEDEC初日の6日は、「2体から4体!? 〜鉄拳タッグトーナメント2における描画システムと負荷削減について〜 」と題して、バンダイナムコゲームスの堂前嘉樹氏による『鉄拳 タッグトーナメント2』のプログラムセッションが行われました。
  • CEDEC初日の6日は、「2体から4体!? 〜鉄拳タッグトーナメント2における描画システムと負荷削減について〜 」と題して、バンダイナムコゲームスの堂前嘉樹氏による『鉄拳 タッグトーナメント2』のプログラムセッションが行われました。
  • CEDEC初日の6日は、「2体から4体!? 〜鉄拳タッグトーナメント2における描画システムと負荷削減について〜 」と題して、バンダイナムコゲームスの堂前嘉樹氏による『鉄拳 タッグトーナメント2』のプログラムセッションが行われました。
  • CEDEC初日の6日は、「2体から4体!? 〜鉄拳タッグトーナメント2における描画システムと負荷削減について〜 」と題して、バンダイナムコゲームスの堂前嘉樹氏による『鉄拳 タッグトーナメント2』のプログラムセッションが行われました。
  • CEDEC初日の6日は、「2体から4体!? 〜鉄拳タッグトーナメント2における描画システムと負荷削減について〜 」と題して、バンダイナムコゲームスの堂前嘉樹氏による『鉄拳 タッグトーナメント2』のプログラムセッションが行われました。
  • CEDEC初日の6日は、「2体から4体!? 〜鉄拳タッグトーナメント2における描画システムと負荷削減について〜 」と題して、バンダイナムコゲームスの堂前嘉樹氏による『鉄拳 タッグトーナメント2』のプログラムセッションが行われました。
  • CEDEC初日の6日は、「2体から4体!? 〜鉄拳タッグトーナメント2における描画システムと負荷削減について〜 」と題して、バンダイナムコゲームスの堂前嘉樹氏による『鉄拳 タッグトーナメント2』のプログラムセッションが行われました。
  • CEDEC初日の6日は、「2体から4体!? 〜鉄拳タッグトーナメント2における描画システムと負荷削減について〜 」と題して、バンダイナムコゲームスの堂前嘉樹氏による『鉄拳 タッグトーナメント2』のプログラムセッションが行われました。
CEDEC初日の6日は、「2体から4体!? 〜鉄拳タッグトーナメント2における描画システムと負荷削減について〜 」と題して、バンダイナムコゲームスの堂前嘉樹氏による『鉄拳 タッグトーナメント2』のプログラムセッションが行われました。

『鉄拳 タッグトーナメント2』は、今夏アーケードにて稼働予定の新作タイトルです。

堂前氏によると、『鉄拳 タッグトーナメント2』のプロジェクトが開始されたのは、『鉄拳6』のコンシューマ版の開発が終わった2010年の初頭とのこと。開発はプレイステーション3の互換機版であるSYSTEM369を使用。鉄拳プロジェクトのリーダーである原田氏からは“4人表示で処理落ちなし”といった課題が出され「絶対に無理!」となったそうです。

この企画が上がった当初、堂前氏はメモリ周りの容量問題と描画負荷が高いものになるという予測と懸念に悩んだそうです。アーケード版『鉄拳6 BLOODLINE REBELLION』は、SYSTEM357を使用しており、今回の『鉄拳タッグトーナメント2』はその上位互換であるSYSTEM369を使用するものの、メモリについては同容量とのことです。そのため、2人分のメモリを確保することになるということと、格闘ゲームという性質上、処理落ちをさせることなく、描画速度は60fpsを厳守しなければならないということの2つに5カ月以上悩まされたと語っています。

では、その5ヶ月間にどのようなことをやったのか。まず、堂前氏が行ったのは、前作の『鉄拳 タッグトーナメント』を参考にすることにしたそうです。

『鉄拳 タッグトーナメント』は、1999年にアーケードにて稼働、2000年にプレイステーション2で発売された作品です。同作では、カメラアングルなどを巧みに利用することで、表示的な部分では1対1の2キャラクター分の表示のみとなっており、「これなら楽にできる」と思ったところ、プランナーの考えは4体表示が必須。かつ、グラフィックアーティストからもIBL(Image Base Lighting)、SSAO(Screen Space Ambient Occlusion)、ソフトシャドウといった項目が追加されていたそうです。

では、それらの問題を堂前氏がどのように解決していったかという本題になります。

まず、メモリについてですが、『鉄拳6 BLOODLINE REBELLION』では、ローカルメモリであるVRAMはかなり余り気味に運営していたそうです。そのため、画面に描画するためにはVRAMに移す必要があるので、キャラクターのメモリをどんどんVRAMに移していくといったずさんな管理になっていました。結果としてメモリの断片化が発生してしまい、これにより発生した不具合も特定しづらいものが多くなったと語っています。

問題が顕著に発生したものでは、コンティニューの時もその都度キャラクターや背景の再読込みを行っており、このためにローディング時間によるストレスが発生。ユーザーから手厳しい批判を浴びたと語っています。

『鉄拳 タッグトーナメント2』では、このVRAM領域をカテゴリごとにサイズを固定化することで解決を図ったそうです。

具体的にはキャラクターが持つデータは19.5MB×2から19MB×4へ、背景データは45MBから常駐データが5MB、通常が30MBの35MBへと変更。

『鉄拳6 BLOODLINE REBELLION』では、キャラクターの服の色などは色違いのパターンを8種類持つことで行っていましたが、『鉄拳 タッグトーナメント2』では、カラーマスクの追加をはじめ、色情報を設定するという方法を最初に設計したそうです。とはいえ、これでは色変えのためのテクスチャが必要になってしまうので、実機上で色が得済みのデカールテクスチャを作成してしまうという方法に切り替えたそうです。

具体的には、実機上で色変え用の一時的なバッファを作ってそれを生成。生成時にカラーマスクと色情報が不要になるので一時バッファにデカールへ上書き。このやり方を応用するとキャラクターのパンツに柄を入れることも容易になったとのことです。

こうすることで、キャラクターのカスタマイズでは1万5000種類、カラーパターンなどを含めると90万種類のバリエーションを持たせることが可能になったそうです。

ただ、問題として「デカールに書き戻すために再圧縮をかけるため、画像に粗が発生してしまうのをいかに軽減するかが、今後の研究になる」と語っていました。

次に描画負荷についてです。前述の通り、格闘ゲームにおいてのフレームレートの低下(処理落ち)は致命的であり、また格闘ゲームはその表示コマ数やタイミングなどが命であるため、60fps厳守という厳しい課題が待っていました。

こちらはメモリとは違い、解像度を下げることで調整がしやすかったそうです。

まず、対戦時のベースである「2人表示」、サポートとでタッグキャラクターが現れる「3人表示」、タッグ投げなどを行うときに投げ抜けを行うと発生する「4人表示」。これらを状況によって動的に解像度を切り替える処理を行ったそうです。

具体的には2人表示のときは解像度を1024×720に。3人であれば900×720に、4人では800×720へと解像度を変更しているとのことです。この描画面を最終的に1280×720に引き延ばして使用することで1280×720での常時表示としています。

ただ、これでもフレームレートの低下が発生するようであれば、そのほかの解像度への変更も行っているといいます。例外的にステージやキャラクターのカスタマイズ状況によっては安定動作するケースも多く、できる限り高解像度での表示を行っているそうです。

ゲーム上のシチュエーション的な例として挙げられたのが、ラウンド開始時は1280×720で描画、フレームレートが低下しそうであったら1024×720へと変更。特殊なエフェクトやカメラアングルの切り替えなどがあった場合は、瞬間的に最低解像度まで下げ、徐々に上げていくといった手法が取り入れられているとのことです。

また登場演出やランキング画面などでは1280×720で描画されており、処理的に負荷が少ないものについては、可能な限りリッチに表示させているそうです。

描画部分でそのほかに問題となったのが勝利演出の部分です。コンシューマ版での『鉄拳6』では、フレームスキップを搭載していたので、今回もその処理を使えるかと思ったところ、またも原田リーダーから60fpsの絶対条件がでたそうです。

勝利演出では、ゲーム中と異なり負荷が高いからといって上記と同じ処理を施すとく粗が目立つなどといった問題などがでるため、堂前氏は、インターレースの応用を利用した技法を用いたと語られていました。

これはキャラクターの動く箇所をアルファブレンド合成を行い、胴体など動かない部分をライン交互合成に行っていったそうです。これだけでは、粗が出てしまうこともあるので、被写界深度でぼかしてごまかす必要などもあったようです。

また、キャラクターのカスタマイズなどから発生する描画処理の低下などをデバッグを自動で行ったと語られていました。描画処理の低下が発生した箇所では、キャプチャーデータを作成し、ファイル名に分かりやすいようにデバッグのコードを利用。結果のリストをcsvファイルにし、統計を作成した後に発生割合などを計算したとのことです。

これにより堂前氏が、試しにカスタマイズなしで計測した結果、5時間強の測定で354枚の処理の低下が検出されたため、早急にに問題個所の修正を行っていったそうです。ただ、前述のキャプチャ処理があったため、どのような状況下で発生するのかなど、プランナーやアーティスト対して説明しやすかったと語られていました。

このほかにもSDK内にある録画機能を利用したところ、1フレームだけモーションが崩れたり、描画負荷が高いといった状況の把握に有用だったそうですが、今回の負荷計測では使用しなかったいったこぼれ話なども紹介されています。

そのほかにも機能的な部分として、『鉄拳 タッグトーナメント2』では、新しい描画方法にIBL、SSAO、シャドウマップをはじめ、新水面表現、キャラクターの汚れ表現、足影表現などが追加されています。

セッション中の説明では、キャラクターの汚れ表現がフォーカスされており、テクスチャでこの処理を行うには検証とデバッグに時間を取られるだろうということから、キャラクターの頂点ごとに「汚れ度合い」と「ムラ情報」を設定。ステージ中の汚れエリアに入った時に「汚れ度合い」を増加させるといった処理をシェーダ内で乗算させる処理で表現したといった内容が語られていました。

堂前氏はまとめとして、「メモリに関しては使用可能メモリなどに制限をかけたことで、アーティストなど担当者に対して容量を守って作っていただいたのが良かった」といった話のほか、調整がしやすい設計にしたために発生した問題の解決までの糸口の見つけやすさ。「負荷に限らない話ですが、測定結果というのが分かりやすくしたのが重要だった。」といったことから、「問題が発生した画面をキャプチャしたおかげで、プランナーやアーティストと密な連携を取ることができた。なによりチームメンバーに恵まれていた」と語られていました。

なにより、これらの問題にとって一番重要だったのは考えすぎてプレッシャーなどで体を壊さないようにすることのようです。
《鬼頭世浪》

この記事の感想は?

  • いいね
  • 大好き
  • 驚いた
  • つまらない
  • かなしい
【注目の記事】[PR]

関連ニュース

特集

人気ニュースランキングや特集をお届け…メルマガ会員はこちら