Unity を検索

『Skul: The Hero Slayer』の冒険を鮮やかに描き出す 2D Pixel Perfect

2021年1月21日 カテゴリ: テクノロジー | 9 分 で読めます
取り上げているトピック
シェア

2D Pixel Perfect によって、Unity の 2D チームはクリエイターが鮮明でクリアなピクセルアートを、幅広いデバイスでの表示を意図してさまざまなサイズで簡単に作れるようにしたいと考えています。SouthPAW Games のチームが初のピクセルアートスタイルのゲーム『Skul: The Hero Slayer』に着手した時、チームはこの美しい 2D ゲームを作るために役立てようと、数多くの Unity の 2D ツールを使い込みました。

Unity 2D ツール

SouthPAW Games は Unity の 2D Tilemap、2D Pixel Perfect、スプライトアトラスを使って、この非常に出来の良いローグライトゲームを作った。

スケルトンに命を吹き込む

Skul: The Hero Slayer』は、2D のローグライト(プレイごとにゲームの内容が変わる)アクションプラットフォーマーで、「Skul」という名前の小さなスケルトンの守衛が、彼の使える悪魔の王を救うために、敵の冒険者や帝国の軍隊と戦う旅を始めるという物語になっています。2017 年に設立された SouthPAW Games には現在 8 人が所属しており、元々は韓国の全南(チョンナム)大学校のゲーム開発クラブに所属していたメンバーが立ち上げた会社です。同社は Unity 3.0 でゲーム開発を始めてからずっと Unity を使い続けています。『Skul』は、同社が初めてピクセルアートスタイルのゲームとして開発したタイトルになります。プレイヤーが敵を食べたりボスの特別な武器を使って能力を得るというアイデアは、『星のカービィ』や『ロックマン』のような昔のプラットフォーマーから借りてきたものです。ユニークな属性やスキルのセットを持つさまざまなキャラクターとペースの速いバトルを重ねていくという『Skul』には、これらのゲームの影響が感じられます。

本作のディレクター兼アニメーターを務めるパク・サンウ(Sang-u Park(PAW))氏。チームには他にも、プログラマーが 4 人、背景アーティストが 2 人、キャラクターアーティストが 1 人在籍している。

Skul』のチームは 2021 年上半期の正式リリースを目指して、開発を進めています。継続的にアップデートを重ね、ゲームは現在 Steam のアーリーアクセス版で、非常に好意的なレビューを受けるようになっています。私たちがチームに取材した時点で、700,000 人を超えるユーザーがこのゲームをウィッシュリストに入れていました。

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

2D Pixel Perfect を設定してビジュアルを制作する

SouthPAW Games は、最新の長期サポートバージョンである Unity 2019.4 LTS を使用して、『Skul』の開発を行い、グラフィックスにはユニバーサルレンダーパイプライン(URP)8.10 を使用しました。2D Pixel Perfect パッケージは、URP パッケージの 2D レンダラーに同梱されているものを使うこともできますし、あるいはパッケージマネージャーからも入手可能です。このパッケージでは、ピクセルアートが解像度が変わっても鮮明でクリアなまま表示されることを保証し、オブジェクトの移動、回転、拡大縮小をピクセルグリッドのパターンに従うようにする Pixel Perfect Camera コンポーネントを使うことができます。このコンポーネントは、解像度の変更に伴うビューポートの拡大縮小に必要なすべての計算を自動的に行います。ピクセルアートを使用する際には、すべてのアセットの解像度をゲーム全体で一貫したものにすることが重要であることに、開発の初期段階でチームは気づきました。「事前制作時の基準解像度は私たちのニーズに対して高すぎることが判明し、結果的に細かすぎるグラフィックリソースを作ってしまっていました。最終的には、すべてのビジュアルリソースを再作成しなければなりませんでした」と述べています。チームは最終的に、PPU(ユニットあたりのピクセル数)を 32 とする設定に落ち着きました。また、タイルマップのグリッドもタイルあたり 32×32 ピクセルの設定として、さらにゲーム内距離の 1 単位をタイル 1 枚と等しいものとして扱うようにしました。

Pixel Perfect Camera コンポーネントとゲームオブジェクトの Sprite Renderer の設定

基準解像度は 640×360 ピクセル、背景の最大の高さは 400 ピクセルとしました。どの解像度でも鮮明なグラフィックが維持されていることを確かめるために、ゲームビューを使って表示を確認したほか、スペックの異なる PC でもテストを行いました。

