
Unreal Engine 4は、2次元ゲームの作成からモバイル、コンソール用のAAAプロジェクトまで、幅広い機能を備えたゲーム開発ツールのセットです。 このエンジンは、 ARK:Survival Evolved 、 Tekken 7、 Kingdom Hearts IIIなどのゲームの開発に使用されました。
Unreal Engine 4の開発は初心者にとって非常に簡単です。 Visual Scripting System Blueprints Visual Scriptingを使用すると、コードを1行も書かずに既製のゲームを作成できます。 これにより、便利なインターフェイスと組み合わせて、実用的なプロトタイプを迅速に作成できます。
Unreal Engine 4チュートリアルのこのパートでは、プログラムの主な機能を見ていきます。 ここで取り上げる主なトピックは次のとおりです。
- エンジンの設置
- アセットをインポートする
- マテリアルを作成する
- ブループリントを使用して単純な関数でオブジェクトを作成する
バナナが置かれているターンテーブルの例を使用して、これらすべての可能性を研究します。
注:チュートリアルは8つのパートで構成されます。
- パート1:エンジンの紹介
- パート2:ブループリント
- パート3:材料
- パート4:UI
- パート5:簡単なゲームを作成する方法
- パート6:アニメーション
- パート7:サウンド
- パート8:パーティクルシステム
- パート9:人工知能
- パート10:シンプルなFPSを作成する方法
アンリアルエンジン4をインストールする
Unreal Engine 4をインストールするには、 Epic Games Launcherを使用します。 Unreal EngineのWebサイトにアクセスし、右上隅のGet Unrealボタンをクリックしてください 。

ランチャーをダウンロードする前に、アカウントを作成する必要があります。 作成したら、オペレーティングシステムに合ったスタートアッププログラムをダウンロードします。

ランチャーをダウンロードしてインストールしたら、それを開きます。 次のウィンドウが表示されます。

ダウンロードプログラムのダウンロードに使用するメールアドレスとパスワードを入力し、[ サインイン ]をクリックします。 ログインすると、次のウィンドウが開きます。

左上隅にある[エンジンのインストール]をクリックします 。 ランチャーは、インストールするコンポーネントを選択できる画面に移動します。

注: Epic GamesはUnreal Engineを常に更新しているため、エンジンのバージョンはスクリーンショットとわずかに異なる場合があります。 たとえば、このチュートリアルの最初のドラフトを書いた後、バージョンはすでに4.14.3に更新されています! チュートリアルは、4.14以上のバージョンを使用している場合に適しています。
デフォルトでは、 スターターコンテンツ 、 テンプレート、機能パック 、 エンジンソースが選択されています。 そのままにしておく方が良いです これらは次の理由で役立ちます。
- スターターコンテンツ:これは、独自のプロジェクトで無料で使用できるアセット(リソース)のコレクションです。 これらを含むモデルと材料です。 一時的なリソースとして、または既に終了したゲームで使用できます。
- テンプレートと機能パック:テンプレートは、ゲームの選択したジャンルの基本的な機能を設定します。 たとえば、 サイドスクローラーテンプレートを選択すると、キャラクター、単純な動き、固定平面上のカメラを含むプロジェクトが作成されます。
- エンジンソース: Unrealはオープンソースエンジンです。つまり、誰でも変更できます。 エディターに追加のボタンを追加する必要がある場合は、ソースコードを変更してこれを行うことができます。
リストの下には、可能なプラットフォームのリストがあります。 特定のプラットフォーム用のゲームを開発する予定がない場合は、すべてのボックスを安全にチェック解除できます。

必要なコンポーネントを選択したら 、[ インストール ]をクリックします 。 インストールが完了すると、エンジンがライブラリに表示されます。 今こそプロジェクトを作成するときです。

プロジェクト作成
起動ボタンのいずれかをクリックして、プロジェクトブラウザを開きます。 開いた後、 「新規プロジェクト」タブをクリックします。

[ ブループリント ]タブをクリックします。 ここで、テンプレートの1つを選択できます。 ただし、ゼロから開始するため、 空のテンプレートを選択します。
以下に追加オプションをリストします。

各オプションの役割は次のとおりです。
- ターゲットハードウェア: モバイル/タブレットを選択すると、いくつかの後処理効果が無効になります。 マウスをタッチ入力に使用することもできます。 ここで[ デスクトップ/コンソール ]オプションを選択します。
- グラフィカルターゲット: スケーラブル3Dまたは2Dを選択すると、いくつかの後処理効果が無効になります。 ここで最大品質を選択します。
- スターターコンテンツ:このオプションを有効にして、基本コンテンツ(スターターコンテンツ)を追加できます。 簡単にするために、 スターターコンテンツなしを選択します。
さらに、プロジェクトフォルダーの場所とプロジェクトの名前を選択するセクションがあります。

