ラバーダック・ゲームスが『イービル・ウィザード』のボス戦を開発するまで

RUBBER DUCK GAMES Anonymous
Aug 17, 2023|15 分
ラバーダック・ゲームスが『イービル・ウィザード』のボス戦を開発するまで
このウェブページは、お客様の便宜のために機械翻訳されたものです。翻訳されたコンテンツの正確性や信頼性は保証いたしかねます。翻訳されたコンテンツの正確性について疑問をお持ちの場合は、ウェブページの公式な英語版をご覧ください。
GDC 2023 Best in Playを受賞したRubber Duck Gamesが、魅力的なボス戦の作り方を紹介する。このゲスト・ブログでは、チーム・メンバーのバンキとセルジオ・ワジスウォルが、デザイン、プロトタイピングからアニメーション、テスト、バランス調整、そして「 Evil Wizard」のビジュアル・エフェクトとオーディオの最終調整までの全行程をご紹介します。

読者の皆さん!私はRubber Duck Gamesのゲームデザイナー兼プロデューサーのバンキです。ユーモア満載のアクションRPG イービル・ウィザードがSteamとXboxで発売されたので、ボス戦の開発舞台裏をお見せしたいと思います。

邪悪な魔法使い 』はメトロイドヴァニアにインスパイアされたゲームで、敗北した "ラスボス "の立場となり、呪われたヒーローへの復讐の旅に出る。

この復讐のためのクエストでは、魅力的なピクセルアートの環境の中を進み、敵の大群に打ち勝ち、自分のものを取り戻す必要がある。主人公はかつて強力な魔法使いだったが、主人公の手による負け戦で力を奪われ、城に潜入して壊滅的な復讐を繰り広げるために、それぞれの力を取り戻さなければならない。

このゲームで最初に倒すべきヒーローは、強力な氷の魔術師ハイルガだ。このディープ・ダイブでは、彼女を例のボスとして使うことにする。

ヘイルガのデザイン

最初から始めよう。イービル・ウィザードの ボス(とすべての敵)をデザインするのはちょっと難しかった。プレイヤーは善人と戦っているとはいえ、敵として認識されるほど威嚇的であるべきだと考えていた。

ボスについては、有名なゲームのヒーローからインスピレーションを得て、参考にした。ヘイルガについては、『ウォークラフト』のジャイナから多くのインスピレーションを得た。

最初のステップは、スプレッドシートを用意することだった(ゲーム内のすべてのボスに使用したものだ)。そこには、キャラクターの主な特徴、メカニズム、そしていくつかの参考文献を詳細に記した。

Evil Wizard's Hailga』(Rubber Duck Games)のサンプル・キャラクター・スプレッドシート

メカニズムが設計されたことで、私たちは次のステップ、つまりプロトタイピングに進むことができた。

プロトタイピング・ハイルガ

新しいボスのデザインをチームに提示する時が来たので、ミーティングに飛び込み、私はドキュメントを見ながら私の決定事項をいくつか説明した。

場合によっては、メカニックの開発が難しすぎたり、アニメーションの作画が複雑すぎたりすることもある。私たちは時間内に物事を終わらせようとするので、時間内に最高のボスを作るために考慮すべきことがいくつかある。

プロトタイピングに関しては、リード・プログラマーのディエゴ・オルドニェスが次のように語っている:ハイルガは『イービル・ウィザード』での最初のボスであり、人生で初めてボスのプログラミングをした。難しい仕事だとわかっていたので、プログラマーなら誰でもやるように、攻撃を単純なタスクに分割して別々にやることから始めた。このボスの攻撃は、弾丸を再利用することで簡単にできるものだった」。

「氷の弾丸と氷のミサイルの攻撃は、プレイヤーにとってまったく違うものに感じられる。一方はかわすのが簡単だが、もう一方は戦いの中でチャレンジとなる」と彼は続けた。"重要な違いは、攻撃コンポーネントがどのように氷の投射物をスポーンさせるかと、プレイヤーに投射される投射物の量である。簡単な調整で、システム全体を再利用して2つの異なる攻撃を見せることができた。ブリザード・アタックを始めるまでは、すべてうまくいった。

基本的な考え方

ヘイルガの試合では、何か新しい出会いをもたらしたかったし、風は面白いと思った。これはイービル・ウィザードでやってきたこととはまったく違っていたので、ゼロから始めなければならなかった。基本的なアイデアは、ランダムな方向から風を起こし、ダメージを与えるトゲだらけの壁に向かってプレーヤーを移動させるというものだった。この攻撃に対抗するには身を隠すのが一番なので、風よけとして戦場に鍾乳石をいくつも産み出す。氷の鍾乳石の陰に入ると、風がプレイヤーに当たらなくなる。

開発中の風力

