Unityでインディゲームを作る!

Unityでのゲーム制作を目指し、それに関わる話題についてのブログ

2020年を迎え、これからのUnityについて考える![Unity 2019.3]

 2020年を迎えて、Unityのこれからの展望、新機能などについてまとめていきます。と、この記事を書いている時に、待ちに待ったUnity 2019.3の正式版が発表となったのでいいタイミングでした。

(※日本語版は近日公開予定) 

 

 Unityの今後については非常に明るいもので、2019.3で実装されたものや今後予定されている新機能はマジで期待の高いものばかりです。なので、Unity触りたいけどまだ触れてない、これから使ってみたい!という方はボチボチ準備を始める時期かもしれません。後述しますが、ここ数年のUnityは刷新の時期に入っていて、特に2020年は大きな変化がある年になるはずなので、いつやるか?今でしょ!です。

 

 今回の記事では、Unity2019.3以降、あるいはUnity 2020以降についての注目すべきところを書いていきます。

 

Unity 2019.3について

 もう既に2020年になっていますが、Unityはまだ2019.3が出たばかりという段階で、多少の開発の遅れがあるかもしれません。詳しくは知りませんが、機能が増えたり、一新されるということでいろいろ困難があったようです。(2019.4が長期サポート<LTS>となり今春公開予定)

 

 2019.3の大きな目玉がUnityエディターの改定です。見にくさ、使いにくさに定評のあったUnityエディターですが、いよいよ手が加えられます。

f:id:miur-us:20200130135405j:plain

 分かりやすいところで言えば、上画像のようなアイコンも刷新され、より作業効率が改善されるような抜本的なもの。

 

 他にはVFX Graphが正規版となり、Shader Graphとの連携機能も追加されます。VFX Graphというのは要はGPUパーティクルであり、従来のシュリケンとは違い、GPUの処理能力を利用し、より大量のパーティクルを描写することで、更なる視覚効果を得ようというものです。

 

 LWRP, HDRPを含むSRPといったレンダリングをカスタマイズできる機能は近年のUnityの中でも大きなトピックですが、Shader graphを含め、2D機能が強化されたことにより、よりグラフィックが強化された2Dゲームの登場が期待されます。Unityの2Dゲーとしては質、内容共に高いホロウナイトなどがありますが、2Dゲームエンジンとしての更なる進化に期待です。

 

Universal Render Pipelineについて

f:id:miur-us:20200130133429j:plain

 Light Weight Render Pipelineとされていたものが、より適切な名前に、ということでユニバーサル・レンダー・パイプラインと改称されます。中身はLWRPの延長線上にあるものですが、より改良がくわえられた形で2019.3で導入となりました。

 最終的な画面に効果を加えるポスト・プロセッシング機能が改良された上でURPに統合され、従来のレンダリングよりも負荷が少なくなるとのことです!

 こちらの動画は英語のみで30分を超える内容ですが、URPが詳しく解説されており、デモを見るとUnityでこんなグラできるんだ!という驚きがあります。

 

 フォトリアル向けのHDRPも2019.3から正式導入なのですが、自分を含めたインディーゲーム制作者にとっては、URPでも十分すぎる美麗なグラが出せるようなので、とりあえずURPをうまく使えるよう学習を進めていきたいところです。

 

Unity 2020以降について

 まだ試験段階の機能がいろいろと多いUnityですが、特にUnityの問題点であったパフォーマンスを改善するであろうDOTSは待ち望まれる進化です。

Data Oriented Technology Stack

の頭文字をとってのDOTSドッツ)となります。

 しかし、データ指向とはなんでしょうか?今現在の自分のざっくりとした理解としては、いわゆるオブジェクト指向は人間の認識においては都合がいいが、コンピュータにとっては扱いにくいので、コンピュータにとって都合が良い、より簡素なデータの集まりとしてゲーム内のオブジェクトを定義して、効率的に処理を行えるようにしよう、という考え方のようです。(違ってたらすいません!)

 

 DOTSはいくつかの技術を集積したものです。Entity Component System、JobSystem、Burstといった複数の新技術を使い、より高いパフォーマンスを出そうというシステムになります。

 

 Unityでは『存在』の単位としてGame Objectが用意されていますが、DOTSにおいては、Entity(エンティティ)が準備されています。DOTSにおいてはオブジェクト達はEntityとコンポートネント・データが織りなす、シンプルなデータテーブルとして表現され、コンピュータがよりアクセスしやすく処理しやすいデータ構造になる!という感じです。

 従来のゲームオブジェクトだとオブジェクト単位でアクセスしていく必要があったのが、DOTSではEntityのデータはより単純なデータ列として扱われるので、CPUにおけるキャッシングを活用できるようになります。つまり、まとめてアクセスし、まとめて処理することが出来るようなるとのことです。

 ここら辺の理解については、CPUやメモリ回りの知識が必要になるので勉強中ですが、正式導入が楽しみでなりません。2019.3では、DOTSについてより分かりやすいサンプルプロジェクトも公開されるようです。

 

 また実験的な機能であった、Incremental Garbage Collectionも2019.3で正式機能になったようで、これもまたUnityで顕著であった、一瞬フリーズする現象を打開するものでこれも喜ばしい改善になります。(GCを一回のフレームでなく、複数に渡って少しずつ処理することで瞬間的な負荷を減らす機能)

 

 Unityはスクリプト言語としてC#を採用していますが、わかりやすい言語である代わりにC++などと比べると動作が重くなってしまう問題点がありました。DOTSを活用すれば、C#で書かれたコードでも高いパフォーマンスが出せるようになるみたいなので、ぜひとも押さえておきたい新機能ですね!読み書きし易く、しかも速いなんて最高!!

 

Unityの未来

 主な変更点、新機能の中でも自分が気になった所だけ書いたので、まだまだ他にも大きなモノがたくさんありますし、他のトピックについては随時このブログで触れていきたいと思います。

 

 繰り返しになりますが、Unityの未来は非常に明るいものだと確信しています。現状、エンジンとしては完成度の高いUnrealの方が、より高度なゲームが作るのに向いていることは間違いないのですが、それは当然Unrealが完成しきったエンジンであるからで、Unityはまだまだ発展途上の存在です。

 更に現実問題としては、Unityが予定している機能を実装しきって新世代のエンジンとなるのはまだまだ時間が掛かるというのが、正直な所でもあります。

 

 しかし、近年では質の高いUnity製のゲームやアプリが出回りつつありますし、その将来性を信じて、日々いちユーザーとして準備を進めていきたい!というところで、書き終えたので早速2019.3を触ってきます!!