Unity を検索

煙、鏡、スクロールするテクスチャ — 『TUNIC』の舞台裏

2022年5月26日 カテゴリ: ゲーム | 14 分 で読めます
Cartoon fox, in a forest holding a sword and shield
Cartoon fox, in a forest holding a sword and shield
シェア

Is this article helpful for you?

Thank you for your feedback!

インディークリエイターの Andrew Shouldice 氏(ISOMETRICORP Games 社)が GDC 会場で Unity の Twitch に参加し、アクションアドベンチャーゲームの制作秘話を披露してくれました。

TUNIC』は、小さなキツネがモンスターと戦いながら広大な世界で秘密や宝物を探す、発見と冒険をテーマとしたゲームです。『ゼルダの伝説』や『ダークソウル』などの大作ゲームからインスピレーションを受けつつ、このゲームはユニークな形で成功を収めようとしています。現時点で Metacritic では 85 点と高評価で、レビュアーは『TUNIC』を「a masterpiece of adventure and exploration.(冒険と探検の傑作)」と評しています。

リードデベロッパーの Andrew Shouldice 氏は、Unity の Hasan Al Salman、それに Unity Insider の Joyce Plokker 氏(@MinionsArt)とともに、Twitch で、彼が 2015 年から取り組んできたプロジェクトの裏側について語ってくれました。この記事の続きを読んで、GDC のセッションで語り切れなかった内容にぜひ触れてください。また、この記事を最後までスクロールしたところに、Creator Spotlight のストリーム全編動画の視聴リンクがあります。

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

環境ストーリーテリング

「昔のゲームにあった驚きや発見、あの感覚を大切にしてきました」と Shouldice 氏は言います。「秘密はたくさん隠されているけれど、説明書に書いてあること以外は何も教えてくれない。しかし、説明書もカートリッジそのものから独立したアイテムとして扱われているという、あの形です」。

Shouldice 氏は『TUNIC』のミステリアスな雰囲気を強調するために、軽いタッチでプレイヤーを誘導することを望んでいました。このゲームでは、説明的な会話ではなく、ゲームプレイを通じて出来事を伝える環境ストーリーテリング(environmental storytelling)を採用し、説明書などの懐かしい要素も遊び心を持って取り入れています。

TUNIC』には、今ではほとんど目にすることのないしっかりとした取扱説明書が付いています。そして説明書のページをゲームの中に取り込み、アイテムとして発見できるようになっています。それを見つけたプレイヤーは、ヒント、地図、敵の説明、隠された宝物を見つけるためのヒントなどを得ることができます。ただし、暗号文を解読し、謎を解き明かしたプレイヤーに限りますが。

「秘密を見つけたときに得られる報酬は、アップグレードや通貨であることもありますが、本当の宝物はクエスチョンマークです」と Shouldice 氏は説明します。「この扉の向こうには何があるんだろう。あの川の向こう側には何があるんだろう。そういう気持ちを呼び起こしたかったんです」。

リンクや選ばれた不死人と同じく『TUNIC』の主人公も多くを語りませんが、それは普通とはちょっと違った意味においてです。ゲーム内のテキストや会話のほとんどは不可解なグリフ言語で表現され、プレイヤーに自分の居る世界とはまったく異なる世界に入り込んでいるような感覚を与えるように設計になっています。プレイヤーは自分の直感と文脈を頼りに、何が起こっているのかを理解しなければなりません。それが『TUNIC』の物語と世界観を際立たせる、新鮮なストーリーテリングを生み出しています。

グラフィックと視点

TUNIC』の世界は明るくポリゴンで描かれており、主にアイソメトリック視点から見た画面となっています。初期のバージョンでは、折り紙のようなブロック状のモデルに、完全にフラットなテクスチャが適用されていましたが、これは当時の Shouldice 氏のモデリング技術を反映したものだったと言います。彼が自信を深めるにつれてグラフィックは進化し、オリジナルの「ローポリ」の美しさを保ちつつ、彼が思い描く廃墟の世界にふさわしい、より詳細なものになっていったのです。

