Unreal Engine ゲーム制作体験会レポート
今回の社内企画では「非エンジニアの職種の方でもUnreal Engineを用いれば、ゲームを作ることはできるのか?」「デザイナーでもゲームを一人で作れるのか?」という漠然とした疑問に対して、実際に触ってもらってどこまでできるのか実証実験を行うことにしました。
そこで、研修にもなるし、その後のスキルにもなるということで、社内に来ていただいているインターンのデザイナーお二人にゲーム制作を体験していただくことになりました。
インターンで参加いただいたのはグラフィック系内定者2名のBさん、Tさんです。メンター講師としてエンジニアNさんが一名付き、ある程度レクチャーをした後、仕様書を作り実装してレビューまでいけるだろうかという試みです。
二日間、つまり16時間という限られた時間での企画です。問題は非エンジニアがゲームを作れるのかです。対象はグラフィック系内定者ですのでプログラミングスキルは皆無でゲームエンジニアとしての経験は何もありません。グラフィッカーとしてもプロの現場は体験していません。この状態ですのでプログラムを一から学ぶのは難しくフルスクラッチでは厳しい環境でした。その為今回はゲームエンジン、UnrealEngineを用いて、既存のゲームに自分テイストの仕様変更の改造を行うことでゲーム制作を行います。
大まかな二日間の流れ
1.インストラクション。セットアップ、学習。仕様決定
2.作業
3.発表
二日目の最後に果たしてどこまで何ができるのか!
1.インストラクション。学習。仕様決定
10:00
そもそも、普段のグラフィッカーのPCだとUE4を動かすのが厳しいため、ゲーミングPCの受け渡しを行う。リフレッシュされたPCに対して必要なソフトを入れ作業環境を作る予定で作業開始。
しかし、スタートして即トラブルが発生する。しばらく使っていなかったPCなので、BIOSのセキュリティーで弾かれる。Chromeのバージョンが古くて開かない。普段使い慣れていない英字配列キーボードのPCでの作業が難航する。普段は無線LANなのだが久々の有線ケーブルが煩わしいなど。今回UE4ver.4.27を入れたいが、配布された最新のインストーラーだと自動で最新バージョンが入ってしまうことも判明。
諸々インストール以前の環境で難航してしまう。
10:30
問題を解決し30分遅れでインストール開始。
10:40
インストールしながら各種ウィンドウ・インターフェースの説明を講師にしてもらう。コンテンツとアウトラインの理解が初手だと不安な様子。フィールドとレベルの言葉の理解が今までちょっとだけ勉強してきたUnityの理解と違う。要件定義が異なるので理解の上、書き込み作業を開始。レベルの意味が伝わらない。
11:00
BP(ブループリント)の説明開始。ノードの説明開始。関数や変数の説明などでポカーンとなる。初めてのBPで理解が追いつかない。インストールもまだなので、少々の関数、変数のサンプルノードを作成して説明。
インストール確認。PCが検証中で止まってる?なんとPCが回線問題でDL中断していた。中断し、削除、再開。バックアップチームで回線確保しDL作業再開。ちょっと遅れたが大きな問題はない。
11:10
UE4の全体の説明から再び関数、変数の説明開始。サンプル作成、簡単な計算のノード作成。ビジュアルで説明すると理解が深まってくる。少しUnityの勉強をしていた過去があり、全く0レベルに話す感じではなく、理系女子向けになってしまってるかもしれない。次回インストールPCを渡すのがいいかもしれない。三分間クッキング方式で1時間すっ飛ばせる。サンプルでノードの数値をいじると、何かが変わるのがいいかもしれない。
11:20
インストールの様子
TさんPCコンプ
BさんPC50%
11:30
一人のインストールが終了したので
サンプルを使って現状のベースとなるゲーム、簡単なFPSの仕様の説明開始。
どこがどうなっているのか、どこをいじったら、どこが動くかなどの詳細レクチャーを受ける。
11:40
レクチャーを受け、どうすればオリジナルのゲームができるのか、現実可能な改造はどれなのか、どうすれば面白くなるのかなどを考え、仕様作成前の準備開始。ホワイトボードで必要要件を書き出す。
TさんPCコンプ
BさんPC94%
12:00
DLを継続しながら本社ビル内にある自社経営のイタリアン(Cassolo)で休憩。
偶然遭遇した社長におねだりしてご馳走してもらう。
13:00
再開。体験者それぞれが仕様をホワイトボードに書き出しゲームルールを決定。
ルールを落とし込んだ仕様書を作成し、作るゲームのコンセプトなどのプチプレゼンに向け作業を行う。
13:30
ゲームコンセプトのプチプレゼン開始。
14:00
配布したデータを使いUE4をセットアップ。
いよいよ開発の準備完了。
YouTube動画で対象となる技術習得のため学習開始。
14:25
デモをプレイし実際に触ってみる。
キーボードのWASDを使って十字キーのように使う操作に慣れていないメンバーは難航。
リソース格納の為の新規フォルダ作成開始。
Pawnを作成。
14:30
講師に従いEnemyの挙動をBPを使って作ってみる。コリジョン(挙動設定)についての説明を受ける。コンポーネントを組み込むにしてもどこをいじればいいかわからないので難航する。
コンポーネント追加からスフィア球体を追加。スフィアは「球」で検索すると出てくる。コリジョンの中にメッシュを入れて準備を行う。コリジョンの傘下、スフィア(球)のメッシュを入れて親子関係に紐付けておく。
各種パラメーターの設定開始。動画を再度見て学習強化。
15:30
当初の仕様がモリモリで現実的ではなかったので、ダウンサイジングして現実的な仕様に修正する。
16:00
プランナー業務をプチ体験する。
仮仕様がFIXして夢が膨らむ。
16:20
修正仕様発表。希望の仕様がすぐにできそうか。実装優先順位はどうか。どの機能を使えば、どんなことができるかを相談する。今日学んだことでできることできないことを確認して再度仕様を修正。
16:40
機能説明を受けながらマップ作成を行う。
1日目終了
2日目
2.本格作業開始 ※ここからは少し長いので頑張りましょう。
まずEnemyフォルダを作成する。自分の名前のフォルダの直下。
新規でブループリントファイルを作成する。
名前は「BP_Enemy」とする。
作成したBP_Enemyをダブルクリックしてブループリントを開く。
コリジョン追加。
ビューポートメニューから、「コンポーネントを追加」を押す。Sphereで検索。
コンポーネント追加。
コンポーネントを更に追加。「球」を追加。
こうなる。親子関係が以下のようになるように調整する。
コリジョンのシェイプを設定する。
Sphereの青い丸のコリジョンを選んだうえで、シェイプの値を少し大きくする。
黄色い実際のコリジョンの場所が円より多少大きくなるように設定
元々の画面に戻り、
BPEnemyをドラッグアンドドロップして画面内に設置できるようになる。
次に「ジオメトリ」から「ボックス」をドラッグアンドドロップして画面内に置けるようにする。
追加したボックスを選んで、詳細メニューのトランスフォームをいじると変形できるようにする。
その際トランスフォームにある南京錠アイコンのロックを外さないと、縦横比率などが変わらないので注意。
X,Yを0.1にすると縦ながーい棒になる。
配置済みの棒になったオブジェクトを選択したままCtrl+C、Ctrl+Vでオブジェクト複製できる。
この2本の棒の組み合わせでアンテナみたいなT字をつくってみる。
こうなる(2本目はトランスフォームで、XYZを1.0、 0.1、 0.1に設定する)。
Tを構成する二つのオブジェクトを選択してブラシセッティングメニューを見る。
//ブラシセッティングに丸
「スタティックメッシュを作成」のボタンを押す。
//スタティックメッシュに丸
Enemyフォルダ内に(右クリックで)Meshフォルダを作成して、スタティックメッシュを作成。
そうするとMeshフォルダにT字のメッシュが作られる(一度作ったT字オブジェクトを簡単に再現できる)。名前はBP_Enemy_Headにしておく。作ったファイルをBP_Enemyのビューポートにドラッグアンドドロップ。
BP_Enemy_Headのフォルダ構成、サイズ感&座標を以下のように調整する。
これを検索してレベル内に配置。
このように設置する
この「枠内」でAIが動いたりするので、この「枠」がステージ全体を覆うように設定する。
表示>ナビゲーションのチェックをONにする。
するとエネミーが動ける範囲(ナビゲーションマップのエリア)が黄緑に表示される。
こうなればOK。
次にPlayerに向かって敵を突っ込ませる処理を作る。
BP_Enemyの画面で、イベントグラフを開いて処理を設定する。
画面に移っている2つのノードは不要なので全部消してOK。
ズームアウトするともう一つあるので、イベントBeginPlayは残すようにする。
↓するとこのようになります。↓
空いてる場所で右クリックすると、追加可能なノード一覧が出てくる。
キャラクターを自動的に追従させる機能追加の為AIMoveToを探して登録する。
Selfというものも追加する(自身の処理用)。
こうして…
ノードをつなげる。
動かす対象(Pawn)=Self
イベントBeginPlayの次にAIMoveToが発動するように。
向かわせる場所を設定するため、GetPlayerPawnを追加する(自機)。
さらに追加を行う
「ターゲット先」として繋げる。
コンポーネントにキャラクターの位置を自動的に調整するためFloatingPawnMovementの追加を行う。
こうなったらコンパイルして保存を行う。
エラーがなければ、実行すると動くはず!!
…画像は2つの敵が重なっておりやや計画とは違うが、一応配置ができた。
「Unreal Engine ゲーム制作体験会レポート(その②)」に続く。