2019年9月4日~6日まで、パシフィコ横浜にて開催された日本最大のコンピュータエンターテインメント開発者向けのカンファレンスCEDEC 2019。9月6日には、“『大乱闘スマッシュブラザーズ SPECIAL』~膨大なアセットのビルド時間&容量との戦い”と題されたセッションが行われた。その模様をリポートする。
“質”と“量”どちらも満たすには?
セッションは、『大乱闘スマッシュブラザーズ SPECIAL』(以下、『スマブラSP』)における、膨大なアセットの運用およびビルド時間短縮と、きびしいロム容量への格納をどのように実現したのかを紹介する内容。出席者は、バンダイナムコスタジオのプログラマーである、南相培氏と中村彰宏氏のおふたりだ。
冒頭では南氏が、講演内容の大まかな紹介とともに、その背景となる『スマブラSP』に求められる“質”と“量”について解説した。まず量については、必要なコンテンツをすべてロムに入れなければならなかったこと、そのうえでローディングの快適さも求められたことを挙げ、「これは質にも直結する部分だと考えました」と語った。そこで重要となったのが、最適なテクノロジーの選択だったという。
「限られた時間とリソースで効果を挙げることも大事です。最適な技術の選定と、開発効率の最大化のために、開発初期からマスターアップまで、つねに工夫をし続けなければなりませんでした。本日はその内容を紹介したいと思います」(南氏)。
最新テクノロジーでアセット構築
ここから講演者は、中村氏にバトンタッチ。“質”と“量”を満たしていった手法が具体的に紹介された。中村氏が最初に語ったのは、当初から懸念されていた“アセット規模の増大”と“全コンテンツをひとつのロムに”という点だ。その対応策として、アセットビルドパイプラインの肥大化に備える必要があったという。加えてロム容量の抑制という問題もあり、これらも踏まえて基本方針を決めたとのこと。それは“資産はできるだけ活用”、“問題点は修正”、“開発の高速化”の3点だ。
最初に着手したのは、時間短縮への道だ。まずは開発ミドルウェアを見直して変更、レスポンスを向上させた。またワークはHDDではなくSSD上に構築することを徹底し、ハイスペックのPCを使用することで作業時間を短縮。処理ずみのビルドキャッシュを流用するシステムも組み込み、時間は大幅に短縮されたという。
システム系ソフトとして採用したのは“Ninja”だが、中村氏はその要因として、高速な点や使いやすい点をアピール。開発作業ではファイルを管理する“番人”的な人物を決め、勝手なプログラム変更などを防いだとのこと。誰もが自由になりすぎると、ファイルがぐだぐだしてしまうというわけだ。なお“Ninja”については使いやすくするために多少改造し、それを製造元にフィードバックするかは検討中だという。
ロム容量はどうやって減らせばいい?
全体的なファイル構成がわかったら、つぎはどれだけ容量を減らせるかという作業に入る。もろもろ見積もったうえで、音声系のコーデックには“opus”を採用、データ圧縮ソフトは前作の“Zlip”から“LZ4”、最終的には“Zstandard”となったという。ここでポイントとなるのが圧縮のレベルだが、中村氏はあえてMAXにはせず、ロード時間なども考えてレベル9に決定したそうだ。
容量を減らすつぎの手は、“重複排除”。これは簡単にいうと、重複しているムダなデータを削る処理だ。たとえばマリオなら、8Pみんな目元は同じなので流用できるが、帽子は違うのでべつにする。同じ部分のみを流用することで、ビルドの手間を省くことが可能になるわけだ。ここでは、“積集合”、“和集合”という手法が使われている。なおサイズ変更は、専用のビューワーで視覚的にも簡単に確認可能だ。
重複排除やデータ圧縮などさまざまな効果を活かした結果、ロム収録に必要なデータは、開発初期の約60GBから、約15GBまで縮小することに成功。ソフトももちろん大ヒットとなった。講演を終えて、中村氏は以下のようにファンに向けコメントを語った。
「圧縮技術の使用で、大きなコスト削減につなげることができました。時代とともに、より新しいものが出てくる可能性があるでしょうし、未来の技術にも注目していきたいところです」(中村氏)。