ゲームデザインの観点では、『TUNIC』の秘密の大部分を隠すうえで、平行投影された視点が重要なポイントとなります。「本当に平行投影のカメラを使うと、遠近法で描かれる要素がなくなるので、ジオメトリに関する難しいポイントも回避することができます。その点では何も特別なことはしていません。アイソメトリックな平行投影を使っているので、垂直の線は完璧に揃い、その状態が常に保たれるので、物を隠すのも簡単になるのです」。

Shouldice 氏はこれについてさらに掘り下げてくれました。「ゲーム序盤にある滝の裏に隠し通路があり、そこをすり抜けることができます。有効視野(FoV)のある透視投影カメラだと、これは一目でばれてしまいます。物体が動いているのが見え、遠近感の変化でそこに何かがあることがわかるのです」。

しかし平行投影カメラを使用すると遠近感の問題が起きるので、Shouldice 氏はスケール感を出すためにそれを克服しなければなりませんでした。「崖っぷちから見える巨大な森など、遠くのものを見せるような壮大な演出をしたい場合は、ちょっとした工夫が必要です」。彼は種明かしをします。「カメラスタッキングを使いました。まず平行射影プリズム(平行錐台)を置き、その先に遠景をカバーする透視錐台が接着された形を作りました」。

ライティングとシェーダー

Shouldice 氏は『TUNIC』で最適なパフォーマンスを実現するために、動的ライティンググローバルイルミネーション(GI)を使い、また、ライトの数を慎重に検討しました。「平行投影のカメラではディファードレンダリングがサポートされていないため、ライトの数に注意する必要がありました。ライティングはポイントライトではなく事前計算済みの GI を多く使うようにし、バッチングでドローコールを抑えました」。

以前、Shouldice 氏は手でシェーダーを書いていましたが、『TUNIC』では、Shader Forge のノードベースのシェーダーを使うことにしました。「コードを書くことはできますが、私はかなり視覚に頼る人間なので、ライブのプレビューを見て、空間的に考えを整理できるようになったことで、かなり自由に発想できるようになりました」と Shouldice 氏は続けます。「ノードエディターは、私の脳と実にいい具合にマッチしました。その場でさっと組み上げられて、すごく楽しいです!」

また、Shouldice 氏は、ゲーム世界の要素の装飾にスクロールするテクスチャを多用し、タスクの複雑さを大幅に軽減しながら、豪華な(そしてパフォーマンスの高い)絵作りを実現しました。

ゲームの序盤、『TUNIC』の主人公は、触れると光のパルスを発する像と対話することで、黄金の扉を開くことができます。Shouldice 氏は、Unity エディターと Shader Forge にあるいくつかの種類のコンポーネントを使って、このエフェクトを実現しています。

最初の光の点(「スターバースト」と呼ばれる)は、3 つのアニメーションが付いたメッシュでできており、互いのメッシュがそれぞれ同期しない速さで回転しています。これらのメッシュの周囲にはドーナツ状の「オーラリング」があり、Shouldice 氏はこの扁平な円柱に沿ってスクロールする UV テクスチャを投影することで、テクスチャを外側にスクロールさせて放射状の輝きを作り出します。このエフェクトを作るために UV 座標をスクロールして乗算し、最後に反転させることで、白地に黒のグローエフェクトを生み出しています。

このスクロールするテクスチャをさまざまなメッシュに適用することで、Shouldice 氏はグローエフェクトの挙動を変化させることができました。また、円錐形の細いメッシュにテクスチャを流し込んで、空に向かってエネルギーが集まっていくようなエフェクトを作り出した例もあります。

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