Pixel Perfect Camera の機能によって基準解像度をスケールアップして、レトロなスタイルのグラフィックでも現代のスクリーンで美しく表示されるようにする。画面全体に表示する時は、ユーザーの設定に合わせて、黒いバーを表示したり、ビューポートを拡大したりする。

プロセスをできるだけシームレスにするために、チームはまず基準となる比率でラフなバージョンを作り、形と色の感覚をつかみました。次に、コンセプトアートを制作する段階でアイデアを持ち寄って議論を行いました(画像 1)。キャラクターが固まった後、アニメーションのプランを練り、画像 2 に示すように、キーフレームをスケッチしていきました。

その後、キャラクターの能力やスキルのプログラミングを開始する前に、動きやサイズを確認するためにプロトタイプを作成します(画像 3)。最後に、アニメーションを作成するために AnimationImporter プラグインを使用して、Aseprite アセットを Unity に取り込みます(画像 4)。ハックアンドスラッシュのアクションエフェクトや、敵を倒したときに鎧や武器などのオブジェクトが弾け飛ぶ様子など、他にも多くの要素が『Skul』の見た目と雰囲気に貢献しています。また、2D 物理演算は、こうした演出をリアルに感じさせるのに役立っています。ディレクター兼アニメーターのパク・サンウ(Sang-u Park(PAW))は「私たちはこれらのオブジェクトを『パーツ』と呼んでいます。各パーツのスポーン位置はスプライトに表示されているものと同じで、まるで敵から落ちているかのように見えるようにしています。また、プレイヤーはパーツを叩いて打ち返すこともできます。各パーツには、現実世界と同じように自重と回転力があります。」回転するオブジェクトについては、Unity で直接スプライトを回転させることもありました。また、回転角度ごとにスプライトを作成してシーケンスアニメーションを作成することもありました。

「回転する角度ごとにスプライトを作成して、意図したビジュアルを実現すると、確かにクオリティは高くなりますが、その分コストも高くなります。回転させるスプライトがある場合は、その見た目や役割などをよく考えて、どの方法を採用するかを決めています。」

2D Tilemap Editor でステージを設計する

Skul』の開発において、チームはワールドのタイルマップを「Terrain」、「Terrain Foothold」、「Platform」の 3 種類に分類しました。プレイヤーは Terrain のタイルを通り抜けられません。Terrain Foothold のタイルも通り抜けられませんが、プレイヤーは上に乗って動くことができます。Platform のタイルはプレイヤーが通り抜けることができます。例えば、下からジャンプして飛び越えたり、上から飛び降りたりすることができます。チームはタイルのクラスを継承して、タイルの種類の分類と設定を行うスクリプトも作成しました。

PAW 氏は次のように説明します。「タイルパレットを使ってタイルを生成しました。また、タイルパレットの提供している機能もたくさん使いました。また、Tilemap Collider 2D を 1 つの Polygon Collider 2D にバインドすることで、コライダーの最適化も行いました。」 

タイルパレットを使うことで、API を完全に制御しつつ、視覚的かつ直感的にマップを構築することが可能になった。また、<a href="https://docs.unity3d.com/ja/current/Manual/class-CompositeCollider2D.html" target="_blank" rel="noopener noreferrer">Composite Collider</a> コンポーネントを使い、コライダーの最適化も行っている。

パフォーマンスや効率などを向上させるためのヒント

スプライトアトラス

スプライトアトラスを使うことで、パフォーマンスが大幅に向上しました。同じマップに存在するスプライトをまとめてパックすることで、ドローコールを削減したためです。当初、チームはドローコールとメモリ消費の最適化に焦点を当てていましたが、すぐに、1~2 fps(コマ/秒)のパフォーマンス向上を図るよりも、ゲームをより楽しくすることに注力するようになりました。また、プロジェクトの構造がテスターや自分たちにとって確かに便利なものとなるように時間を費やすようにしました。「2D ゲームなので、システム要件はそこまで高くありません。ゲームの性能をある程度最適化すれば、スマートフォンでも簡単に動作するようになりました」と PAW は述べています。

ビジュアルエフェクトは、ピボットポイントを中心としたアニメーションのスプライトの周りに空きスペースを入れる形で作られ、各フレームをアニメーションに適した位置に収めやすいようになっていた。

2D 物理演算