私たちはまず、私たちが使用するさまざまなシステムの管理を担当する攻撃コンポーネントを作ることから始めた。鍾乳石、ウィンドエミッター、ブリザードのVFXを使用した。VFXについては、このブログの後半でセルジオ・ワジスウォルが取り上げる。

鍾乳石は、サークルコライダーを使ってその中にランダムなポイントを取得し、その位置を使ってY軸にオフセットを持つ鍾乳石を作成する。コルーチンを適用し、Y軸を下げてオブジェクトを落下させる。鍾乳石の産卵が終わると、ウィンドコントローラーに移った。このコンポーネントは、円の縁を回転する長方形の形をした大きな扇風機として機能する。

邪悪な魔法使いのボス戦での風のコントローラーの試作品。(ラバー・ダック・ゲーム)

ランダムな方向から風を吹かせる必要があるので、エミッターを中心に向けて、エリア内のすべてに影響を与える必要があった。ウインド・コントローラーは、風の回転、方向、位置を記憶するウインド・エミッターを備えている。コンポーネントを回転させると、エミッターがこれらの値を計算し、風(これは単なる方向と力である)に適用する。基本的にはVector3とfloat。

風を遮る

また、前述のようにウインドブロッカーによって風を遮ることもできる。このコンポーネントには、プレイヤーとの衝突をチェックするBoxCollider2Dがある。プレイヤーがウィンドブロッカーに近づくと、OnTriggerEnter2Dでウィンドブロッカーが有効になり、プレイヤーがコライダーから離れると、OnTriggerExit2Dでウィンドブロッカーが無効になる。これは、下の画像で選手とエミッターの間にあるシアン色の線で示されている。線が緑色の間、選手は守られている。

邪悪な魔法使いのボス戦での風よけの試作品。(ラバー・ダック・ゲーム)
風を受ける

最後に、選手が風の力を受けて風の方向に動くようにする必要があった。そのためにWindReceiverコンポーネントがある。風の強さと方向性をチェックする。この情報は、選手からウインドレシーバーに向かってレイキャストを行うことで収集される。そして、その情報をもとに、ウインドエミッタがレシーバーに衝突しているかどうか、どの程度の力で、どの方向から衝突しているかを知ることができる。すべての情報を入手したら、ムーブコントローラーを使って風の力を加え、必要な方向に選手を動かす。

ヘイルガの行動

ディエゴが最初の攻撃を仕掛け始めたとき、私はヘイルガにある行動を与え始めた。

イービル・ウィザードのAIには、ビヘイビア・デザイナーという非常に便利なアセットを使った。お勧めしきれない。プログラマーはメカニクスに取り組み、デザイナーはそれをキャラクターのビヘイビア・ツリーに配置する。基本はここで学べる。

これがヘイルガの行動ツリーだ:

邪悪な魔法使い』のキャラクター、ハイルガの行動ツリー。(ラバー・ダック・ゲーム)

大きな木だが、ビビることはない-見た目より簡単だ。

基本的には、ツリーの最初にいくつかのタスクを使ってバトルをセットアップした。例えば、ボスを最初のフェーズにセットし、イントロアニメーションを再生し、いくつかの変数をリセットする。

Evil Wizard』のキャラクターHailgaの行動ツリーの静的ビュー。(ラバー・ダック・ゲーム)

これらのタスクは戦闘の最初にしか実行されないので、次の画像にあるように、実際のボスの挙動を持つリピーターを追加した。

Evil Wizard』のキャラクター、Hailgaの行動ツリーをより深く見たところ。(ラバー・ダック・ゲーム)

ボスの行動の優先順位は常に健康である。これによって、ボスが別の局面に移るかどうか、あるいは死ぬかどうかをコントロールすることができる。そこでまず、ボスの体力が75%以上あるかどうかを確認する。もしそうなら、第1フェーズのタスクであるアイススパイク、アイスミサイル、スノースライム(ボスのミニオン)の召喚を実行する。ボスの体力が75%以下になると、ツリーは画像下部のセレクターに移動し、2番目のフェーズに対応するタスクを実行する。

次のステップに進む前に、このような大きなビヘイビアツリーを整理するクールな方法である、外部ビヘイビアツリー機能について触れておきたい。

3つのボックスが付いたアイコンは、外部ビヘイビアツリーである。

使用中の外部ビヘイビアツリー機能のクローズアップ。(ラバー・ダック・ゲーム)

外部ビヘイビアツリーは、コード内のメソッドのようなものだと考えてください。ゲームのすべてのロジックのあちこちでメソッドを呼び出し、それぞれの場所で同じコードを実行しますが、そのコードは1か所にしかありません。そのロジックの中で何かを変更しなければならない場合、そのメソッドのコードを変更すれば、そのメソッドが呼び出されるすべての場所で変更されることになる。ここでも同じだ。外部ビヘイビアツリーには、例えば "スノースライムを召喚する "といった、特定のアクションを実行するためのビヘイビアが含まれています。