[フォルダー]フィールドの末尾にある省略記号をクリックして、プロジェクトの保存フォルダーを変更できます。
プロジェクト名はゲームの名前ではないため、後で名前を付けても心配する必要はありません。 「 名前」フィールドでテキストを選択し、 BananaTurntableと入力します 。
最後に、 Create Projectをクリックします 。
インターフェースナビゲーション
プロジェクトを作成すると、エディターが開きます。 いくつかのパネルに分かれています。

- コンテンツブラウザ:このパネルには、すべてのプロジェクトファイルが表示されます。 フォルダーの作成とファイルの整理に使用できます。 検索バーまたはフィルターを使用してファイルを検索することもできます。
- モード:このパネルでは、 Landscape ToolやFoliage Toolなどのツールを切り替えることができます。 デフォルトのツールは配置ツールです。 光源やカメラなど、さまざまなタイプのオブジェクトのレベルで配置できます。
- ワールドアウトライナー:現在のレベルですべてのオブジェクトを表示します。 関連オブジェクトをフォルダーに配布することでリストを整理したり、タイプごとに検索したりフィルターしたりできます。
- 詳細:選択したオブジェクトのすべてのプロパティがここに表示されます。 このパネルは、オブジェクトのパラメーターを変更するために使用されます。 行われた変更は、オブジェクトの選択されたインスタンスにのみ影響します。 たとえば、シーンに2つの球がある場合、1つの変更のサイズを変更すると、その球だけがタッチされます。
- ツールバー:さまざまな機能が含まれています。 ほとんどの場合、 Playを使用します 。
- ビューポート:これはレベルの概要です。 マウスの右ボタンを押したまま 移動すると、側面を見ることができます。 レベルを移動するには、 右クリックを押しながらWASDキーを使用します。
アセットをインポートする
表示するものがない場合のターンテーブルの使用とは何ですか? このバナナモデルをダウンロードします。 内部には2つのファイルBanana_Model.fbxとBanana_Texture.jpgがあります。 独自のモデルを使用することもできますが、なぜこのような素晴らしいバナナがあるのですか?
Unrealがファイルを使用するには、それらをインポートする必要があります。 コンテンツブラウザに移動し、[ インポート ]をクリックします。

ファイルマネージャーを使用して、 Banana_Model.fbxおよびBanana_Texture.jpgが配置されているフォルダーを見つけます。 両方のファイルを選択して、[ 開く ]をクリックします。

アンリアルは、.fbxファイルをインポートするためのいくつかのオプションを提供します。 独自のマテリアルを作成するため、 [ マテリアルのインポート]ボックスをオフにします 。 他のパラメーターは変更できません。

インポートをクリックします。 コンテンツブラウザに2つのファイルが表示されます。

ファイルをインポートするとき、明示的に指定しない限り、実際にはプロジェクトに保存されません。 ファイルを保存するには、ファイルを右クリックして[保存]を選択します 。 [ファイル]、[すべて保存]の順に選択して、すべてのファイルを一度に保存することもできます 。 もっと節約しよう!
Unrealでは、モデルはmeshesと呼ばれることに注意してください。 これでバナナメッシュができました。レベルに追加します。
レベルごとにメッシュを追加する
レベルはかなり空に見えますが、さらに面白くしましょう。
レイヤーにメッシュを追加するには、 Banana_Modelを 右クリックして、コンテンツブラウザーからビューポートに ドラッグし ます 。 マウスの左ボタンを放すと、メッシュがレベルに追加されます。

レベルのオブジェクトは、 移動 、 回転 、 スケーリングできます。 これらのアクションのホットキーは、 W 、 E、およびRです。 それらをクリックした後、マニピュレーターを使用できます。

材料について
バナナをよく見ると、黄色ではないことがわかります! 実際に。 彼はほとんど完全に灰色に見えます。
バナナの色と詳細を与えるには、 マテリアルを作成する必要があります。
「材料」とは何ですか?
マテリアルは、表面の外観を定義します。 基本的なレベルでは、材料は4つの側面を定義します。
- 基本色:表面の色またはテクスチャ。 詳細と色のバリエーションを追加するために使用します。
- メタリック:素材の金属の見え方。 一般に、純粋な金属のオブジェクトには最大の金属値があり、ファブリックの値は0です。
- 鏡面反射:非金属表面の光沢を制御します。 たとえば、陶磁器は粘土と異なり、鏡面反射率が高くなります。
- 粗さ:最大粗さの表面には光沢がありません。 石や木材などの表面に使用されます。
以下は、3つの異なる材料の例です。 色は同じですが、属性が異なります。 各マテリアルには、対応する属性の高い値があります。 残りの属性の値はゼロです。

