もうソレ何番煎じ?Unity、UEの比較

こんにちは、やまだたいし( やまだ たいし (@OrotiYamatano) | Twitter )です。
これまでUnity、UEの比較記事が大量がありました。
しかし、どちらも(平等ではなく)公平に語られてないような気がします。
なので、私が出来るだけ公平に答えたいと思います。
本当はTwitterに載せようと思ったのですが、思いの外、長くなったのでブログにしました。
思いついた順で書いてるので読みにくいかも知れませんが、ご承知ください。

目次


一番最初に言いたいこと


意見が私が偏ってないと言い張る理由は、業務で半年以上UEを使っていること、
Unityもゲームをリリースする程度には触ってきたことです。
強いて言うなら、UEよりUnityの方が触っている期間が長いので肩を持ってしまっています。
(後、Unityゲーム開発者ギルドに入ってしまっているので……)

しかしながら、UEも半年は触ってきたので色々述べられるところがあると思います。

後、これだけは言っておこうと思います。

そもそも、それぞれ利点欠点があるので比較するものではない!

では、早速つらつらと比較していこうと思います。

本文


まずUnity、マルチスレッド、イベントドリブンの考え方はUniRxなど外部ライブラリの力を使わないと使えないので、そういった実装がやりづらいのが難点ですね。
UnityではモノビヘイビアとC#の力で色々制御されているのでユーザー(エンジンの使用者。以下ユーザー)が色々違反したように書けないのが良いです。
(DOTS?しらんな……)

UEは自由に書けすぎてしまうのが難点ですね、イベントドリブン、マルチスレッドは出来ますが、全てをユーザー側で厳密に管理しないといけないです。
設計思考がチームごとに厳密にないプロジェクトも多いと思うのでカオスなコードが出来上がりやすいです。

UEは命名規則もあることから、ルールでなんとかしようという取り組みがあるのが伺えます。


グラフィックはUEに軍配。様々なツールとのやりとりが出来たり、確認がしやすいのが良いですね。
Unityも頑張ってきてるのでココはなんとも言えないです。
Unityは前まではパイプラインまわりがいじれなかったのにイジれるようになったりもしたので良いですね。
後はポストプロセスをもう少し頑張って。


システムについて
Unityはユーザー側で色々考えて実装したり、ライブラリを買ったりして実装することが多いですが、
UEはデバッグコマンドやベースシステムが組み込まれてるのが良いですね。
Unityだとデバッグコマンドなどは自前実装するか、ライブラリを買うしかありません。
UEは日本語資料を増やせとは言わないので、総量として英語だけでもドキュメントを頑張って欲しいです。

Unityのシステムは基礎しか無いので自分で考える必要がありますが、
逆にその基礎は色んな会社で触られるからか、ユーザーのWEB記事が充実してます。
UEはこんなの誰が使うんだ?という機能が多すぎます。
使えない機能はなくして……。


Unityはある程度のPCスペックでエンジンが動くのが良いです。
どの環境でもほぼ同じように動く!
UEは思い通りに動かないことが多いのでイライラします。
しかしながら、UEはエンジンからサワれるので色々カスタマイズしやすいのは利点ですね。
Unityのように色々組み込み方を覚えずに済む。


コードビルドはUnityが軍配ですかね。
IL2CPPだとUnityも時間がかかりますが、UEは通常のコードビルドも結構かかってしまうのが難点です。
ただ、UEはノードベースのBlueprintはビルドは爆速で確認のイテレーションが回しやすいので
BlueprintだけのプロトタイプならUEが早く作れて良いかも?
UEのパッケージング周りは私は、あまり触ったことがないのでソコに関しては割愛。


2D処理はUnityが軍配ですね。
3DはUE。
UEはアニメーション周りが充実していて使いやすいです。
Unityは結構ネイティブ的な使い方っぽい感じがしますが、私があまり機能を知らないだけの可能性もあるので、深くは語りません。
Unityは外部のアセットになるのですが、色々2Dのアセットが充実していて動きを作りやすいのがいいですね。


個人的には初心者にはUnityをおすすめします。
ポインタ周りは初心者には辛すぎる。
UEのBlueprintだけで実装する手もありですが、スケールアップしていく中で
UEは参考資料も少なかったり、色々弄りたくなると思います。
ゲームプログラマを目指すなら、そのぐらい頑張れ!」と言いたい方もいると思いますが、
本当の初心者例えば小学生や中学生がポインタの概念を理解するのは辛いと思います。
最初作ったそのままの感覚で進められるUnityの方が強い。

しかしながら、大規模開発はUEで行われることが今は多いので、大規模コンシューマーに関わりたいなら勉強していて損はなさそう。


後、最初から大規模予定ならUEでも良いかも。
大規模開発に向いてる。
Unityは小規模チーム開発に向いてるかも。
どちらも少人数、大規模が出来ないわけじゃないですが……
どちらも同程度に使えるならという前提なら私はそう思います。

まとめというか、感想というか一言


公平に語ったつもりですが、賛否両論あると思います。
どちらが優れているとかは無いと思います。

作るのは開発者であってエンジンは手段でしか無いです。
状況に応じて判断すべきで、どちらが良いかとは一概にいえないと思います。

Unityエンジニアだから、UEエンジニアだからって現状を嘆いたり、相手を悪く言う必要はないと思います。
というか、どちらも触っている私に精神衛生上に優しくないので、なかよくしてください。

以上です。