外部行動ツリーに入ると、こうある:

邪悪な魔法使い(Evil Wizard)の「スノー・スライムを召喚する」の外部行動ツリー表示。(ラバー・ダック・ゲーム)

ボスが同じ攻撃を何度も繰り返さないか、戦場にミニオンが多すぎないかをチェックし、ミニオンを召喚したり、ハイルガのボイスラインを流したり、ボスをアイドル状態にして終了したりするミニ行動ツリーのようなものだ。

一度に戦場に出せるミニオンの量を変更したい場合は、この外部ビヘイビアツリー内のタスク「敵の種類量チェック」で変更するだけでよく、ミニオンを召喚するために使用するツリーのすべての部分で機能する。

ハイルガのアニメーション

ヘイルガの制作にあたり、我々のリード・アーティストであるルーベン・ゴメスは、既存のキャラクターを参照し、プレイヤーに認知してもらうという前提でスタートした。

今回は、(前述のように)『ウォークラフト』のジェイナと『アナと雪の女王』のエルサをキャラクターとして参考にした。

これがルーベンのコメントだ:

「その前提を念頭に置いて、私はまずヘイルガのデザインから始めた」とルーベンは言う。"それぞれのリファレンスの服装やヘアスタイルからいくつかの特徴を取り出し、非常に小さなピクセル化されたスプライトで簡単に認識できるような要素を取り入れ、残りを想像力(AIは使わず、ただ、私が子供の頃に使ったのと同じ、人間の想像力)で埋めました。"

邪悪な魔法使い』に登場するキャラクター、ハイルガのアニメーションの初期プロトタイプ。(ラバー・ダック・ゲーム)

アニメーションでは、フレーム間の滑らかさを失うことなく動きを速くする必要があったので、各キャラクターのアクションをより速く反復することで時間を稼ごうとした。私たちは常に最終バージョンから始め、いくつかの要素を再利用し、アンチエイリアスを避けることを意図して、最も近い補間を使用してアニメーションの各フレームごとにキャラクターの各部分を切り取り、再配置し、拡大縮小し、回転させる。

その後、動きを素早くテストし、同じように調整した。

Evil WizardのHailgaアニメーションのサンプル動作テスト。(ラバー・ダック・ゲーム)

アニメーションの原案ができあがると、各要素を洗練させ、空いたスペースを埋め、ディテールを加えていった。

各フレームの最終バージョンは次の画像で見ることができる。

Evil WIzardのHailgaアニメーションの最終版。(ラバー・ダック・ゲーム)
テストとバランシング

アニメーションを作りながら、ボス戦のテストとバランス調整を進めた。そのために『コンバット・ゾーン』というシーンを作り、ボスや敵、呪文などのテストに使った。基本的には、実際のゲームに触れることなく、テストに必要なすべてのツールや機能を備えた小さなエリアだ。

コンバットゾーンのシーンでキャラクターをテストしたときの、初期のハイルガのボスはこんな感じだった:

邪悪な魔法使い』のテストシーンに登場するハイルガのボス・アニメーションの早見表。(ラバー・ダック・ゲーム)
邪悪な魔法使い』のテストシーンに登場するハイルガのボス・アニメーションの早見表。(ラバー・ダック・ゲーム)

最終的に、動作、機能性、難易度に満足したところで、実際のゲームにヘイルガを組み込みました。

Evil WizardのHailgaボスのアニメーションの最終配置の様子。(ラバー・ダック・ゲーム)
VFXの時間

Hailgaのビヘイビアとアニメーションが完成したので、ボスのアニメーションを統合するために AnimatorImporterを使って、ボスのアニメーションを統合し始めた。これを使えば、ほんの数ステップですべてが完了する。

そこでVFXアーティストのTekyが登場した。持って行け、テッキー:

やあ!Sergio Wajswol (a.k.a.Teky)、Evil Wizardのプログラマー兼VFXアーティスト。

HailgaのVFXは、チームにとって最初のボスであっただけでなく、ゲームにおける私の最初の仕事のひとつでもあったので、本当にやりがいのあるものでした。ボス戦では、少なくとも1回の攻撃につき1つのVFXシークエンスが採用されている。

戦いのピークのひとつは、最後のフェイズ移行で、ヘイルガが怒って邪悪な魔法使いに向かって氷のビームを放ち、戦場を凍りつかせる場面だ。

邪悪な魔法使いのヘイルガのボス戦での氷ビーム・エフェクトのプレビュー。(ラバー・ダック・ゲーム)

これは、マジックを起こしたピースをバラバラにして見せるのに、とてもいい効果だと思う。そのために、トランジションを2つのVFXに分けた:氷のビームと床の凍結。