マテリアル作成
マテリアルを作成するには、コンテンツブラウザに移動し、緑色の[ 新規追加 ]ボタンをクリックします。 作成可能なアセットのリストを含むメニューが表示されます。 品目を選択します。

マテリアルにBanana_Materialという名前を付け、ファイル上でマウスの左ボタンをダブルクリックして、マテリアルエディタで開きます。

マテリアルエディター
マテリアルエディタは、5つのメインパネルで構成されています。

- グラフ:このパネルには、すべてのノード(ノード)と結果ノードが含まれます。 マウスの右ボタンを押し たままマウスを動かすと、パネルをナビゲートできます。 スケーリングは、 マウスホイールを スクロールすることで実行されます。
- 詳細:選択したノードのプロパティがここに表示されます。 ノードが選択されていない場合、材料特性がここに表示されます。
- ビューポート:マテリアルを表すプレビューメッシュが含まれています。 左キーを押したままマウスを動かすと、カメラを回転できます。 スケーリングは、 マウスホイールを スクロールすることで実行されます。
- パレット:マテリアルで使用可能なすべてのノードのリスト。
ノード(ノード)とは何ですか?
独自のマテリアルの作成を開始する前に、作成に使用されるオブジェクト: nodesについて学習する必要があります。
材料の大部分はノードで構成されています。 さまざまな機能を持つノードには多くの種類があります。
ノードには、矢印付きの円で表される入力と出力があります。 入り口は左側にあり、出口は右側にあります。
以下は、黄色のテクスチャを追加するMultiplyおよびConstant3Vectorノードを使用した例です。

マテリアルには、 結果ノードと呼ばれる特別なノードがあります。このノードは、この場合、 Banana_Materialとしてすでに作成されています。 ここでは、すべてのノードが時間で終了します。 このノードに接続されているものによって、最終的なマテリアルの外観が決まります。

テクスチャを追加する
カラーモデルと詳細を追加するには、 textureが必要です。 テクスチャは単なる2次元の画像です。 通常、それらは3次元モデルに投影され、色と詳細が与えられます。
バナナのテクスチャリングには、 Banana_Texture.jpgを使用します 。 TextureSampleノードを使用すると、マテリアルにテクスチャを適用できます。
パレットパネルに移動してTextureSampleを見つけます。 マウスの左ボタンを押したままノードを図にドラッグして追加します。

テクスチャを選択するには、最初にTextureSampleノードを選択する必要があります。 [詳細]パネルに移動し、[ テクスチャ]の右側にあるドロップダウンリストをクリックします。

メニューが開き、プロジェクトのすべてのテクスチャがリストされます。 Banana_Textureを選択します 。

プレビューメッシュでテクスチャを表示するには、それを結果ノードに接続する必要があります。 TextureSampleノード出力の白いピンでマウスの左ボタンを押したままにします。 結果ノードのベースカラー入力ピンにドラッグします。

ビューポートに戻り、プレビューメッシュのテクスチャを確認します。 回転(左マウスボタンを押しながらマウスを移動)して、他の詳細を表示できます。

ツールバーの[ 適用]をクリックしてマテリアルを更新し、完了後にマテリアルエディタを閉じます。
材料の使用
バナナに材料を適用するには、それを割り当てる必要があります。 コンテンツブラウザに戻り、 Banana_Modelをダブルクリックして開きます。 次のエディターウィンドウが表示されます。

[詳細]パネルに移動し、[ 素材]セクションを見つけます。 要素0の右側にあるドロップダウンメニューをクリックし、 Banana_Materialを選択します。

メッシュエディターを閉じ、メインエディターに戻ってビューポートを確認します。 バナナにテクスチャができていることがわかります。 おめでとうございます。レベルデザイナーになるために必要なすべてがわかったのです。

