Unreal Engine 5に入門してみた
IT技術
はじめに
以前からUnreal Engineに興味があり、これを使ってゲームを作ってみたいと考えておりました。
また、大規模アップデートのUnreal Engine 5が登場してからしばらく経ち、情報も集まってきたので、「入門するなら今だ!」と思い、この記事を執筆させていただきました。
今回は、Unreal Engine 5を実際に触ってみて、個人的に気に入った点を中心に紹介しようと思います。
Unreal Engineとは?
Unreal Engineとは、Unityのようなゲームエンジンの1つで、非常にリアルなグラフィックのゲームを作ることができます。
非常に美麗なグラフィックスを、しかもゲームに使えるほど高速にレンダリングすることができるので、ゲームだけにとどまらず、映画用のCG映像の制作などにも使用されています。
幅広い用途・業界で使用されているので、Unreal Engineという名前には聞き覚えがなくとも、もう既に皆さんもUnreal Engineで制作されたゲームを遊んだり、Unreal Engineを利用して制作されたムービーを見ているかもしれません。Unreal Engineで制作されたゲームで言えば、「フォートナイト」などが有名です。
2022年には大規模アップデートのUnreal Engine 5が登場しており、機能が大幅に強化されています。
使い心地はどう?
実際にエディタを見ていただいた方が早いので、まずは実際のエディタの画面を見せようと思います。
上部にゲーム画面のプレビューがあり、そのすぐ横に現在のゲーム画面で使用されているオブジェクトとプロジェクト自体の設定などが表示され、プレビューの下にこのゲームプロジェクトで使用しているファイルが表示されるようになっています。
上記の画面はあくまでも一例であり、自分が使いやすいようにカスタマイズすることも可能です。自分の好みやゲームの内容に応じて変更できます。また、エディタの画面はゲームのプロジェクトを作成してからも変更可能なので、「デバッグの時だけプロジェクト自体の設定を大きく表示する。デバッグが終わったら元の大きさに戻す」といったこともできます。
Unityなど他のゲームエンジンを使ったことがある方なら、特に操作に迷うことはないでしょう。
今回作成するゲーム
今回作成するゲームは以下のようなものです。
- ジャンルはシューティングゲーム。砲台を操作して、相手のモンスターに攻撃する。
- 相手のモンスターに弾を一定回数命中させればクリア。
- 相手のモンスターは動くだけでなく、テトラポッドを投げてくる。テトラポッドは弾を当てれば爆発する。
- テトラポッドは海上を浮遊しながらこちらに向かってくる。波に乗りながらやってくるので、それも考慮して当てなければならない。
- テトラポッドがこちらにやってきて、岸に到達すると停止する。停止したテトラポッドの数が20個以上になるとゲームオーバー。
使ってみてよかった点
今回Unreal Engineを触ってみて、特によかったと感じる点を4点ほど挙げさせていただきます。
①とにかく絵がきれい!
今回作成したゲームのデモ画面は以下になります。
モンスターや砲台、ブロックの影や岸の質感、波の様子などが非常にリアルに描かれています。しかも、ここまでのグラフィックを作るために、シェーダーなどの設定は特にしていません。「複雑な設定をしなくとも美麗なグラフィックを作れる」というのは大きな強みです。私自身、「こんなにグラフィックが綺麗だなんて!」と作りながら感動してしまいました。
②Blueprintが強力!
Unreal Engineでゲームのロジックに使用できる主なプログラミング言語はC++言語ですが、C++以外にもう一つ、Unreal Engineでは「Blueprint」という機能で、コードを書かなくてもゲームを作ることができます。Scratchのようなものといえば分かりやすいかもしれません。
Blueprintの画面は以下のような感じで、各ブロックにピンがついており、ピンとピンをケーブルで繋ぐことでデータや処理の流れを表現します。プログラミングをやったことのない方でも容易に編集可能で、処理の流れも視覚的に分かりやすくできます。
以下の画像は上のBlueprintの画面の中からブロックの1つを拡大したものです。白いピンにケーブルを繋げることで処理の流れが表現され、白いピンの下にあるピンの内、左にあるものがブロックに入力されるデータ、右側が出力となっています。入力および出力のピンはデータの種類によって色分けされており、それぞれのピンは基本的に同じデータの種類のケーブルとしか繋げられないようになっています。そのため、数値のデータを入れるべきところに、文字列を渡してしまった……というようなミスが未然に防げるようになっています。
最初Blueprintの話を聞いた時は、「本当にコードを書かずにゲームを作れるのか?複雑なことは不可能なのではないか?」などと、Blueprintについて疑念を持っていました。
しかしながら、実際に触ってみると、ゲーム作りに必要な処理はBlueprintだけでほぼ全て実装可能で、「⚪︎⚪︎が欲しいけどBlueprintにその機能がない!」というようなこととは無縁でした。よく使う処理や複雑な処理を行っている箇所をグループ化して1つのブロックにするなど、処理の見通しをよくするための機能も豊富にあります。そのため、せっかくBlueprintを使ったのに、流れがごちゃごちゃして「Blueprintを使った結果、かえって処理がわかりづらくなった」というような事態を防げます。
コードを書くことに対して抵抗がないという方でも、処理やデータの流れが視覚的に分かりやすいというのは大きなメリットですし、もしもBlueprintの内容に不備があった場合にコンパイルしようとすると、即座にエラーとその発生箇所が表示され、コンパイルが通らないようになっています。そのため、記述ミスに伴うエラーを減らすことができます。
Blueprintだけでゲームを作るのはもちろん、C++のコードと組み合わせるといったことも可能なので、「基本的にはC++で書くけども、敵のAIのロジックなど、ゲームバランスの関係でエンジニア以外が直接編集できた方が効率的な部分はBlueprintで用意する」、「とにかく手早く作りたいので、ほとんどはBlueprintで作るけど、機能上どうしても必要な部分はC++で書く」といったような使い分けも可能です。
③豊富なプラグインが便利!
Unreal Engineは拡張性にも優れています。標準でも様々なプラグインが用意されており、作りたいゲームに応じてエディタを拡張することができます。
例えば、今回のゲームでは波を発生させる必要があります。
そして、Unreal Engineには、波を再現するためのプラグインが存在しています!それが「Water」です。
上記の画像にもあるように、WaterプラグインはExperimentalとあり、まだ実験的機能という位置付けのようですが、生成される波はリアルで、機能的にも必要十分なものとなっているように感じます。
さらに、ただ波を作り出すだけでなく、海の上に物を浮かべることも可能です。
オブジェクトを海の上に浮かべたい時は、「Components」タブの「Add」ボタンをクリックすると表示されるメニューからFloatingPawnMovementとBuoyancyコンポーネントを追加すれば、海の上に浮かべることができます。その上、波に乗りながらオブジェクトを動かすこともできます。「テトラポッドが海上を浮遊しながらこちらに向かってくる」という仕様を実現するのにぴったりです!
この例以外でも、「⚪︎⚪︎の機能が欲しいけど見当たらない」という時は、プラグインを導入することで実現できるかもしれません。
④欲しい素材もすぐに用意できる!
「絵がきれいなのは素晴らしいし、Blueprintやプラグインが便利なのも分かった。でも、素材がないから作れない……」と思われている方もいるかもしれません。ですがご安心ください!
Unreal Engineには素材用の専用ストア、「Unreal Marketplace」が存在します!今回のゲームでも、モンスターの3Dモデルは無料のものをUnreal Marketplaceから導入しました。
Unreal Marketplaceには3Dモデル以外にも、サウンドや3Dモデルのアニメーションなど様々な素材があります。「どうしてもこの素材が欲しいが、自作するのは難しそう」という場合や、「デザイナーが作る本番用データがまだ来ていないけど、ゲームバランスを見ないといけないので、とりあえずプレイできる状態にしたい」という時に便利です。無料のものもありますし、有料のものでも、時々セールが実施されて無料で買えることもあるので要チェックです!
それだけではありません。Unreal Marketplaceだけでなく、「Quixel Bridge」から素材を導入することもできます。こちらには非常にリアルかつ豊富な3Dモデルがあります。特に、岩石や木といった自然物や、家などの建物など、現実世界に存在するオブジェクトが豊富です。しかも、Unreal Engineから使用する場合はQuixel Bridgeのモデルを無料で使うことができます。品質も自由に選べるので、PC向けに作る場合は最高品質にするけども、スマートフォン向けに作る時は低負荷のものにするということもできます。今回のゲームでは、岸の堤防の3DモデルをQuixel Bridgeから導入しております。
上記の画像のように、Unreal MarketplaceやQuixel BridgeはUnreal Engineのエディタから1クリックですぐに呼び出すことができ、そのまま閲覧・素材の導入までできます。ゲーム制作中、急に必要な素材が出てきた場合でも安心です。
もちろん、自作した素材も利用可能です。今回のゲームでもブロックのモデルは自作しました。
おすすめの勉強方法
ここまで読んでくださった皆さまの中には、Unreal Engineについてもっと知りたい、勉強したいという方もいらっしゃるかもしれません。
そんな方のために、個人的におすすめのUnreal Engine勉強法をお教えします。
まずはこの本で勉強すべし!
Unreal Engineは非常に高機能なゲームエンジンですが、その分できることも多く、特に初心者だと機能の多さが逆にとっつきづらく感じるかもしれません。ですので、まずは本で体系的に学ぶことをおすすめします。
おすすめは Unreal Engine 5で極めるゲーム開発 です!こちらの本はゲームを作った経験がない方向けに、Unreal Engineの使い方を0から教えるという形の本となっております。ゲームを作ったことがない方はもちろん、Unityなど他のゲームエンジンの使用経験がある方でも、Unreal Engineの使い方が体系的にわかる優れものです。私もこの本でUnreal Engineの使い方を勉強しました。
公式ドキュメントをしっかり読もう!
Unreal Engineの機能や仕様について分からない点がある場合は、公式ドキュメントを見るようにしましょう。Unreal Engineについては、公式ドキュメント以外でも様々な情報がネットにありますが、正確さという点において公式ドキュメントに勝るものはありません。必ず確認するようにしましょう。
公式ドキュメントを見る癖は、Unreal Engine以外でも役立つ場面がきっとあります。
詰まった時はフォーラムへ!
Unreal Engineを使っている時、原因は分からないがうまくいかない、やりたいことが実現できない、ということは多々あります。
そんな時は、公式フォーラムをチェックしてみましょう。Unreal Engineは人気のゲームエンジンなので、自分と同じ問題に直面した人もたくさんいます。誰かがフォーラムにそのことについて質問をしているかもしれません。解決のヒントが得られる可能性があります。
質問・回答の多くが英語ですが、ブラウザの翻訳機能も活用して、頑張って読んでいきましょう!
これからやってみたいこと
これからやってみたいこと、勉強したいことを2点取り上げます。
①C++言語を使う
使ってみてよかった点の②Blueprintが強力!でも述べさせていただきましたが、Unreal EngineではC++言語とBlueprintを使うことができます。
今回は全てBlueprintで作成しましたが、C++言語はgitでの差分管理が容易であるなど、C++言語を使用することによって得られるメリットも数多くあります。C++を使うことで、それぞれの長所や使い分け方についても理解したいと考えています。
②Unreal Engineの機能を活用する
Unreal Engineには、今回取り上げた以外にもゲームや映像製作に役立つ機能が数多くあります。実際、個人的に興味はあるものの、未だ手をつけられていないものもたくさんあります。例えば、より効率よく画面をレンダリングできるNaniteや、NPCのAI作成の支援機能などです。
それらの機能を使いこなすことで、ゲームのさらなるクオリティ向上につなげていきたいです。
最後に
ここまでいかがだったでしょうか?
今回作成したゲームのプロジェクトは、Github に公開しています。興味のある方はぜひチェックしてみてください。
Unreal Engineは非常に完成度の高いゲームエンジンで、使えば使うほど、調べれば調べるほど、その出来の良さを感じることができます。
この記事を読んで、皆さんが少しでも「Unreal Engineスゴイ!使ってみたい!」と思っていただければ幸いです。
それではまたどこかでお会いしましょう。
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
TypeScript、Unity、Python、Goが得意なエンジニア。 最近はTypeScript+next.jsでの開発が多いです。