最初の作品では、ディエゴが攻撃のプログラミングを終えると私の仕事が始まり、通常は見栄えのするプレースホルダー(この場合は細長い長方形)が付いてくる。ここから、私は自分の道具箱の中にすでにあるとわかっていた道具を使って飛び込んだ。でも、開発開始直後だったので、そういうものが足りなかったんだ。過去にUnityのLine Rendererコンポーネントを使って、スクリプトで制御された任意の2点間の線をレンダリングしたことがあった。

Evil Wizardのサンプルシーンで動作するUnity Line Rendererコンポーネント。(ラバー・ダック・ゲーム)

上にあるように、まだまだだ。私がVFXですぐに理解したことは、(古典的な哲学とは逆に)"全体は部分の総和である"ということです。これは、1つのシェーダーや1つのパーティクルだけでなく、複数のシステムで望みの効果が得られることを意味する。

次に、エフェクトをもっとビームのように見せる必要があったので(そしてあまり固くないように)、これを実現するためにシェーダー・グラフを弄った。簡単に説明しよう。

私が望んだことを達成するために、シェーダーには3つの主要な部分が必要だった。まず、水平のミラー・グラデーションに過ぎないテクスチャ(次の画像でMainTexとして見ることができる)を以前に描いたものを使った。Pow "ノードを使えば、ビームの幅を簡単にコントロールできる(テクスチャはそれ自身を乗算し、グラデーションなのでビームを縮小する)。

Evil Wizardのアイスビームエフェクトに使用されたシェーダーグラフパーツのUnity Editorビュー。(ラバー・ダック・ゲーム)

次に、Tiling And Offsetノードでアニメーション化したSimple Noiseを2つの目的で使用した:

ある部分だけビームを溶かす(常にパブリック変数で制御される)

ビームのUVを変更し、歪んで見えるようにする。

Evil Wizardのアイスビームエフェクトに使用されたシェーダーグラフパーツのUnity Editorビュー。(ラバー・ダック・ゲーム)

続けて、出来上がったビームにHDRカラーを掛け合わせ、発光をコントロールした。最後に、ステップ・ノードを使ってビームのエッジを取り、乗算して異なる色にし、ビームの中心を際立たせた。

出来上がると、このように色や変数を変えて遊べるようになった。

イービルウィザードのアイスビームエフェクトを調整したUnity Editorビュー。(ラバー・ダック・ゲーム)

しかし、ビームは何もないところから投げられているのだ。

そこで、パーティクルの助けを借りて氷の球体を作り、ビームのキャスティングポイントにした:

Evil Wizardのアイスビームエフェクトのキャスティングポイントとして作成された氷の球体のUnity Editorビュー。(ラバー・ダック・ゲーム)

最後に、ビームを他のエリアと統合するために、ビームに沿った粒子が必要だった。

Evil Wizardのアイスビームエフェクトに沿って統合されたパーティクル作成のUnity Editorビュー。(ラバー・ダック・ゲーム)

この2番目の部分は短いが、より厄介だ。メインエフェクトを完成させるためには、凍結していない床と凍結した床という2つのテクスチャーの間を、ビームの軌跡と速度に沿って放射状の角度で行き来できるようにする必要があった。

スピードを合わせるために、我々は通常のスクリプトを使って、0から1の変数、つまり現在の梁の回転に応じて床をどれだけ凍らせるか、に対して梁のスピードを制御した。テクスチャをレープするには、短いシェーダーが必要だった。放射状のグラデーションと実際のレルピングを得るために、シェーダーを2つの部分に分けた方法を見てみましょう。

Evil WizardのレルピングテクスチャーシェーダーのUnity Editorビュー。(ラバー・ダック・ゲーム)

以下は、UV位置を考慮し、0から1まで正確に計算した、放射状のグラデーションの計算式である。これにより、ビームの動きがフリーズした値に同期する。

イービルウィザードのレルピングテクスチャシェーダのUnity Editorビューを更新し、放射状グラデーション式を適用。(ラバー・ダック・ゲーム)

現場はこんな感じだ:

Evil Wizardのシーン内でのレルピング・テクスチャー・シェーダー効果の様子。(ラバー・ダック・ゲーム)

このシーンを完成させるために、私たちはすべてを足し合わせ、最終局面への移行として、またこのボスの攻撃の1つとしても機能する、クールなエフェクトを実現した。

まとめ

すべてが完成した後、このゲームの作曲家であるハーコン・ダヴィッドセンが最後の仕上げを行った。ここで聴くことができる。そしてもちろん、声優のブリーナ・マクドウォールが、ヘイルガに声を与える素晴らしい仕事をした。

このブログを楽しんでいただけたなら幸いである!

SteamまたはXboxでEvil Wizardをチェックして、Hailgaのボス戦を体験してみよう。開発者直伝のMade with Unityストーリーはこちらから