注:照明が暗すぎる場合は、ワールドアウトライナに移動し、 光源をクリックして変更できます。 [詳細]パネルで、[ 強度]パラメーターを見つけて値を増やします。
ブループリントについて
バナナは見た目はいいですが、ターンテーブルで回転し始めるとさらに良くなります。 それを作成する最も簡単な方法は、ブループリント「ブループリント」を使用することです。
最も単純な場合、ブループリントは「モノ」です。 ブループリントを使用すると、オブジェクトの独自の動作を作成できます。 オブジェクトは、物理的なもの(ターンテーブルなど)または抽象的なもの(健康システムなど)になります。
動く車を作りたいですか? ブループリントを使用します。 空飛ぶ豚はどうですか? ブループリントを使用します。 そして、触れたときに爆発する猫が必要な場合は? 設計図 。
マテリアルと同様に、ブループリントはノードベースのシステムを使用します。 これは、ノードを作成して接続するだけで十分であることを意味します。コードは不要です。
注:コードを記述する場合は、代わりにC ++を使用してください。
ブループリントは使いやすいですが、C ++コードほど高速ではありません。 つまり、複雑なアルゴリズムなど、計算の観点から「重い」何かを作成する必要がある場合は、C ++を使用することをお勧めします。
ただし、C ++を好む場合でも、ブループリントを使用することが最適な場合があります。 ブループリントの利点の一部を次に示します。
- 通常、ブループリントでの開発はC ++での開発よりも高速です。
- 整理が簡単。 ノードは、関数やグラフなどのさまざまな領域に分割できます。
- プログラミングを知らない人と仕事をする場合、可視性と直感性のために、ブループリントの変更は簡単です。
良いアプローチは、ブループリントを使用してオブジェクトを作成することです。 また、追加機能が必要な場合は、C ++に変換します。
ブループリントの作成
コンテンツブラウザに移動し、[ 新規追加 ]をクリックします。 リストからブループリントクラスを選択します。

親クラスを選択するように求めるウィンドウが開きます。 ブループリントは、選択した親クラスからすべての変数、関数、およびコンポーネントを継承します。 時間をかけて各クラスの可能性を探ってください。

注:クラスPawnとCharacterを配置できるため、これらはActorsでもあります。
ターンテーブルが配置されるため、 Actorクラスが最も適切です。 Actorを選択し、新しいファイルにBanana_Blueprintという名前を付けます。

Banana_Blueprintをダブルクリックして開きます。 同様のウィンドウが表示されたら、 [フルブループリントエディターを開く]をクリックします。

ブループリントエディター
まず、ブループリントエディターで[イベントグラフ]タブを選択します。
ブループリントエディターは、4つのメインパネルで構成されています。

- コンポーネント:現在のコンポーネントのリストが含まれています。
- My Blueprint:このセクションは、通常、グラフ、関数、変数を管理するために使用されます。
- 詳細:現在選択されているアイテムのプロパティがここに表示されます。
- グラフ:魔法が起こる場所です。 すべてのノードとロジックはここにあります。 マウスの右ボタンを押し たままマウスを動かすと、パネルをナビゲートできます。 スケーリングは、 マウスホイールを スクロールすることで実行されます。
- ビューポート:視覚要素を持つすべてのコンポーネントがここに表示されます。 移動と参照は、メインエディターのビューポートと同じです。
ターンテーブルを作成する
テーブルを作成するには、ベースとスタンドの2つのものが必要です。 コンポーネントを使用して作成できます 。
「コンポーネント」とは何ですか?
ブループリントが車の場合、コンポーネントはそれが作成されるビルディングブロックです。 コンポーネントの例は、ドア、ホイール、エンジンです。
ただし、コンポーネントは物理オブジェクトだけではありません。
たとえば、車が動くように、モーションコンポーネントを追加できます。 フライトコンポーネントを追加すると、車を飛行させることもできます。
コンポーネントを追加する
コンポーネントを表示するには、ビューポートモードに切り替える必要があります。 [ ビューポート ]タブをクリックして切り替えます。 これは次のようなものです。

注: DefaultSceneRootコンポーネントは、アプリケーションの起動時には表示されず、エディターでのみ表示されます 。
ターンテーブルは2つのコンポーネントを使用します。
- シリンダー:無地の白いシルクハット。 これは、バナナが置かれるベースになります。
- 静的メッシュ: -このコンポーネントはバナナメッシュを表示します。
ベースを追加するには、[コンポーネント]パネルに移動します。 [ コンポーネントの追加]をクリックし、[ シリンダー]を選択します。

ベースを少し短くするといいでしょう。 Rを押してスケールマニピュレータをアクティブにし、スケールを縮小します(正確なサイズは重要ではありません。後で変更できます)。

次に、メッシュを追加します。 コンポーネントコンポーネントパネルに戻り、空の領域を左クリックして、 シリンダーコンポーネントの選択を解除します。 このため、追加される次のコンポーネントはCylinderコンポーネントに添付されません。