「この特別に作られたメッシュに基本的なエフェクトを適用するという手法について私がとても気に入っていることの 1 つは、UV 座標などを調整することによって、同じマテリアルを異なる方法で動作させることができることです」と、Shouldice 氏は強調します。「今回のエネルギーをすくい上げて空に向かって打ち出すエフェクトは、メッシュ上の UV を近づけたり離したりすることで実現しています」。

この方法で作られたエフェクトの他の例としては、光の粒が空中でエネルギーの流れを感じさせるパターンを描きながら一点に集まり、彫像にぶつかるというものがあります。パーティクルエフェクトやベジエ曲線で実現することもできますが、Shouldice 氏は「ここでテクスチャをスクロールさせたらどうだろう」と、昔からの信頼できる方法に立ち返りました。

この例では、光の軌跡には Blender で作成・UV 化し、ねじり、回転、歪み、複製を加えた非常に長いチューブが使われています。各チューブの表面に沿った UV が設定されているため、柔らかいグラデーションのカラーテクスチャをスクロールさせ、最後にポストプロセッシングで「派手なブルーム」を適用して欠陥を隠すことができます。

こうして作られたエネルギーボールによって、シーン内でイメージした通りの白熱した物体を表現できるよう、Shouldice 氏は色の選定に気を使いました。Shouldice 氏いわく、「すごく彩度の高い色や、完全に飽和した色を試します。ですが、他のチャンネルも影響を与えられるように、彩度を少し下げます。原色の青、赤、緑だけでなく二次色も取り、彩度を下げて、カラーホイールの反対側にある色が少し利いてくるようにします。そうすると、HDR を有効にしたとき、その色が白になってくれます」。

キャラクター操作、戦闘、アニメーション

Shouldice 氏は Unity の NavMesh システムを呼び出して、敵キャラクターとプレイヤーキャラクターの両方の挙動に影響を与えるようにしました。デフォルトでは、敵に NavMesh エージェントを置くと、特定のターゲットに誘導されます。NavMesh は敵の移動先を指示し、物理システムと通信してモンスターを表すリジッドボディが適切に衝突できるようにし、さらにルートモーションベースの挙動を駆動します。

Shouldice 氏も同様に、NavMesh エージェントを使って、ゲーム世界の境界を作りました。NavMesh エージェントが進もうとしている方向をパラメーターを介してアニメーションコントローラーに送っているのですが、彼はその情報を事前に受け取っておくことで、プレイヤーキャラクターが NavMesh から離れないようにしたのです。

TUNIC』のゲームプレイでは、敵の向いている方向が大きな要素となっており、『ダークソウル』風のアニメーションベースの戦闘システムが用いられています。『TUNIC』のアニメーションの多くは Blender で作ったものを Unity に取り込み、アニメーションカーブを使って仕上げられています。Shouldice 氏は、敵のどの部分がプレイヤーに向いて攻撃するか、ヒットボックスはキャラクターモデルのどの部分に接続されるかといったことを細かく制御したいと考えていました。「剣を振って敵に当たらなかったなら、それが確かに敵に当たらないようにしたかったのです」。

このアプローチにより、敵をだまして同士討ちさせるなど、より作り込まれた戦闘の仕組みや、巧みな間合い取りや回避、狙いを定めた攻撃が要求されるボス戦を実現することができます。

Shouldice 氏は、敵やボスがプレイヤーの物理的な位置に対してどのように反応するかをランダムにするデリゲートシステムも作りました。たとえば、ボスの背後に回ると、ボスが子分を出現させる、火を噴く、左右の爪で攻撃しながら突進するなど、その状況で有効になる挙動のうち 1 つが発動されます。

