ケーススタディ『デイヴ・ザ・ダイバー』
複数のプラットフォームをターゲットとし、複数のジャンルにまたがる要素を含む複雑な 2D/3D ゲームを、小さなチームがどのように作り上げ、ヒットさせたのでしょうか。ユニバーサルレンダーパイプライン、C# Job System、Cinemachine、Input System などの技術スタックと、Integrated Success チームの支援を活用して、『デイヴ・ザ・ダイバー』チームは魅力にあふれ、また高度に最適化された大人気ゲームを世に送り出しました。
複数のプラットフォームで複雑なビジュアル要素に取り組む
PC、Mac、Nintendo Switch™
27
韓国
適切なパートナーを見つける
『デイヴ・ザ・ダイバー』は、アドベンチャー、ロールプレイング、経営シミュレーションを組み合わせたゲームです。プレイヤーはダイバーのデイヴを操作して、海に出て魚を獲り、恐ろしいクリーチャーをかわしながらクエストを解決し、そして獲れたてのネタで寿司を作り、販売します。
開発チームは小規模だったため、複数のプラットフォームに対応しつつ、複数のジャンルにまたがる複雑なゲームプレイ要素のバランスを取る作業を支援してくれるパートナーを必要としていました。
「私たちが Unity を選んだのは、その機能によってユニークなゲームプレイを開発するための自律性と時間が得られたことと、強力なマルチプラットフォームパートナーとしての評判が高かったからです」と、ディレクターの Jaeho Hwang 氏は語ります。
成果
- 全世界で 200 万本の販売数を記録
- Steam での同時接続プレイヤー数が 98,000 人を突破
- Steam で 56,000 以上の「圧倒的に好評」なユーザーレビューを獲得
- Steam の全世界売上で第 2 位を獲得 (2023 年 6 月 29 日現在)
Nintendo Switch は任天堂の登録商標です。
チームが直面した主な課題のひとつは、複数のプラットフォームで最高レベルのビジュアル品質を確保することでした。ユニバーサルレンダーパイプライン(URP)を使用することで、グラフィックの作成、最適化、スケーリングが可能になりました。リードゲームデザイナーの Chanhee Woo 氏は、次のように述べています。「URP には多大なメリットがありました。プラットフォームごとのレンダーパイプラインアセットを構成し、品質設定でその構成を指定するだけで済みました。非常に高いグラフィック基準を設定し、その基準を満たすことができました」
もうひとつの課題は、機能やゲームプレイのアイデアを初期段階でいかに素早く実験できるかでした。アーティストの視点はゲームのシェーダーを書く上で有益なものであるため、アイデア出しが素早くできるかどうかは、アーティストにも関係のあることでした。遅延を避けるため、チームはノードベースのビジュアルオーサリングツールであるシェーダーグラフを使うことにしました。
アートディレクターの Kiyeop Chung 氏は、「アーティストなど、プログラマーでなくてもシェーダーグラフを使えることは、大きなメリットです」と説明します。「チームから直接意見を聞いて、その結果をすぐに確認できました」。
『デイヴ・ザ・ダイバー』では、2D ピクセルと 3D アートが融合しています。「2D のアーケードゲーム的なアクションと 3D の空間的な感覚の両方があることは、非常に魅力的でした」と Woo 氏は言います。チームは、アイデアを実装する際にカメラのビューやインタラクションの実行に苦労していたため、コードを書かずにカメラを操ることができるツールセット Cinemachine を使い、ベストショットを選べるようにしました。チームは複数のカメラを編成することで、必要な配置や構成をプレビューして設定することができました。
「まるで撮影現場のようにセットアップされていました」と Woo 氏は言葉を続けます。「Cinemachine のおかげで、自然なブレンドや揺れ、および狙ったフォーカスを簡単に作り出し、動きを演出することができました」。
チームのビジュアル戦略において不可欠だったのは、パフォーマンスに影響を与えることなく、可能な限りリアルなグラフィックを実現することでした。魚の群れの挙動を生成する課題に直面し、これらの問題を解決するために C# Job System と Burst コンパイラーを採用しました。
「通常、群れの挙動を決定するために各ベクトルを線形に計算すると CPU 占有率が高くなりますが、C# Job System でコードを記述し、Burst コンパイラーでコンパイル、最適化することで、大幅にパフォーマンスが向上しました」とリードプログラマーの Bosung Seo 氏は言います。
チームは衝突の処理にも頭を悩ませました。『デイヴ・ザ・ダイバー』では、2D でも 3D でも魚が互いを軽く押し合うことで奥行き感を作り出しますが、チームはこの効果をどう実現するかを真剣に考える必要がありました。「この課題を改善するために、C# Job System と Unity Physics を組み合わせて、このダイナミックで容易に変更可能な押し合いのロジックを実現しました」と Seo 氏は説明します。
『デイヴ・ザ・ダイバー』チームは、このゲームを複数のプラットフォームに展開し、運営したいと考えていました。チーム規模を考えると、このリリース戦略に見込まれる時間とコストは膨大なものであったため、Input System を利用して、このプロセスを簡略化して、迅速に進められるようにしました。
「複数のプラットフォームにゲームを提供するためのコストを最小限に抑えることができました」と Seo 氏は説明します。「私たちはエンジンを移行し、コントロールを Input System に変更しました。両方のプラットフォームで、コードとアセットを変換せずにそのまま使用できたので、非常に助かりました」。
チームは同じツールを使って、異なるコントローラーを扱うというハードルを乗り越えました。「Input System では、アクションのグループ化や各アクションの主要な設定は、UX で簡単に追加や変更ができました。また、実行時にコードで追加やリセットを行えることも利点でした。結果、かなり時間を節約できました」と Seo 氏は付け加えました。
ゲーム作りでパフォーマンスの高い、大きな成果を実現するには、ビジュアルのインパクトを最大化するための反復、テスト、トラブルシューティングにおいて多くの作業と支援が必要です。
チームは Unity Profiler の Timeline ビューを使用してパフォーマンスのボトルネックを特定し、Integrated Success チームと協力して、コードとデザインの両方でプロファイリングで指摘される問題の特定、学習、修正を行いました。
「Unity のエンジニアの支援を受け、素晴らしい経験ができました。プロファイリングデータを送って、エンジニアと一緒に問題を解決したり、エンジン内部のコードをチェックすることで最適化のための解決策を提案してもらったりしました」 。
エンジニアはまた、ソースコードの特定の行を解析する簡単で利用しやすい方法を提供しました。「イベントコールスタックに異常が発生したときには、Unity のエンジニアの 1 人がエンジンコードを確認することで問題を解決し、質問があるときはソースコードを添付して確認してくれました。このような体制はとても助かりました」。このように Seo 氏はコメントしています。
チームは当初から、それぞれ独立した複数ジャンルのゲームプレイ要素と、リアルで楽しいと感じるストーリーラインを持った 2D/3D のユニークなビジュアル体験を作りたいと考えていました。複数のプラットフォームですべてを有機的に融合させるのは複雑な作業であり、チームにとって、ビジュアルの品質、効率、ストーリーラインを管理しやすい技術スタックを選択することが不可欠でした。
コミュニティの強力なフィードバックループと徹底的な社内テストを組み合わせることで、『デイヴ・ザ・ダイバー』には発売後即座にヒットするゲームとなる素地ができていました。
「私たちは、自分たちのやり方で、ユーザーに愛される、入念に作りこまれた面白いゲームの開発に着手しました。私たちの期待は高かったので、作品が完成したときは大きな喜びを感じました」と Hwang 氏は述べました。
業界がどれほど進化しても、どのようなイマジネーションが生まれても、より幅広いオーディエンスにリーチし、制作したゲームが未来へ向けて準備ができているという自信を持つことができます。一度コンテンツを作成すれば、18 を超えるプラットフォームに展開し、さまざまなフォーマットでプレイヤーを魅了することができます。