戻る
Look North World がフォートナイトでリズムベースの「Patchwork Parkour」を制作した方法
Look North World、リード エンジニア、Michael Dekoekkoek
「Patchwork Parkour」(島コード:1425-4464-4801) は、UGC ゲーム スタジオ兼パブリッシャーである Look North World と、Epic Games の一員であり、ワールドクラスの音楽主導の体験の開発で知られる Harmonix Labs が共同で開発したゲームです。
互いに協力することで、ゲームプレイと音楽的なインタラクティビティを極めて重視した音楽ゲームを開発し、フォートナイト クリエイティブと UEFN 向けの一連の仕掛けとして音楽とビジュアルの作成および操作を可能にする Patchwork の限界を押し上げました。Patchwork Parkour は、自分の島にカスタム サウンドトラックを作成し、音楽を利用してゲームプレイを強化するいくつかの方法に光を当てるものです。
Harmonix は、Patchwork ツールの改善と拡張に継続的に取り組み、Patchwork Parkour の開発時に大幅な改善を実現しました。
以下では、ゲーム内で使用しているいくつかの主要機能を取り上げ、開発プロセスにおいて得られた重要な知識とともにご紹介します。最新の Patchwork ツールの詳細とドキュメントについては、Epic の Patchwork の仕掛けに関するドキュメントを参照してください。
音符シーケンサーを使用すると、現在のテンポに基づいて音符を再生できます。仕掛けが曲を直接生成するわけではありませんが、音符シーケンサーの出力ケーブルを他のさまざまな仕掛けに接続できます。これについては、後ほど説明します。
音符トリガーは、選択された音符が生成されると、イベントをアクティベートします。音符シーケンサーの出力チェーンに音符トリガーを配置することで、これらのイベントに対して他の仕掛けによる反応を有効にし、トリガーされた音符に基づいてアクションを実行させることができます。これは、Patchwork Parkour がサウンドトラックと同期した環境ハザードのアニメーションを表示する主な方法となっています。
曲同期とともに、これらの仕掛けは、リズムに基づいてゲームプレイのタイミングを調整する主な構成要素となります。実際の音楽を作成するために、その他のさまざまな仕掛けと組み合わせることができます。ただし、技術的には、リズムに基づくゲームプレイをトリガーするためにサウンドをトリガーする必要は一切ありません。音楽制作のプロセスは、他の Patchwork の仕掛けとともに順番に、または並行して発生し、完全なサウンドトラックとなります。これについては、次のセクションで説明します。
Patchwork Parkour で極めて重要な仕掛けは、ミュージック マネージャーです。単純でありながら、すべての Patchwork の仕掛けのテンポを管理することで、極めて重要な役割を果たします。ミュージック マネージャーでテンポを設定することで、配置するすべての音符シーケンサーが確実にそのテンポと同期して演奏されるようにしています。この機能により、複数の音符シーケンサーを並行して、すべて同期させて実行できます。
Patchwork Parkour は、プロトタイプ フェーズでは主にビルトイン ツールを使用していましたが、開発時にフュージョン パッチに切り替えることでダイナミックなオーディオを最大化すると同時に、マップ内に配置する必要がある仕掛けの数を最小化しています。
音楽的な複雑さとメモリ使用量のバランスを取るため、フュージョン パッチおよびエフェクトを、音符シーケンサーおよび音符トリガーと並列に組み合わせました。具体的には、音符シーケンサー/音符トリガーの組み合わせ (スピーカーへの出力なし) を、別の音符シーケンサーおよびその他のさまざまな音楽を生成する仕掛けとともに実行チェーン内に配置しました。仕掛けとしては、楽器プレーヤー、フィルター、モジュレーター、および最後にスピーカーがあります。
このアプローチにより、比較的複雑な音楽をサンプル内に作成できただけでなく、サンプル内で再生される音楽に対してゲームプレイのアニメーションの同期を正確に維持できました。
フュージョン パッチと音符トリガーのデモ。複数の音符シーケンサーを同期させています。
音楽にゲームプレイの影響を与える最も単純な形式として、ミューテーター ゾーンの仕掛けに対してプレイヤーが入ったか出たかに基づいて Patchwork の仕掛けが有効/無効になります。これは、ゲーム内で幅広く行われており、極めてよくある単純な方法です。より興味深いのは、Patchwork バリュー セッターの仕掛けを利用していることです。この仕掛けを使用すると、ゲームプレイ時に他の Patchwork の仕掛けに変更を加えることができ、楽曲に任意の数の変更を反映できます。
次の動画は、バリュー セッターを使用してゲームプレイ時に音楽をコントロールする方法を示しています。
動画 2:レベル 3 の終盤に音楽が新しいミックスに変更されます。
動画 3:ミックスを更新するためにバリュー セッターを使用します。ゲームプレイを通じて多くの音楽的な変更が発生する一方で、この動画は明確に異なる 2 つの音楽セクションに焦点を当てています。それらのセクションは、音符シーケンサーの現在のページを調整することで切り替えられます。
動画 1:レベル 3 が新しいミックスで開始されます。
プレイヤーが Patchwork の仕掛けとインタラクションを明らかに行っていない場合は、使用中の Patchwork の仕掛けの数に応じてメモリ負荷を低減する複数の方法があります。
しかし、プロダクションレベルのパフォーマンスが得られるように、時間を取って他のタイプのアニメーション形式に変換できるものはすべて変換してください。
弊社の場合は、ほとんどのニーズに Verse スクリプティングが最適だと判明しました。レベル シーケンスには視覚的に複雑なアニメーションがいくつか残りましたが、最適なパフォーマンスを得るにはそれらを注意して管理することが重要です。
リズムベースのオビー/プラットフォーマーとして、Patchwork Parkour では、それぞれが 1 つ以上のアクタで構成される同じ障害物を多く使用することが求められていました。UEFN では、簡単な操作やコピー&ペーストのためにこれらのオブジェクトをコンポーネント化することが開発のハードルとなります。このプロセスを簡素化するためのいくつかのヒントをご紹介します。
![レベル シーケンスの複数のアクタ](https://cdn2.unrealengine.com/level-sequence-multiple-actors-1920x1080-69edd9f2a0a0.png)
Patchwork Parkour では、パフォーマンス最適化と同時に、ダイナミックな音楽を魅力的なゲームプレイと融合させる方法を模索しました。さまざまなツールの活用からメモリ管理の微調整まで、あらゆる意思決定によって、よりスムーズかつ没入感がある体験の構築が可能になりました。独自の島を開発する際は、実験し、最適化し、楽しむことを忘れないでください!
島コード 1425-4464-4801 を使用し、今すぐゲームを体験しましょう。
互いに協力することで、ゲームプレイと音楽的なインタラクティビティを極めて重視した音楽ゲームを開発し、フォートナイト クリエイティブと UEFN 向けの一連の仕掛けとして音楽とビジュアルの作成および操作を可能にする Patchwork の限界を押し上げました。Patchwork Parkour は、自分の島にカスタム サウンドトラックを作成し、音楽を利用してゲームプレイを強化するいくつかの方法に光を当てるものです。
Harmonix は、Patchwork ツールの改善と拡張に継続的に取り組み、Patchwork Parkour の開発時に大幅な改善を実現しました。
以下では、ゲーム内で使用しているいくつかの主要機能を取り上げ、開発プロセスにおいて得られた重要な知識とともにご紹介します。最新の Patchwork ツールの詳細とドキュメントについては、Epic の Patchwork の仕掛けに関するドキュメントを参照してください。
リズムベースのゲームプレイの制作
主要コンポーネント:音符シーケンサー、音符トリガー、曲同期
多くのゲームで、リズムベースのゲームプレイの制作に使用する主な Patchwork コンポーネントは、音符シーケンサー、音符トリガー、および曲同期の仕掛けです。Patchwork Parkour では、最初の 2 つを多用しています。曲同期の仕掛けは、UEFN のレベル シーケンスをオーディオと同期するための強力なツールとなります。開発半ばでリリースされたため、このプロジェクトで完全な活用はできませんでしたが、今後の活用に向けて大きな可能性を示すものとなっています。![フォートナイト Patchwork Parkour シーケンサー トリガー コンボ](https://cdn2.unrealengine.com/fortnite-patchwork-parkour-sequencer-trigger-combo-1920x1080-d7f149c66d8d.png)
アクタを Patchwork Parkour のドラムビートと同期するために使用された、音符シーケンサーと音符トリガーの組み合わせ。
音符シーケンサーを使用すると、現在のテンポに基づいて音符を再生できます。仕掛けが曲を直接生成するわけではありませんが、音符シーケンサーの出力ケーブルを他のさまざまな仕掛けに接続できます。これについては、後ほど説明します。
音符トリガーは、選択された音符が生成されると、イベントをアクティベートします。音符シーケンサーの出力チェーンに音符トリガーを配置することで、これらのイベントに対して他の仕掛けによる反応を有効にし、トリガーされた音符に基づいてアクションを実行させることができます。これは、Patchwork Parkour がサウンドトラックと同期した環境ハザードのアニメーションを表示する主な方法となっています。
ゲーム内で照明のアニメーションをトリガーする音符シーケンサー / 音符トリガーの組み合わせを示す動画。
曲同期とともに、これらの仕掛けは、リズムに基づいてゲームプレイのタイミングを調整する主な構成要素となります。実際の音楽を作成するために、その他のさまざまな仕掛けと組み合わせることができます。ただし、技術的には、リズムに基づくゲームプレイをトリガーするためにサウンドをトリガーする必要は一切ありません。音楽制作のプロセスは、他の Patchwork の仕掛けとともに順番に、または並行して発生し、完全なサウンドトラックとなります。これについては、次のセクションで説明します。
Patchwork Parkour で極めて重要な仕掛けは、ミュージック マネージャーです。単純でありながら、すべての Patchwork の仕掛けのテンポを管理することで、極めて重要な役割を果たします。ミュージック マネージャーでテンポを設定することで、配置するすべての音符シーケンサーが確実にそのテンポと同期して演奏されるようにしています。この機能により、複数の音符シーケンサーを並行して、すべて同期させて実行できます。
ダイナミックなサウンドトラックを制作する
音楽に焦点を合わせたゲームプレイ体験のために、外部と内部で生成されたオーディオを融合する
主要コンポーネント:フュージョン パッチ、楽器プレーヤー、エフェクト、フィルター、モジュレーター、スピーカー
Patchwork は、オーディオの仕掛けの堅牢なツールセットを備えており、完全な音楽体験を制作することが可能です。Patchwork の組み込みの楽器やエフェクトを使用したり、フュージョン パッチで外部オーディオ ツールによる独自のサンプルを提供したりしてさらに楽しくサウンドトラック全体を生成できます。Patchwork Parkour は、プロトタイプ フェーズでは主にビルトイン ツールを使用していましたが、開発時にフュージョン パッチに切り替えることでダイナミックなオーディオを最大化すると同時に、マップ内に配置する必要がある仕掛けの数を最小化しています。
音楽的な複雑さとメモリ使用量のバランスを取るため、フュージョン パッチおよびエフェクトを、音符シーケンサーおよび音符トリガーと並列に組み合わせました。具体的には、音符シーケンサー/音符トリガーの組み合わせ (スピーカーへの出力なし) を、別の音符シーケンサーおよびその他のさまざまな音楽を生成する仕掛けとともに実行チェーン内に配置しました。仕掛けとしては、楽器プレーヤー、フィルター、モジュレーター、および最後にスピーカーがあります。
このアプローチにより、比較的複雑な音楽をサンプル内に作成できただけでなく、サンプル内で再生される音楽に対してゲームプレイのアニメーションの同期を正確に維持できました。
音楽にゲームプレイの影響を与える
音楽の制作やゲームプレイの強化を行うメカニックに加えて、Patchwork には、音楽にゲームプレイの影響を与えるためのさまざまなツールが用意されています。Patchwork Parkour は、さまざまな手法を駆使して、ゲーム内でプレイヤーのアクションと進行状況に基づいて音楽を動的に更新します。音楽にゲームプレイの影響を与える最も単純な形式として、ミューテーター ゾーンの仕掛けに対してプレイヤーが入ったか出たかに基づいて Patchwork の仕掛けが有効/無効になります。これは、ゲーム内で幅広く行われており、極めてよくある単純な方法です。より興味深いのは、Patchwork バリュー セッターの仕掛けを利用していることです。この仕掛けを使用すると、ゲームプレイ時に他の Patchwork の仕掛けに変更を加えることができ、楽曲に任意の数の変更を反映できます。
次の動画は、バリュー セッターを使用してゲームプレイ時に音楽をコントロールする方法を示しています。
動画 2:レベル 3 の終盤に音楽が新しいミックスに変更されます。
動画 3:ミックスを更新するためにバリュー セッターを使用します。ゲームプレイを通じて多くの音楽的な変更が発生する一方で、この動画は明確に異なる 2 つの音楽セクションに焦点を当てています。それらのセクションは、音符シーケンサーの現在のページを調整することで切り替えられます。
得られた知識/開発のヒント
主要コンポーネント:Patchwork メモリ モード、音符シーケンサー、フュージョン サンプル、スケルタルメッシュ、アクタ バインディングの複数のページ
メモリ管理
Patchwork の仕掛けは、ゲーム内のメモリを大幅に消費する可能性があります。以降では、ダイナミックな音楽を維持しながらメモリ使用量のバランスを取るためのヒントを示します。プレイヤーが Patchwork の仕掛けとインタラクションを明らかに行っていない場合は、使用中の Patchwork の仕掛けの数に応じてメモリ負荷を低減する複数の方法があります。
- 島の設定で、Patchwork メモリ モードを使用する。この設定は、ゲームプレイ中に Patchwork の仕掛けによって使用されているすべてのアニメーションとグラフィックスの多くを効果的に無効にします。この機能は、ゲームプレイ中にプレイヤーが Patchwork の仕掛けとインタラクションする必要がない場合にのみ適切なものとなります。
- 使用にあたっては、バランスを取る必要があります。Patchwork を使用して音楽を作成/統合している場合は、完全に表示してインタラクション可能にする必要があります。しかし、メモリ テストの公開や実行をする場合は、この機能を有効にして大幅にメモリ使用量を低減できます。
- 音符シーケンサーで複数のページを利用する。また、ゲームプレイで必要に応じて、バリュー セッターの仕掛けを使用して変更を加えられるようにします。
- 音符シーケンサーでは複数のページを使用でき、それらを個別にまたは順番にループできます。Patchwork Parkour では、この機能を活用し、ゲーム内の個別の仕掛けの数を低減しています。たとえば、プレイヤーの進行度に基づいてページを変更しています。先ほどのバリュー セッターの動画で見たように、音符シーケンサーのページ 3 が異なる音楽を再生するための変更をトリガーしています。
- フュージョンのサンプルを使用する。前述のとおり、Patchwork Parkour は、フュージョンのサンプルに大きく依存しています。外部 DAW でオーディオを作成し、楽器プレーヤーの仕掛けを使用してフュージョン パッチでそれを再生すると、特定のサウンドを作成するために必要な個別の仕掛けの数を低減できます。そのため、メモリ使用量が低減されます。
シネマティックス:メリットと落とし穴
レベル シーケンスおよびムービー シーケンスの仕掛けの開発へと進めば、パフォーマンスを重視することになると認識していました。しかし、それは音楽とうまく同期するゲーム メカニクスを迅速にイテレーションするのにも最適であることが判明しました。これにより、プロトタイプ フェーズ中に楽しいゲームプレイのメカニクスの制作が迅速かつ簡単になるため、プロトタイプ / ゲーム開発の初期にこれらを利用することをお勧めします。しかし、プロダクションレベルのパフォーマンスが得られるように、時間を取って他のタイプのアニメーション形式に変換できるものはすべて変換してください。
弊社の場合は、ほとんどのニーズに Verse スクリプティングが最適だと判明しました。レベル シーケンスには視覚的に複雑なアニメーションがいくつか残りましたが、最適なパフォーマンスを得るにはそれらを注意して管理することが重要です。
- ムービー シーケンスの仕掛けをビートに同期して再生する場合は、そのビートでアニメーションを実行するできるだけ多くのアクタを、できるだけ少ないレベル シーケンスに統合するようにします。これらの仕掛けは起動および停止時に重大なパフォーマンス負荷を発生させるため、同時に再生されるレベル シーケンスの数を最小化しておくことがパフォーマンスの改善に役立ちます。
- Patchwork Parkour では、ゾーンベースのアニメーションの有効化/無効化ツールを作成し、同時に再生されるシネマティックスの数を低減しました。ゲームはシングルプレイヤーであるため、一度に再生される仕掛けの数を明確に管理できました。
リズムベースのオビー/プラットフォーマーとして、Patchwork Parkour では、それぞれが 1 つ以上のアクタで構成される同じ障害物を多く使用することが求められていました。UEFN では、簡単な操作やコピー&ペーストのためにこれらのオブジェクトをコンポーネント化することが開発のハードルとなります。このプロセスを簡素化するためのいくつかのヒントをご紹介します。
- スケルタルメッシュ:可能であれば、シネマティックスでスケルタルメッシュを使用しないようにしてください。
- 当初、弊社では音楽によってトリガーされる環境ハザードをスケルタルメッシュとアニメーションを使用してすべて制作していました。これにより、複数のハザードの作業がはるかに簡単になりました。なぜなら、ほとんどのケースでアニメーションの変更に必要だったのは、複数のシネマティックス内のすべてのトラックを変更することではなく、アニメーションを更新することだったからです。
- しかし、UEFN の現在の状況では、アニメーションが設定されていなかったとしても、シネマティックスによってスケルタルメッシュのアニメーションのティックが引き起こされ、フレームごとにボーンがリフレッシュされます。これは、パフォーマンスの問題につながる可能性があります。
- 当初、弊社では音楽によってトリガーされる環境ハザードをスケルタルメッシュとアニメーションを使用してすべて制作していました。これにより、複数のハザードの作業がはるかに簡単になりました。なぜなら、ほとんどのケースでアニメーションの変更に必要だったのは、複数のシネマティックス内のすべてのトラックを変更することではなく、アニメーションを更新することだったからです。
- アクタとトラック:シネマティックスを使用している場合にパフォーマンス最適化に最も優れているのは、各トランスフォーム トラックにアクタを 1 つだけバインドすることです。このアプローチにより、スムーズなロードと、シネマティックスのサブオブジェクトの処理方法によって発生する潜在的なパフォーマンスの問題の最小化が確実になります。
- 複数のアクタが単一のトラックにバインドされている場合、2 つの黄色い矢印のアイコンがそのトラックに表示されます。これには注意し、最適なパフォーマンスを維持するため、可能な場合にはできるだけ回避してください。
![バインドされた複数のアクタ](https://cdn2.unrealengine.com/mutliple-actors-bound-1920x1080-9d71449861d1.png)
- さらに、アクタをシーケンス内で別々に維持することが優れたプラクティスとなります。トランスフォーム トラックのコピー&ペーストは素早く簡単にできます。そのため、同じアニメーションを再生する複数のアクタがある場合、単純にトランスフォーム トラックを各アクタにコピーすれば、アニメーションが確実に同期します。
![レベル シーケンスの複数のアクタ](https://cdn2.unrealengine.com/level-sequence-multiple-actors-1920x1080-69edd9f2a0a0.png)
Patchwork Parkour では、パフォーマンス最適化と同時に、ダイナミックな音楽を魅力的なゲームプレイと融合させる方法を模索しました。さまざまなツールの活用からメモリ管理の微調整まで、あらゆる意思決定によって、よりスムーズかつ没入感がある体験の構築が可能になりました。独自の島を開発する際は、実験し、最適化し、楽しむことを忘れないでください!
島コード 1425-4464-4801 を使用し、今すぐゲームを体験しましょう。