Steam高評価ゲーム開発者、Nintendo Switch自力移植の「悪戦苦闘」をやたら細かく解説。“画面ガクガク”からぬるぬる最適化までの長い道のり

Ghostbutterは7月9日、同スタジオが手がけた『Penko Park』をNintendo Switch向けに移植する際の困難をブログで語った。

インディーデベロッパーのGhostbutterは7月9日、同スタジオが手がけた『Penko Park』に関するブログ記事を公開。当初PC版がリリースされていた同作をNintendo Switch向けに移植する際の困難を語った。

『Penko Park』は、廃墟と化したサファリパークを探索するアドベンチャーゲームだ。パーク内には不気味でかわいい不思議な生き物たちがたくさん暮らしている。生き物たちの姿を写真に収めることでガイドブックを作成していくのだ。またグラップリングハンドやペンコボールなど特殊なアイテムを使えば、生き物たちのさまざまな様子を引き出すことも可能。探索を通してサファリパークの歴史や秘密を紐解いていく。

本作は2020年にPC(Steam)向けにリリース。そのシステムや作中の雰囲気から、かつて任天堂からリリースされた『ポケモンスナップ』を彷彿とさせるとの声も多く上がり、Steamユーザーレビューでは500件以上のうち98%が好評とする「圧倒的に好評」ステータスを獲得している人気作だ。そして2022年にはNintendo Switch向けにもリリースされた。

長い道のりの始まり

『Penko Park』を手がけたGhostbutterは、ドイツ生まれ日本在住のKonstantin Kopka氏によるインディーデベロッパーだ。Kopka氏が7月9日に公開した記事では、本作をPCからNintendo Switchへと移植した際のさまざまな困難が語られている。PC版の開発には3年もの期間を要したというが、Nintendo Switchへの移植の段階においても相当な苦労が待ち受けていたようだ。

移植にあたって任天堂に開発申請をおこなったKopka氏のもとには、すぐにNintendo Switchの開発キットが到着。セットアップを済ませて移植版の最初のビルドをおこない、いざ実行ボタンを押してみるも、ゲームはクラッシュ。メモリ不足やシェーダーの読み込みエラーなど問題が山ほど発生しており、はじめはタイトル画面を表示するところまで到達しなかったそうだ。

Image Credit: Ghostbutter on Web

その後クラッシュログに埋もれながら原因究明を進めること1週間、ついに最初のステージまでゲームを進めることができたという。しかし、ゲームのフレームレートは60fpsを想定していたところ14fpsを示しており、ビジュアルも酷い状態。Kopka氏が「a painful 14 FPS(苦痛に満ちた14fps)」と表現していることから、とてもプレイできる状態ではなかった様子がうかがえる。無事起動したのも束の間、ここから最適化に向けた長い戦いが始まるのだった。

無駄をひたすら解消

なぜこれほどまでにパフォーマンスが低いのかを突き止めるため、Kopka氏はまず推測で作業を進めるのではなく、計測をおこなって得られる具体的な数値に基づいて原因を探ることにした。何か月もかけてモニタリングを繰り返したところ、CPUには余力がある一方で、GPU処理がネックとなっていたことが判明した。60fpsを実現するためには単純計算で1フレームあたり少なくとも約16.67ミリ秒以上の処理速度が必要となるが、この時点でGPUでの処理には1フレームあたりおよそ45ミリ秒もかかっていたという。

この原因として、たとえばパーク内に配置された木は、半透明のポリゴンやスプライトが束のようになって構成されており、各ピクセルが何重にも描写されていたとのこと。UnityのOverdrawモードを用いてピクセルの重なりを確認してみた様子の画像では、もはや重なりすぎて煌々と輝く木々が見てとれる。GPU処理のおよそ3分の1がこの木のレンダリングに割かれていたそうだ。

Image Credit: Ghostbutter on Web

そこで、透明なスプライトをベースに作られていた葉を、法線マップを用いたローポリのメッシュへと変更。これによって見た目の品質をある程度保ちつつ、劇的なパフォーマンス向上が実現できたようだ。また地面に生えた何万本もの草についても同様の手法で、透明なスプライトを不透明なジオメトリへと置き換えることで解決した。

また、Unity標準のテレイン(地形)生成機能はボトルネックとなってしまう場合が多かったため、ハイトマップを使う方針をやめ、静的なメッシュを用いることにしたという。チャンクごとにオンとオフを切り替えられるような処理を取り入れ、さらなる最適化に成功したそうだ。そのほか、画面にエフェクトをかけるポストプロセスの行程においても最適化の余地がさまざま。大気による光の散乱の様子を描画するボリューメトリックフォグや3Dモデルに沿ってマテリアルを投影するダイナミックデカールといった、コンソールにとっては重い処理を置き換えていく対応がとられていった。

測定の重要性

同氏はこのほか、生き物たちの写真を収めるフォトアルバムの最適化などにも挑戦。本作ではセーブデータごとに数百枚の画像が保存されるため、これらをゲームのメインの処理と分け、データを圧縮してまとめて書き込むような保存方法を構築。ファイルサイズをNintendo Switchに合った大きさに抑え、読み書きの時間をなんと80%も削減することに成功したそうだ。

Image Credit: Ghostbutter on Web

そうした数か月間の最適化作業を終え、ついに目標としていた60fpsを実現。最適化をともなった移植を果たせたわけだ。Kopka氏は移植によって得た教訓を共有しており、なかでもはじめにしっかりと測定を実施することの重要性を強調している。同氏によれば、パフォーマンス向上の多くは細かな修正と計測を繰り返すことで達成されるため、推測で進めるべきではないとのこと。どの機能をオフにすればどれだけフレームレートが向上するのか、といった具体的な数値をきちんと把握・分析することで、効率よく最適化をおこなえるということだろう。“急がば回れ”の地道な測定が鍵となったようだ。

Image Credit: Ghostbutter on Web

ちなみに、Kopka氏は『Penko Park』を移植した経験を活かして、Nintendo SwitchおよびNintendo Switch 2への移植を受託する事業「Ghostbutter Porting」を立ち上げている。自身が直面した苦労から、Nintendo Switch向けにゲームを配信したいほかの開発者をサポートしたいという思いもあるのだろう。同氏はドイツ生まれでありながら日本語や英語も堪能とのことで、Nintendo Switchへの移植にチャレンジしたいゲーム開発者は公式サイトをチェックしてみるのもよいかもしれない。

『Penko Park』はPC(Steam)/Nintendo Switch向けに配信中。

Shion Kaneko
Shion Kaneko

夢中になりやすいのはオープンワールドゲーム。主に雪山に生息しています。

記事本文: 302