アンリアルエンジン5を触った初日にやるべき事は、ゲームを完成させる事だと思います。
今回のテーマ「ゲームを完成させる」
素人の創作において最も多い問題は「作品を完成させられない」かと思います。いきなり難しいことをやりすぎる、細かいことを考えすぎる。
最初にこの問題を解決することが最重要と考えますので、最も簡単なゲームの完成の形を目指します。
タイトル画面→ステージ1→エンディングまで作って、パッケージ化。
まず最も簡単な形でゲームを完成させて「作品を完成させられない」問題をクリアしておきます。完成させてからの肉付けは自由です。
注意点として、アンリアルエンジン5のインストールや基本操作程度は学習しておいてください。
UE備忘録本舗さんの『【UE5初心者講座】とりあえずゲームを作ってみよう!全てはここから始まります♪』を視聴しながら操作すれば、基本は完璧かと思います。
プロジェクトの作成
- ゲームを選択。
- テンプレートはサードパーソンを選択。
- スターターコンテンツとレイトレーシングは不要です。
- プロジェクト名を入力。
- 作成をクリック。
初期設定
個人的な設定ですが、編集 > エディタの環境設定 > アピアランスでアセットエディタの起動場所をMain Windowにしています。
これはファイルを開いた時に新しいウィンドウを別枠で開かずに、メインウィンドウ内で開いてくれて、タブで切り替えられるようになる設定です。
あとウィンドウのコンテンツブラウザ > コンテンツブラウザ1とワールドセッティングにチェックを入れておきましょう。デフォルトだとチェックが入っていない可能性があります。
このウィンドウの項目にチェックを入れる事により、メインウィンドウに表示されます。
タイトル画面の作成
Title(レベル)を作成
タイトル画面となるレベルを作成します。レベルとはステージやマップそのものです。
サードパーソンテンプレートを使っている時、最初にビューポートの表示されているステージもThirdPersonMapという名前のレベルです。
真っ暗なレベルに文字を表示すれば、黒背景のタイトル画面になるわけです。
コンテンツブラウザのコンテンツフォルダの右クリックメニューから新規フォルダを選択して名前はMapsにします。このMapsフォルダにはレベルを入れていきます。
Mapsフォルダをダブルクリックで開き、右クリックメニューからレベルを選択、名前はTitleにします。
これが黒背景のタイトル画面になります。
ThirdPersonMap(レベル)をコピーしてStage01にする
テンプレートで最初から用意されているThirdPersonMapというレベルをそのまま使わず、コピーして名前を変えて使います。
コンテンツブラウザのコンテンツ > ThirdPerson > Maps > ThirdPersonMap(レベル)をドラッグ&ドロップでMapsにコピーする。
Mapsフォルダは2つありますが、さきほど自分で作ったほうにコピーします。
コピーした先のMapsフォルダを開き、ThirdPersonMap(レベル)を右クリックして名前変更でStage01にする。
W_Title(ウィジェットブループリント)を作成
ウィジェットブループリントは文字の入力に使います。
これを黒背景のレベルに表示してタイトル画面になります。
Mapsフォルダ内で右クリックメニューからユーザーインターフェース > ウィジェットブループリントを選択。
親クラスはUser Widget。
名前はW_Titleにします。
W_Title(ウィジェットブループリント)を編集
W_Title(ウィジェットブループリント)に文字を入力し、それをTitle(レベル)に重ねる作業をしていきます。
W_Title(ウィジェットブループリント)をダブルクリックで開く。
左メニューのパネル > Canvas Panelをドラッグ&ドロップで配置。1280×720の緑の枠が配置されます。これはウィジェットのデザインをやりやすくするキャンバスです。
左メニューのパレットの一般 > Textをドラッグ&ドロップで配置。
Canvas Panel内の好きな位置に配置・移動できます。
テキストブロックを選択した状態で詳細を見る。
コンテンツ > Textの入力欄にPress Space Keyと入力する。スペースキーを押すと画面が切り替わるという文章です。
テキストブロックの詳細をいじれば、文字の装飾が可能です。
コンパイルして保存。これ以降「コンパイルして保存」は記載しません。なにか作業をしたら「コンパイルして保存」する癖をつけましょう。
Title(レベル)にW_Title(ウィジェットブループリント)を表示
Title(レベル)をダブルクリックで開く。何もないので真っ暗です。
上メニューの階層アイコンをクリックし、レベルブループリントを開くを選択。
イベント BeginPlayから線を伸ばして、検索欄に「ウィジェットを作成」と入力してウィジェットを作成を選択して配置。そのClassにW_Titleを指定。
ウィジェットを作成から線を伸ばしてAdd to Viewportを配置。
2本の線をそれぞれ繋げる。
Title(レベル)のブループリントに、ウィジェットを作成でW_Title(ウィジェット)を呼び出して、Add to Viewport表示するノードです。
この状態でテストプレイをすると、真っ暗な画面に「Press Space Key」と表示されます。
Title(レベル)にアクターを置けば背景つきのタイトル画面になったり、文字の位置や装飾もこだわろうと思えばいくらでもこだわれる部分ですが、最短で完成を目指すというテーマの中では最低限の行動しかしません。
タイトル画面からStage 1への遷移
Title(レベル)のレベルブループリントを編集
今のままではタイトル画面でスペースキーを押しても無反応です。遷移させるためのノードを作成します。
Title(レベル)を開き、上メニューの階層アイコンからレベルブループリントを開く。
イベントグラフの空いているところで右クリックして、検索欄に「スペースバー」と入力し、キーボードイベントのスペースバーを配置。スペースキーを押した時に発生するイベントです。
スペースバーのPressedから線を伸ばしてOpen Level (by Name)を配置。レベル名を指定してそのレベルに遷移させるノードです。Level Nameの欄にStage01と入力する。
これにより、スペースキーを押すとStage01が開くというわけです。
この状態でテストプレイすると、タイトル画面でスペースキーを押すことによって、最初のステージに遷移します。
エンディング画面を作成
タイトル画面の作成と同じようなやり方でエンディング画面を作ります。
Ending(レベル)を作成
Mapsフォルダの右クリックメニューでレベルを選択。
名前はEndingにします。
W_Ending(ウィジェットブループリント)を作成
Mapsフォルダの右クリックメニューでユーザーインターフェース > ウィジェットブループリントを選択。
親クラスはUser Widget。
名前はW_Endingにします。
W_Ending(ウィジェットブループリント)を編集
W_Endingをダブルクリックで開く。
左メニューのパネル > Canvas Panelをドラッグ&ドロップで配置。
パレットの一般 > Textをドラッグ&ドロップで配置。
テキストブロックの詳細欄でテキストの編集ができます。デフォルトで「テキストブロック」と書いてあるところを「Game Cleared!」に変更。
Ending(レベル)にW_Ending(ウィジェットブループリント)を表示
Ending(レベル)をダブルクリックで開く。
階層アイコンをクリックし、レベルブループリントを開くを選択。
イベント BeginPlayから線を伸ばして、ウィジェットを作成を配置。そのClassにW_Endingを指定。
ウィジェットを作成から線を伸ばしてAdd to Viewportを配置。
2本の線をそれぞれ繋げる。
Stage 1からエンディング画面への遷移
Stage01(レベル)を開く
Mapsフォルダ内にあるStage01(レベル)を開いておきます。
BP_Goal(ブループリント)を作成
Stage01(レベル)にゴールとなるActor(アクター)を設置して、そこに触れるとゲームクリアにします。
Actor(アクター)とはレベルに配置されている人や物など全般です。
コンテンツブラウザのコンテンツフォルダで右クリックメニューから新規フォルダを選択し、名前をBlueprintsにします。
そのBlueprintsフォルダ内の右クリックメニューからブループリント クラス > Actorを選択。名前はBP_Goalにします。
BP_Goal(ブループリント)を編集
BP_Goal(ブループリント)を開き、コンポーネント欄のBP_Goal (Self)を選択した状態で+追加をクリック。Static Meshを追加します。
Static Meshを選択した状態で詳細欄を見ると、Static MeshがNone/なしになっています。そこにConeを選択する。
Static Meshとは静的なオブジェクトです。石ころのように、その物自体の動きがない物体。動きと言っても移動はできますけどね。
コンポーネント欄のStaticMeshを選択した状態で+追加をクリックし、Box Collisionを選択。
Collisionは当たり判定に使います。Static MeshであるConeに当たり判定を作る作業です。
Boxを選択した状態で、ビューポート上のオレンジの正方形をConeの大きさに合わせます。ConeよりもBoxが小さいと、プレイヤーが接触しても当たったと認識されません。ConeというStatic Mesh自体で判定しているわけではなく、Boxで判定するのです。Boxを大きめにしましょう。
移動・回転・スケールのアイコンを切り替えながらギズモで調整。
パースペクティブというところをクリックして「上」や「右」などを選択すれば視点を切り替えられます。
今回も上と右で見た方がやりやすいです。移動も回転も使わずスケールだけで調整できると思います。
Stage01(レベル)にBP_Goalを配置
Stage01(レベル)を開く。
コンテンツブラウザにあるBP_Goal(ブループリント)をドラッグ&ドロップで配置。
Stage01(レベル)のレベルブループリントを編集
配置したBP_Goalを選択した状態で階層アイコンからレベルブループリントを開く。BP_Goalを選択した状態なのがポイントです。
イベントグラフで右クリックすると、配置したBP_Goalを選択していることにより、BP Goal ***** にイベントを追加するが表示されています。
BP Goal ***** にイベントを追加する > コリジョン > On Actor Begin Overlap を追加を選択。
これは先ほど設定したBP_GoalのBox Collisionに何かが重なった時にイベントを起こします。
On Actor Begin Overlap (BP_Goal)から線を伸ばしてOpne Level (by Name)を配置。名前を指定して遷移させるノードですね。Level NameにEndingと入力。
これで完成です。
Title(レベル)を開いた状態でテストプレイすると、タイトル画面でスペースキーを押して最初のステージに遷移。プレイヤーキャラクターがConeに接触するとエンディング画面に切り替わります。
デフォルトマップの設定
編集 > プロジェクト設定 > マップ&モードを開く。
ゲームのデフォルトマップにTitleを選択する。タイトル画面から始まってほしいですからね。
パッケージ化
パッケージ化
プラットフォーム > Windows > プロジェクトをパッケージ化でPCゲームとしてパッケージ化できます。
しかし、多くの場合は「SDK未設定」の警告が出ると思います。Visual Studioのインストールが必要です。
警告が出ない場合、フォルダを指定してパッケージ化完了です。ファイアウォールでブロックされている場合は「アクセスを許可する」。
Visual Studio Community 2022のインストール
Visual Studioのサイトに行く。
Visual Studio Community 2022をダウンロードする。
VisualStudioSetupをダブルクリックしてVisual Studio Installerを起動。
いくつかの設定があります。
「C++によるゲーム開発」にチェックを入れ、オプション欄では「MSVC v143 – VS 2022 C++ x64/x86 ビルド…」「C++ のプロファイルツール」「Windows 11 SDK (***)」「C++ AddressSanitizer」「Unreal Engine 用の IDE サポート」「Unreal Engine のインストーラー」にチェックを入れる。
※Windows 10の場合は10のSDK
SDKは複数ありますが、最新バージョンを選択しましょう。
これで「SDK未設定」の警告は出なくなります。
PCでゲームプレイ
パッケージ化に指定したフォルダを開くとWindowsというフォルダがあり、その中に自分のプロジェクト名のアプリケーションがあります。私はFirstProjectというプロジェクト名でしたから、FirstProjectというアプリケーションがありました。
これをダブルクリックすると他のPCゲームと同じように起動し、ゲームとしてプレイできます。
全画面表示された時はF11で小さなウィンドウに切り替わります。
Alt+EscでPCの操作に切り替わります。
自分の作ったゲームが他のPCゲームと同じようにPCゲームとしてプレイできる、これは感動を覚える体験でした。
こんなゲームとも呼べないような状態であっても、自分の作ったゲームをパッケージ化まで経験したという事実は大きな自信にも繋がります。
いきなり戦闘とかマップ作りをしてしまうと、おそらくゲームとして形にならないまま数か月や数年が経過する可能性が高いのではないでしょうか。ゴールの見えない作業に疲れてリタイヤする人も少なくないでしょう。
やはりこれは初日に経験しておきべきです。
最初にスタートからゴールまでを作り、後は戦闘システムを作ったり、会話システムを作ったり、肉付けしていくだけ。
今のこの状態であっても、マーケットプレイスでクオリティの高いアセットをダウンロードすれば、見た目だけは市販のゲームに負けないものになります。
学習疲れしやすいありがちなパターンは、Youtube等でTPSのチュートリアル動画を見てやってみたり、それが終わったらFPSのチュートリアル動画を見てやってみたり、目的もなくいろいろやってみて最初こそ達成感はありますが、結局のところ何も形になっておらず、ゴールも見えず、虚しくなっていくパターンかと思います。
最初にパッケージ化までやってしまえば、そこからはスタートからエンディングまで完成しているゲームに肉付けしていくのですから、終わりが見えない不安は感じにくいです。完成品を改造したり磨き上げていくことになります。
極端ではありますが、マーク・ザッカーバーグの名言「完璧を目指すよりまず終わらせろ」ですね。
アンリアルエンジンの学習初日で、Lv1からいきなりLv10くらいになった気分になれます。
「初日でゲームを完成させる」と書いていますが、仕事終わり等で時間がなければ2日目でも構いません。1日目はインストールと基本操作の習得、2日目にゲームを完成させる。
休日であれば、インストールと基本操作の習得とゲームを完成させるを達成できるでしょう。
コメント
Insightful piece