ボスの挙動を制御するコードスニペットは以下のようになります。

                                         if (far) { // FOX OUT OF MELEE RANGE Mathx.Choose( delegate { cachedAnimator.SetTrigger("ACT_freem"); }, delegate { cachedAnimator.SetTrigger("ACT_deployAdds"); }, delegate { StartCoroutine(gunSequence()); }, delegate{ cachedAnimator.SetTrigger("ACT_advancingSwipe"); }, delegate{ cachedAnimator.SetTrigger("ACT_missiles"); }.); }

Mathx.Choose の実装は以下のようになります。

    internal static void Choose(params System.Action[] paramList) { paramList[Random.Range(0, paramList.Length)] (); }

プレイテストと QA で磨きをかける

優れたゲーム開発は、たとえ一人で行う場合でも、まったく外からの影響を受けずに成し遂げられるものではありません。Shouldice 氏は、プレイテストとフィードバックのためのさまざまな手段を模索しました。彼は、自身がその成長に積極的に関与しているハリファックスのゲーム開発者コミュニティの仲間に意見を求め、また、Stugan アクセラレータープログラムの一環として、スウェーデンの他の開発者たちと小さな施設で 2 か月間の合宿を行いました。

Shouldice 氏のパブリッシャーである Finji 社は、彼のプロジェクトを洗練されたゲームにするために、アイデアの相談相手や QA テストのサポートなど、重要な役割を担いました。「ただゲームのパブリッシングを行っていただけ、というのは過小評価と言えるでしょう」と Shouldice 氏は言います。「私たちは従来のプレイテストを行いました。遊んでいる人の様子を後ろから観察したり、プレイの録画を見たりしてね。しかし、Finji 社の特に素晴らしいところは、会社そのものと同じくらいに優秀な QA チームを持っているということです」。

他のプレイヤーのプレイを見たり、Finji 社の QA チームと協力したりすることで、Shouldice 氏はゲームの探索要素を磨き上げ、プレイヤーがフラストレーションを感じたり、次にどこへ行けばいいのかわからなかったりということなしに、『TUNIC』のノスタルジックな世界に飛び込むことができるようにしました。こうした作りに対して、圧倒的な賛辞が送られました。「みんなメールを送ってくれるんですが、誰もが『子供の頃に戻ったような気分になったよ!』と言ってくれるんです...まさに狙い通りです!人々にどう感じてほしいか、紙に走り書きしたアイデアの束が、7 年かけてデジタル化され、バイナリにまとめられたものに、人々がデジタルの反対側の現実世界で感情をあらわにして反応するということは、私にとって魔法のようなことです。ある種の奇跡だとすら感じます」。

インディー界のイノベーターを目指す人へのアドバイス

さて、『TUNIC』を世に送り出した今、次は何をするつもりなのでしょうか。

Shouldice 氏は「集中したかったので、あえて次のプロジェクトのことは考えませんでした」と言います。「たぶん、ちょっとだけお休みします。もしゲームを作るとしたら、小規模なもので、商業的なものでなく、言葉を使ったものになるでしょう」。

最後に、Shouldice 氏は、これからゲームを作ろうとするインディー開発者に向けて、次のようなアドバイスをしました。「今すぐ始めて、自分の作品をみんなと共有しましょう。そして、できるだけ早く、ひどいゲームをたくさん作ってください。自分の中に作りたいゲームの行列ができているとすると、その最初の 100 本くらいは本当にひどいものだと思います。作ってはフィードバックを受け、そこから学び、ただただ前進するのみです」。

TUNIC』は現在、デスクトップ(PC、MacOS)、Xbox Series X|S、Xbox One、Xbox Game Pass Ultimate で配信中です。最新情報や開発者向けのヒントなどをご覧になりたい方は、Twitter で Andrew Shouldice 氏(@Dicey)や @TunicGame をフォローしましょう。また、こちらの Creator Spotlight のストリーム全編もぜひチェックしてください。

このコンテンツはサードパーティのプロバイダーによってホストされており、Targeting Cookiesを使用することに同意しない限り動画の視聴が許可されません。これらのプロバイダーの動画の視聴を希望する場合は、Targeting Cookiesのクッキーの設定をオンにしてください。

2022年5月26日 カテゴリ: ゲーム | 14 分 で読めます

Is this article helpful for you?

Thank you for your feedback!