注:これを行わないと、次のコンポーネントがCylinderコンポーネントにアタッチされます。 これは、 Cylinderコンポーネントのスケールも継承することを意味します。 シリンダーを縮小すると、次のコンポーネントも縮小されます。

次に、[ コンポーネントの追加 ]をクリックして、リストから[ 静的メッシュ ]を選択します。

バナナを表示するには、 静的メッシュコンポーネントを選択し、[ 詳細 ]タブをクリックします。 静的メッシュの右側にあるドロップダウンリストをクリックして、 Banana_Modelを選択します。

バナナが間違った位置にある場合は移動します。 これを行うには、 Wを押してムーブハンドルをアクティブにし、上に移動します。

ブループリントノードについて
次に、ターンテーブルを回転させる必要があります。 そして、ここではブループリントノードが必要です。
近縁のマテリアルノードとは異なり、ブループリントノードには実行コンタクトと呼ばれる特別なコンタクトがあります。 左側の接点が入力、右側の接点が出力です。 すべてのノードには、少なくとも1つの入力と出力があります。
ノードに入力接点がある場合、ノードを機能させるには接続する必要があります。 ノードが接続されていない場合、後続のすべてのノードは実行されません。
以下に例を示します。

ノードAとノードBは、入力ピンに接続があるため実行されます。 ノードC入力ピンが接続されていないため、 ノードCとノードDは実行されません。
ターンテーブル回転
始める前に、コンポーネントパネルを見てみましょう。 DefaultSceneRootには接続されているため、 CylinderとStatic Meshにはインデントがありますが、 DefaultSceneRootにはないことがわかります 。

ルートコンポーネントを移動、回転、またはスケーリングすると、コンポーネントがアタッチされている場合も同じことが起こります。 この動作のおかげで、 シリンダーと静的メッシュを別々 にではなく同時に回転させることができます。
ノードを作成する
スクリプトの作成を開始するには、[ イベントグラフ ]タブに戻ります。
オブジェクトの回転の実装は非常に単純なので、必要なノードは1つだけです。 グラフ内の空のスペースを右クリックして、使用可能なノードのメニューを開きます。 AddLocalRotationを見つけます 。 ベースとバナナを回転させる必要があるため、ルートコンポーネントを回転させるだけです。 AddLocalRotation(DefaultSceneRoot)を選択します 。
注:ノードがリストにない場合は、メニューの右上部分の[ コンテキスト依存]チェックボックスをオフにします。

新しいAddLocalRotationノードがグラフに表示されます。 ターゲット入力は、選択したコンポーネントに自動的に接続します。
回転値を設定するには、 Delta Rotation入力に移動し、 Z値を1.0に変更します。 これにより、ブループリントはZ軸を中心に回転することができます。値が大きいほど、テーブルの回転が速くなります。

ターンテーブルを継続的に回転させるには、各フレームでAddLocalRotationを呼び出す必要があります。 各フレームでノードを実行するには、 イベントティックノードを使用します。 すでにグラフにあります。 存在しない場合は、以前と同じ方法で作成します。
イベントティックの出力ピンをAddLocalRotationノードの入力ピンにドラッグします。

注:この実装では、回転速度はフレームレートに依存します。 これは、低速のコンピューターのターンテーブルが低速で回転することを意味します。 チュートリアルの場合、これは私たちにぴったりです。何も複雑にしたくないのですが、今後は修正方法を示します。
最後に、ツールバーで[ コンパイル ]をクリックしてブループリントを更新し、ブループリントエディターを閉じます。

ブループリントをレベルに追加する
ブループリントを追加する前に、メインエディターでビューポートに戻り、バナナモデルを削除します。 これを行うには、モデルを選択し、[ 編集] \ [削除]を選択するか、 Deleteキーを押します。
ブループリントの追加は、メッシュの追加と同じプロセスです。 ファイル上でマウスの左ボタンを押したまま 、ビューポートにドラッグします。
ツールバーに移動し、[ 再生 ]をクリックして、作業の結果を確認します。

注:元のバナナモデルを削除しないと、照明を再構築する必要があるという警告が表示される場合があります。 モデルを削除すると、エラーは発生しなくなります。
次に何をする?
完成したプロジェクトはここからダウンロードできます 。
チュートリアルのこの部分で多くを学びましたが、これはUnrealのほんの一部です。 勉強を続けたい場合は、チュートリアルの次のパートを待ちます。このパートでは 、ブループリントを詳しく見ていきます。