アンリアルライフで使用したUnityアセット
皆さんこんにちは。個人ゲーム開発者のhako 生活です。
先日、アンリアルライフというゲームを完成させました。
このゲームの制作には4年を費やしましたが、僕はこの4年の中で様々なノウハウを得ました。せっかくなので、できる限り文章化してみんなに共有したいと思ってます。(雑多に書いていくので誤字脱字は大目に見てください…!)
■今回のお話
さて、第一弾はUnityの便利アセットについてです。個人ゲーム開発者は、ほとんどの作業を基本的に一人でこなす必要があります。一定以上のクオリティ・物量を目指すのであれば、どこまで自分でやって、何処からは既存のモノに頼るか、といった線引きも重要です。アンリアルライフはゲームエンジンにUnityを採用していますが、ここまで作れたのはUnityありきだなあと、改めて思ってます。
というわけで、今回はアンリアルライフで使用したアセットの中から、特に便利だったものを厳選して紹介してみようと思います。(基本的には僕の周辺のUnity開発者さんに聞いて回って使い始めたものがほとんどなので、割と主流なアセットが多いと思います。)
もくじ
①ゲーム側のアセット
1. DOTween
2. Rewired (必須)
3. ProCamera2D
4. AnimationImporter
5. ShaderForge
6. PostProcessingStack v2
②エディタ側のアセット
1. OdinInspector (必須)
2. Console Enchaced Pro
①ゲーム側のアセット
1. DOTween
とても有名ですが、まずはこれ。とにかくいろんなものをTweenにしてくれる。特にUIやギミックの動きには必須です。
▼以下にメリハリがつきます。
・UIの動き
・グラフィックのフェードイン、フェードアウト
・グラフィックの色の変更
・音のフェードイン、フェードアウト
・ステージギミックの動き
などなど、挙げたらきりがない…。
単純に一つの動きだけを実装するのも簡単ですが、複数のTweenを組み合わせる機能(
sequence)がとにかく便利。コールバックも簡単。
初心者向け~のように紹介されることが多いんですが、拡張性がめちゃくちゃあるのでドキュメントを読んでいるだけで楽しい。途中再生のシミュレーションや逆再生などもサポートしていたり、やろうと思えば非常に細かな設定ができる(UnityのTimeScaleをいじらずに、DoTweenで動いてるモノのタイムスケールだけ変更するなども可能)のでオススメ
▼DOTweenドキュメント
http://dotween.demigiant.com/documentation.php
▼Tweenの重要性については過去にも記事にしているので気になる方は。
いろいろとEaseの種類を決める基準はありますが、わからないうちはEase.OutSineやEase.OutExpoで動かすのがオススメです。UIの出現をEase.InSineなどにしてしまうと逆にストレスが溜まってしまうので…。
2. Rewired
必須アセットです。コンシューマー対応を考えている個人ゲーム開発者は特に必須です。ゲームの入力周りをサポートしてくれる優れモン。
様々な種類のコントローラーの各ボタンの入力を、自分が設定した"アクション"という命令の単位に変換してくれます。ゲーム側は、"アクション"をインプットとして実装することで、プラットフォームや入力機器別の差分を意識せずに実装できます。
世に出ているコントローラーの多くをサポートしており、個別に設定することもできます。(非純正コントローラーを含む)
キーボード、タッチデバイスにも対応しているし、振動なども対応しています。他にもキーコンフィグ機能などもあって、便利そう。(使いませんでしたが…)
なんといっても、コンシューマー機器のコントローラーにも対応してるのが素晴らしいです。詳しくは言えませんが、泣くほど楽になります。
こちらのアセットも拡張性が高いのですが、拡張は上級者向けな部分も多いです。ちょっと変わったことをしようとすると結構ドキュメントを読み解く必要があります。英語ドキュメント読むのつらい人は特に苦労するかも…。
3. ProCamera2D
2Dゲームのカメラの追いかけや部屋移動のカメラワークなどを簡単にサポートしてくれるアセット。
基本的なカメラワーク処理やパララックス機能などが一通りそろっていて、便利だなあと思う反面、初心者向けに作られているので拡張性は低いです。ドキュメントも開発者向けにはほとんど用意されていないので、アセット開発者と同じ目線でコードをいじらないといけない。僕はいまだにうまくコントロールさせてもらえてないよ…。
時間をかけずにカメラワークを実装したいのであれば圧倒的にオススメ。
4. AnimationImporter
Aseprite使いのドッター向けのアセット。Aseprite側でaseファイルを投げ込むと勝手にAnimationClipに変換してくれます。(Asepriteのタグ名で複数のアニメーションを生み出すことも可能)非常に便利…。
※Asepriteを持っている必要があります。
(記事書き終わってから気づきましたがこのアセットはどちらかと言えばエディタ側のアセットかもしれない。)
5.ShaderForge
ノードベースでシェーダーを作れるツールです。おれはお前が居なかったらこのゲームのエフェクトをこんなに作らなかったよ。
他にもいろいろなノードベースなシェーダーエディターがありますが、ShaderForgeはテクスチャではなくスプライトに対応するシェーダーもサポートしています。2Dゲーム開発者にとっては非常にありがたいところですね。
シェーダーを手書きで作るのもいいとは思いますが、常時プレビューしながら作れるので、直感的に作りたいエフェクトを作れます(必要であればそれを手書きで最適化すればいいし…)。特にグリッチシェーダーやポストエフェクトを作るときはおすすめです。
ただし、ブラー表現など、隣接ピクセルを明示的にたくさん使用するエフェクトの制作にはお勧めしません。手書きシェーダーを使ってループで取得した方が早いですからね…。
残念ながら今は既にサポートが終了していているので、自分のUnityバージョンで使えるかはチェックしておきましょう。今のところ有志の方々がアプデしてくださってるようで、2020年現在は使えてます。感謝。。
6. PostProcessingStack v2
アセットというよりUnityプラグインですが、3Dなどで使える最強のポストエフェクト機能です。アンリアルライフの美しさはこのプラグインが肝になっていると言っても過言ではありません。
Unity標準のPackageManagerからインストール可能です。使い方はいろんな人のブログを見てみると良いかも。
彩度調整、ブルーム、色収差、ヴィネットなどの様々な効果をかけることができます。
▼比較(解像度を変えて刷り硝子処理なども入れてるので単純な比較にはなりませんが…)
ちなみに、PostProcessing Stack v2のデフォルトでは実行時にブルーノイズが走るようになっています(おそらく光の拡散の表現のため)、ただ、ドット絵のゲームでは結構目立つチラツキになるので、ディザリング内のブルーノイズ処理を意図的にコメントアウトすることでピクセルアートに最適化できます。
②エディタ側のアセット
1. OdinInspector(必須)
UnityのInspectorは元々便利ですが、導入するだけでInpectorを50倍ぐらい使いやすくしてくれる優れモンがこのアセットです。(エディター拡張の知識は要りません。)全開発者が全プロジェクトに入れるべきだと僕は思っています。
Listを入れ替え可能にしてくれたり、タグ一つ追加するだけでメソッドを実行するボタンをつけたり、enumの値を検索できるようになったり、インスペクタ上でTextureのプレビューができるようになったり、とにかく痒いところに手が届くアセット。
▼コガネブログの使い方がかなりわかりやすいですね。
https://baba-s.hatenablog.com/entry/odininspector
拡張性も非常に高く、Editor拡張コードの知識と組み合わせることも可能です。例えばenum検索のポップアップを自分のEditor拡張コードで使えたりもします…。なので、エディター拡張できる人にとっても嬉しいアセットです。
2. Console Enchaced Pro
Unity標準のConsoleのちょっと上位互換です。これも必須アセットかな。
コンソールの出力結果から、指定した文字列のフィルタをかけられます。
(ちなみに類似アセットとしてEditor Console Proも人気ですが、こちらもあまり差はないので、そちらを使用している方はそのままでOKだと思います。)
■今日のお話はここまで
今回はUnityの便利アセットを紹介してみました。一つ一つは結構ざっくりと紹介しているので、気になったモノは他の方のブログなどを参考にしてみると良いかもしれませんね。
じゃあ、おはなしのつづきはまた今度。