Physics 2D は、静的オブジェクトと動的オブジェクトの衝突に使用されました。ビジュアルエフェクト(破片のエフェクトなど)に使用される動的な衝突では、Physics 2D の精度設定を下げてもゲームプレイに直接影響を与えることはありませんでした。プレイヤーの動きなど、直接的なゲーム体験に関わる、高い精度を必要とする要素については、チームは 2D レイキャストやコライダーのキャスティングなどの機能を使用して、ゲームロジックの一部を計算しました。

その他のトリック

SouthPAW Games は Unity エディターを拡張し、チームがコードを変更せずにほとんどの Unity 機能を編集して使用できるようにしました。また、Unity プロファイラーは CPU のボトルネックを特定する上で重要な情報を、フレームデバッガーは描画をチェックした情報を提供します。チームはこれらのツールから得た情報に基づいてゲームを継続的に改善することができました。リソースの節約のためにここまで述べたことの他に、チームが取った対策には以下のようなものがあります。

  • ビジュアルエフェクトを小さな部品に分け、出力先に応じてさまざまな部品を組み合わせるようにした
  • 大きさ、向き、色などの属性を変えて、新しいエフェクトのように見せた
  • URP と 2D レンダラーに追加されたデフォルトシェーダーを使って、使われていない機能をプロジェクトから削除した

その他の 2D ツールやカスタム拡張

プロジェクトが始まってから、いくつかの 2D ツールがリリースされました。チームはそれらのツールをプロジェクトで活用することはできませんでしたが、2D Sprite Shape、2D Lights、Sprite Tools には強い関心を抱いています。「これらのツールは、自分たちで導入するには複雑すぎた上に、最適化するのが難しいと感じました。また、完全に信頼できるサードパーティ製のツールはありませんでした。ただ、一部のツールは Job System を利用しており、うまく最適化されていると聞いています。このような便利な公式ツールを今後利用できることを楽しみにしています。」2D ゲームのファンとして、SouthPAW Games のチームは 2D ツールに関する Unity のリリースとアップデートを好意的に捉えています。また、チームは 2D ツールが提供する API を多数使用して、アーティストがコードを変更することなくゲームの反復修正ができるような拡張機能を作ったとのことです。

アーティストは『Unity エディター拡張入門』で紹介されている <a href="https://anchan828.github.io/editor-manual/" target="_blank" rel="noopener noreferrer">SpriteAnimationPreview</a> を使用して、フレーム単位のアニメーションのプレビジュアライズしている。

もう 1 つ便利だったツールが、インポートしたアセットに事前に設定した設定を読み込むことができるプリセットシステムです。ゲームアイテムやキャラクターを一貫した方法によって作成する時に便利です。

開発チームは、プロジェクトフォルダーへのショートカットを作成して時間を節約した。加えて、関連情報を含む新しいプレハブを作成するオプションと、プレイヤーの位置にアイテムをドロップするシステムを備えた武器システムを構築した。

医師のようにレビューし、大きな仕事を成し遂げる

SouthPAW Games は、Global Indie Game Development Contest(GIGDC)で初めて『Skul』を披露し、大賞に輝きました。そして、Unity Clinic(Unity Korea が提供するサービス)に参加する権利を獲得したのです。Unity Korea は Unity Clinic のセッションを通じて開発チームにフィードバックを提供するため、SouthPAW Games のある光州(クァンジュ)にチームを派遣しました。ここで、『Skul』チームは Unity Clinic チームと共にプロジェクトのパフォーマンスをレビューし、プロファイリングの基本を学びました。

SouthPAW Games にとって、『Skul』の正式リリースは長い旅の通過地点に過ぎません。彼らは今後もプレイヤーの声に耳を傾け、自分たちが思い描いていた『Skul』を実現するまでゲームのアップデートを重ねていきます。チームとは、Steam コミュニティDiscordTwitter でつながることができます。

その他の 2D に関する Unity のリソース

Unity では、2D ワークフロー用に最適化されたネイティブなツールを開発しています。このツールはラウンドトリップを減らし、生産性向上を加速させ、プラットフォームを超えて見事な 2D の世界に命を吹き込む力をチームに与えます。2D ツールのページで、その一部をご覧ください。ピクセルアートに関心のある方は、レトロな 8 ビットゲーム16 ビットゲームのグラフィックスを当時のスタイルのままに実現する方法のガイドもぜひご覧ください。2D ピクセルアート、パフォーマンス、生産性に関するヒントをさらに知りたい方は、下の Unite Now セッションの動画をご覧ください。

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

2021年1月21日 カテゴリ: テクノロジー | 9 分 で読めます
取り上げているトピック