アニメーションと物理学でMy Talking Tom Friends 2を生き生きとさせる

My Talking Tom Friendsの続編として、Outfit7の最も成功したタイトルの一つであるMy Talking Tom Friends 2は、プレイヤーに更新された体験を提供する自然な次のステップのように感じられます。モバイルゲームは、最初のバージョンから人気のキャラクターを集めて、楽しい新しい町で次のレベルのバーチャルペットアドベンチャーを提供します。
私たちは、Outfit7のソフトウェアエンジニアであるMihec Pezdircと、チームの主なソフトウェアエンジニアであるČrt Kristlと座って、デバイス間でのパフォーマンスの最適化、スケーラブルなアニメーションシステムの構築、コンテンツの複雑さの管理について話し合いました。
ゲームを構築する際の最大の技術的課題は何でしたか?
Mihec Pezdirc:iPhone 5Sや低価格のAndroidフォンから最新のAndroidフォンまで、デバイスでスムーズに動作するようにゲームを最適化することが大きな課題でした。私たちは、パフォーマンス、サイズ、バッテリー効率、ビジュアルに焦点を当てました。
約1,000のアニメーションを持つ私たちは、アニメーションによって使用されるアプリサイズを10MBから15MBの間に抑えるためのカスタムシステムを構築しました。事前レンダリングされたビジュアルからダイナミックな世界に切り替えるには、OpenGL ES 3.0のような古い標準を放棄する必要がありました。私たちはまた、高性能デバイス向けにASTCテクスチャ圧縮とコンピュートシェーダーを有効にしています。ASTCはアプリサイズも削減し、ストレージやダウンロード制限のある市場で役立ちます。

Unityでの作業がコアゲームプレイやミニゲームにどのように役立ちましたか?
MP:Unityの柔軟なエディターは、開発者、アーティスト、VFXチーム間の効率的なコラボレーションを可能にします。私たちは、シネマティックな瞬間のためにカスタムツールとTimeline拡張を構築しました。
Črt Kristl:開発者の視点から見ると、Unityの迅速な反復は大きな利点です。コードを調整し、数秒で再コンパイルし、変更を即座にテストできます。私たちは、カスタムポストプロセッシングツールとアセットワークフローを使用して、パイプラインの多くを自動化し、手動の労力を大幅に削減しました。

カスタムスクリプタブルレンダーパイプライン(SRP)は、ゲームの見た目とパフォーマンスをどのように形作りますか?
MP:私たちのカスタムSRPは、モバイル向けにレンダリングを最適化し、デバイスタイアごとに効果を調整します。それでも視覚的一貫性を維持します。私たちは影のレンダリングとスクリーンスペースアンビエントオクルージョン(SSAO)を直接制御し、単一パスのダウンスケールされたSSAOと静的シャドウマップカメラでGPU時間を節約します。これによりCPUのオーバーヘッドが削減され、影の品質が向上し安定します。

C#ジョブシステムとバーストコンパイラを活用することは、ゲームのビジュアルにどのように影響しますか?
ČK:C#ジョブシステムは、アニメーションパイプライン(リターゲティング、IK、ルックアット変換)を処理し、キャラクター間で効率的にジョブを実行します。また、ミニゲームシミュレーションの調理など、CPU負荷の高いシステムをGPUと並行してサポートします。
MP:バーストコンパイラとUnity.Mathematicsを使用した単一命令、複数データ(SIMD)は、パフォーマンスを向上させ、マネージコードのパフォーマンスに関する初期の課題を解決するのに役立ちました。これにより、ゲームは低スペックのデバイスでもスムーズに動作します。
Unity Physicsはどのような役割を果たしますか?
ČK:Unity Physicsは、料理のミニゲームで重要であり、食べ物からコンベヤーベルトまで、すべてのオブジェクトが完全に物理ベースです。オブジェクトを手動で移動させるのではなく、すべてがリジッドボディで動作します。ドラッグや質量のようなパラメータが調整されると、システムは安定し、食べ物を積み重ねるなどの信頼できる相互作用を可能にします。
MP:Unity 5以降、Unity Physicsを広範に使用していなかったため、その改善に感銘を受けています。ミニゲームの外では、低スペックのデバイスでほとんどの物理演算を無効にし、タップやドラッグの相互作用のためにスフィアやカプセルキャストのような軽量な操作のみを有効にします。
ČK:Unityの低レベルの物理制御は、ゲームプレイを微調整する柔軟性を提供し、特定の衝突を無視したり、接触解決を手動で処理したりすることができ、余分なオーバーヘッドを避けることができます。

キャラクターの会話/コメントシステムはどのように機能しますか?
ČK:すべての会話の大きなExcelシートを維持しており、それぞれにユニークな識別子がタグ付けされています。デザイナーがこのシートを更新し、Unityがそれをインポートして会話グラフを構築します。
座ったり食べたりするキャラクターの行動が、どの会話が利用可能かを決定します。例えば、3人のキャラクターがベンチに座ると、システムは非繰り返しの会話をランダムに選択します。その後、相互作用を新鮮に保つためにクールダウンを適用します。
MP:カスタムロジックは、挨拶のような相互作用を処理し、近接を必要とし、クールダウンを尊重して自然に保ちます。システムは、複雑なメカニクスの代わりにシンプルな条件とタイムアウトを使用して、リラックスした自然な流れを目指しています。これにより、効率的でデザイナーに優しいものになります。

開発中にチームが遭遇した他のパフォーマンス関連の問題は何ですか?
ČK:モバイルでのレンダリングとシェーダーは非常に困難でした。デバイスをCPU/GPUパフォーマンスで分類し、各デバイスに必要なものだけをアクティブにするシェーダーバリアントを作成しました。私たちはコンピュートシェーダーのベンチマークを行い、スプラッシュスクリーン中に一般的に使用されるシェーダーを事前にウォームアップして、フレームのひっかかりやクラッシュを引き起こすことなく長いロード時間を回避しました。
MP:私たちは、プレハブに埋め込むのではなく、動的にアセットやエフェクトをロードすることでシーンのロードを最適化しました。これにより、低スペックのハードウェアでもスムーズな遷移が保たれます。
開発中にチームが達成したマイルストーンは何ですか?
MP:私たちは、パフォーマンスを犠牲にすることなくアプリのサイズとメモリを最適化することで、重要な指標を達成します。アセットの種類に応じてLZMAとLZ4の圧縮をバランスさせます。カスタムアセットバンドルと選択的圧縮を使用することで、古いデバイスでのロード時間が改善されました。私たちはビルドパイプラインを自動化し、これらの最適化を迅速かつ繰り返し行えるようにしました。
ČK:私たちは新しいアクションシステムを誇りに思っています。これはキャラクターの活動を追跡するステートマシンです。この設定により、複数の開発者がシステムを壊すことなく独立してインタラクションを作成できます。

長期的なモバイルフランチャイズを構築しようとしている開発者にどんなアドバイスをしますか?
MP:配布とマーケティングを早めに計画し、アプリストアの可視性に頼らないでください。ユニークなもの、または既存のものよりも優れたものを作成し、何度も反復し失敗する準備をしてください。
ČK:自分が本当に楽しむゲームを作りましょう。自分の創作に対する情熱は、しばしば分析よりも重要です。
Unityで作成されたプロジェクトについてもっと読むには、リソースページを訪れてください。
