4.5K Views
September 14, 24
スライド概要
ゲームプログラマー┃C#┃C++┃Unity┃Unreal Engine┃Google Apps Script┃Git
Unity 使いが Unreal Engine 5 を使って 驚いた事まとめ 株式会社 ModelingX 橋本翼 @tsubasamusu
自己紹介 通信制高校生時代にオンラインプログ ラミングスクールで Unity を勉強 高校卒業後に株式会社 ModelingX に就 職し、Unreal Engine を用いて MELIFE を開発(社会人2年目) 休日も趣味でゲームを制作し、そこで 学んだ事を技術ブログにまとめている (作った作品のソースコード等も全て ブログにあります) ツバサムスBlog
MELIFE 実在するモデルハウスをスマホで内覧できるバーチャル住宅展示場。 UE5 で開発。 ※実際にスマホで画面録画したものです
情報量 Unity:約10億6千万件 Unreal Engine:約9480万件 Unity 入門:約260万件 UE 入門:約33万8千件
ソースコード Unity は Unity Pro(年間約30万円) と Unity Enterprise(年間約45万円) のみソースコードを見れるため、基 本的には自由度の高いエンジン拡張 できないが、簡易的なものなら出来 る。 Unreal Engine は何もプランに加入 する事なくソースコードを見れるた め、気軽に自由度の高いエンジン拡 張できる!
容量・動作 基本的に Unity は軽く、PC の推奨 スペックも低い。 モバイルゲームや Web ゲーム等で 良く利用されている。 Unity 2022.3.28f1 Unreal Engine は重く、PC の推奨 スペックも高い。 PC ゲームやコンソールゲームで良 く利用されている。 UE 5.3.2(ランチャー版)
グラフィック 基本的に Unity は静 的なライティングに するか、URP や HDRP でないとあま り綺麗ではない。 © Unity Technologies Japan/UCL Unreal Engine はデ フォルトで美しく、 ライティングに詳し くなくても綺麗に出 来る!
設計思想 Unity はゼロの状態から必要なもの のみを追加していくという設計思 想。 Unreal Engine は既にたくさん用意 されているものの中から必要なもの を探して利用するという設計思想。
差分の確認 .unity や .mat 、.meta 等の、テキ ストエディタで正常に開けるファ イルが多く、スクリプトでなくと もファイルの差分がなんとなく分 かる。 ほぼ全てのファイルが .uasset か .umap で、基本的にテキストエデ ィタで開いても文字化けしてしま うため、外部の差分確認ツールで は差分が分からない事が多いが、 内部の差分確認ツールで確認でき るファイルもある。
アセットの整理 1 つのフォルダやファイルに対して 必ず 1 つずつ作成される .meta ファ イルも一緒に移動すれば大抵の場合 はなんとかなる。 基本的に他のファイルに参照されて いるファイルやフォルダを移動/改名 をする度にリダイレクタを修正しな ければならない。
オクルージョンカリング 対象のゲームオブジェクトの可動性 を Static にして、事前に手動でベイ ク(計算)する必要がある。 デフォルトでオクルージョンカリン グが有効になっており、特に何も意 識する事なく無駄な描画を無くして くれる。
三次元空間における座標 Unity は上が Y で前が Z 。 距離は m 単位。 Unreal Engine は上が Z で前が Y 。 距離は cm 単位。
メッシュのマージ(ベイク) Simplygon や MeshBaker 等の外部のプラグインを使用する か、Mesh.CombineMeshes() を利用 したエディタ拡張をする必要があ る。 追加のプラグイ ン無しでエディ タ上で簡単にマ ージ(ベイク) 出来る!!
メッシュの頂点数の変更 Unity も頂点数を削減できなくも無 いが、基本的にはメッシュの圧縮率 を低/中/高から選ぶだけで自由度が 非常に低い。 スタティックメッシュエディタから 簡単に頂点数を削減できる!! 自由度も非常に高い!
シングルトンパターン 基本的には GameInstance クラスが 似た役割を担ってくれる。 (サブシステムを利用するのもアリ)
プロパティ 現状、ブループリントも C++ もそれ ぞれ関数を作成するしかない。
CS0161(値を返さないじゃんエラー) Unity は全ての条件分岐において適 切に値を返さないとエラー。 C++ ではエラ ーが出るが、 ブループリン トではエラー が出ない。
null エラー ブループリントでは null エラーでク ラッシュする事は無いが、C++(ポイ ンタ)ではクラッシュする。 Unity では null エラーが出ても基本 的にクラッシュする事は無い。
インターフェース 対象のクラスにインターフェースを 実装するか、インターフェースに型 変換する必要がある。 メッセージ版のノードの場合は型変 換しなくても接続できる。 (対象のインスタンスのクラスがそ のインターフェースを実装していた ら関数を呼び出すが、実装していな かったら何も行わない)
最後に 他にも驚いた事や Unity 勢が覚えておいた方 が良い事などはたくさんありますが、気にな った方は実際に Unreal Engine を触ってみま しょう! 「Unity と Unreal Engine のどっちの方が優 れている?」といった事ではなく、それぞれ に長所と短所があるので作りたいゲームに応 じて使い分けるのがベストだと思います! 最後までご清聴ありがとうございました!