みなさん、こんにちは。
フライハイワークスのコウです。
今回は、Nintendo SwitchとSTEAMにて好評配信中の
「スーパーメットボーイ!」の魅力をお届けする連載企画です!
#8は、スーパーメットボーイ!について
リビルドゲームスのプログラム担当、Hosshyさんから、
「ロード時間へのこだわり」に関してお話いただきました!
ロード時間へのこだわり
はじめまして、プログラム担当のHosshyです。
今回はロード時間へのこだわりについてご紹介します。
少しディープな内容になりますがご容赦ください。
ロード時間について
ロード時間はなるべく短くしたいと考えています。
せっかくゲームを遊びたいのに待ち時間が長いと気持ちが萎えてしまいますよね。
特にゲームを起動してから遊べるようになるまでの時間を短くすることは大切で、
この時間が長いと無意識に次回起動するハードルが上がってしまうだろうと考えています。
レスポンスがないと体感長く感じるということもあるので、ロゴシーンから少しずつ必要なものをロードして待ち疲れないような工夫もしています。
余談ですが、ロード時間に限らず「すぐ遊べる」という手触りを大切にしています。
操作説明も実際のゲームを遊びながら覚えられるようにしています。
アセットバンドル化
スーパーメットボーイはUnityで開発しています。
Unityは普通に作ると起動時にすべてのリソースをロードしてしまいますが、アセットバンドルというアーカイブにリソースを保存することでロードタイミングを調整することができます。
スーパーメットボーイではシーン毎に必要なリソースを別のアセットバンドルに分け、
そのシーンで必要な最低限のものだけをロードしています。
また、シーンで重複するリソースは更に別のアセットバンドルに分けて無駄がでないようにしています。
シーンについて
Build SettingsのScenes In Buildに入れてしまうと起動時に全ロードになってしまいますが、シーン自体もアセットバンドルにすることができ、ロードタイミングを調整することができます。
スーパーメットボーイのScenes In Buildは開始処理のスクリプトのみ入っている空のシーンのみ登録されています。
また、シーンのつなぎが汚くならないように空っぽのBaseシーンを常にロードしておき、シーン切り替え中はフェード後にBaseシーンをアクティブにして次に必要なシーンをロードしています。
BGMについて
BGMはファイルサイズが大きくなりがちなので普通に聞いて違和感がない程度に音質を下げて容量を減らしています。
(ただ、タイトルのメインテーマだけはゲームの入り口なので比較的良い音質にしてあります。)
また、サイズが大きいので1曲ずつ別のアセットバンドルにして同時に複数のBGMをロードしないようにしています。
ちょっとだけ手間ですが、BGMは容量が大きいので意外と大きな効果があります。
よく使うものは常駐
ロード時間を減らすために一番効果的なのは「ロードをしない」ことです。
スーパーメットボーイは沢山のメモリを必要としないゲームなので、よく使うものはいちいちロードせずにメモリに常住させています。
開発者からひとこと
プログラム担当 hosshy
ここで紹介したのは基本的なことばかりですが、このあたりをやるかどうかでロード時間は大幅に変わります。
例えばシーン実行中に次のシーンをロードしておくなど、やろうと思えばもっとできることはあるのですが、キリがないので費用対効果の高そうなところまでと割り切って対応しています。
あとがき
以上、【スーパーメットボーイ! #8】をお届けいたしましたが、
いかがでしたでしょうか?
【スーパーメットボーイ!】のストアページはこちらですので、
よろしければご覧ください!
また、フライハイタイムズではマシュマロで匿名のメッセージを随時受付中!
記事に対する感想や、製作者さんへの応援の声、
製作者さんに聞きたい質問などありましたらこちらからお送りください!