【初心者】「猫でも分かる UE4を使ったゲーム開発」を再視聴してみた【後編】

#はじめに

猫でも分かる UE4を使ったゲーム開発はUnreal Engineの入門チュートリアルとして2020年に配信された動画のシリーズ（8回）です

[【初心者】「猫でも分かる UE4を使ったゲーム開発」を再視聴してみた【前編】](https://qiita.com/so2/private/7ac33f300f9c99fe3f6c)

動画では配信当時の最新版であるUE4が使われていますが、ここでは現在の最新版であるUE5EAでなぞっていきます

以下の構成で動作確認をしています

| ソフトウェア | バージョン | 
|:-------------|------------:|
| MacOS        | 12.0.1      | 
| UnrealEditor | 5.0.0       | 

※ MacBook Pro (13-inch, M1, 2020) 

#内容まとめ・紹介
5から8までの内容をざっくりまとめていきます

## [#5](https://youtu.be/KKYyROSKorw?t=324) Animation ブループリントの使い方を学ぼう！

ここから2回に分けて、アニメーション関連の話になります
個人的にこのアニメーション関連の話が全然頭に入ってきませんでした
キャラクターのアニメーションを作り込むところまで手を伸ばしていないため、関心が薄いというのが大きいのかもしれません・・・

[IK](https://youtu.be/KKYyROSKorw?t=1908)の話に軽く触れてから、[Animation Blueprint](https://youtu.be/KKYyROSKorw?t=211８)の説明がはじまります

[イベントグラフ](https://youtu.be/KKYyROSKorw?t=2793)では、コンポーネントの状態を参照しつつ、アニメーション用に数値を加工して変数で保持するという作業をしているようです

[アニメーショングラフ](https://youtu.be/KKYyROSKorw?t=3865)では、各アニメーションのつながりを設定します

[ブレンドの作り方](https://youtu.be/KKYyROSKorw?t=4785)で、各アニメーションのつながり具合を調整する方法が紹介されています

[質問応答](https://youtu.be/KKYyROSKorw?t=5420)では少し[中級？くらいのテク](https://youtu.be/KKYyROSKorw?t=5761)にも触ってくれているところは見どころかもしれません

この回は実際の作業はあまりなく、次回のキャラクタを差し替える作業のための事前知識といった感じです
とはいえ、この回を見ておかないと次回が置いてきぼりになるので、見逃せない回となっています

アニメーションをしっかり作り込むと、ゲームのクオリティがかなり上がると思うので、ここはしっかりと覚えたい回です

## [#6](https://youtu.be/Xcl0IA3HpfQ?t=115) 自作・購入したキャラクタを動かしてみよう！

イベントなどのアナウンスがあったのちに、[本題](https://youtu.be/Xcl0IA3HpfQ?t=790)が始まります

Third Person テンプレートなどで、Blueprintやアセット配置などを触った後、いざアニメーションを触ろうとすると、かなりハテナ？な状態になりますが、[なぜそうなるのか](https://youtu.be/Xcl0IA3HpfQ?t=1054)が説明されています

これは、前回の動画でも説明されているモデル・ボーンなどの関連づけ方法なのですが、動画で実際の手順を見た方がわかりやすいのは間違い無いです

モデルやスケルトンなど、いろいろな単語が錯綜しますが、練習するときはUEエディタのラベル色で見分けることができます


| 名称 | ラベル色 | 
|:-------------|------------|
| モデル・メッシュ        | ピンク      | 
| スケルトン | 水色       | 
| アニメーション | 緑色       | 

まずは[モデルとボーンを関連づける方法](https://youtu.be/Xcl0IA3HpfQ?t=1290)が紹介されています

これには２つの方法があり、[インポートする際に設定する方法](https://youtu.be/Xcl0IA3HpfQ?t=1365)と[既に関連づけられているスケルトンを差し替える方法](https://youtu.be/Xcl0IA3HpfQ?t=1554)が紹介されています

面白いのは[手順通りではうまくいかないとき](https://youtu.be/Xcl0IA3HpfQ?t=1672)が紹介されていることです
おそらく、こっちのケースの方がほとんどで、こうなると初心者はほぼ諦めるのでは？というときのケースです
こういうところまで、紹介されているので、理解できないまでも予備知識として見ておくと良い動画のシリーズだと思います

[モーションをスケルトンに合わせる方法](https://youtu.be/Xcl0IA3HpfQ?t=2312)からを行うことで、上記の問題に取り組むことができます

こちらも[インポート時に行う方法](https://youtu.be/Xcl0IA3HpfQ?t=2439)と、スケルトンの階層が異なる場合の差し替え方法である、[リターゲット](https://youtu.be/Xcl0IA3HpfQ?t=2659)も紹介されています

アニメーションが関連づけられているスケルトンを変更する方法は簡単そうですが、[最後に紹介](https://youtu.be/Xcl0IA3HpfQ?t=4230)されています
これは、UEエディタにこれを自動で行う機能が紹介されていないためです
簡単に紹介すると、

1. 関連スケルトンを変更したいアニメーションを選択
1. アセットアクションでエクスポートを選択
1. エクスポートしたFBXファイルをインポート
1. インポート時に関連付けするスケルトンを選択する

と、少し手間のかかる方法で行うことができます
これに関しては、動画で紹介されている[[UE4] Animation Sequenceをアセット複製せずに直接リターゲットする方法について](https://qiita.com/EGJ-Kaz_Okada/items/097898f91a34038f4fb1)の方法があります

モデルを作ったり、探すのはそれだけで大変なので、まずはモーションをスケルトンに合わせる方法を使って、グレーマンを使ってアニメーション部分を差し替えたり追加するだけでも練習になると思います

[質問応答](https://youtu.be/Xcl0IA3HpfQ?t=4643)では、「できるけれどやらない方がいいよ」といったことがいろいろ紹介されています
この辺りは、一度小さいプロジェクトなりを完成させた後に、再度見ると理解が深まりそうです

## [#7](https://youtu.be/Ut0JWOJyL5s?t=531) UMGを使ってスコアなどのUIを画面に表示してみよう！

ニュースなどもろもろのアナウンスの後、[はじまります](https://youtu.be/Ut0JWOJyL5s?t=1055)
この動画では以下の流れで進んでいます

1. [UMGアセットの作り方](https://youtu.be/Ut0JWOJyL5s?t=1291)
1. [テキストや画像を追加](https://youtu.be/Ut0JWOJyL5s?t=1428)
1. [ゲーム中で実際に出してみる](https://youtu.be/Ut0JWOJyL5s?t=2126)
1. [スコアを表示してみる](https://youtu.be/Ut0JWOJyL5s?t=3493)

1から3までは動画通りの手順で作業するだけと、非常に簡単です
作業内容もほぼ、ドラッグ&ドロップです
この辺は、動画内でも言っていますが、こだわり出したらキリがない作業、つまりこだわらなければあっという間に終わらせることができる作業になります
その辺りのこだわりのさわりとも言える、[画面サイズに合わせてレイアウトする方法](https://youtu.be/Ut0JWOJyL5s?t=2299)が軽く解説されています
これも、対応機種を絞るといったやり方でも回避可能だと思うので、仕様やこだわりで変わってくるところではないでしょうか

この回のキモとも言える部分は”スコアを表示してみる”です
Blueprintを使って、キャラクターの当たり判定から、ウィジェットのテキストに反映させていく方法が紹介されています
動画ではコインを取ったらスコアが１upする流れを紹介していますが、これでグッとゲーム感が増します

[カウントアップの演出](https://youtu.be/Ut0JWOJyL5s?t=６４０１)なんかもこだわり部分ではないでしょうか

## [#8](https://youtu.be/7ianEtjiWVI?t=51) タイトルからゲームメインへのレベル遷移を作ってみよう！

もろもろのアナウンスの後に[この動画で目指すものの説明](https://youtu.be/7ianEtjiWVI?t=５１５)がはじまります

まずは[タイトル画面となるレベルの作成[(https://youtu.be/7ianEtjiWVI?t=825)です
タイトル画面と言っても特別なことはなく、新しいレベルにUMGなどで文字を配置するなどで作っていきます
黒字に文字だけならば、空のレベルにUMGのテキストを配置、何かしら動画を流すなら、アセットを配置したレベルをシーケンスなどでアニメーションを追加するといった方法なので、自身のスキルアップに応じてどんどん演出を漏れる部分です

続いて、[レベル遷移のBlueprint](https://youtu.be/7ianEtjiWVI?t=1346)の組み方になります
ここで `Open Level`のノードが紹介されていますが、UE5EAの段階では同名のノードが二種類になっています

![スクリーンショット 2021-12-26 8.59.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/601616/06780f2a-ca82-4ed7-1a20-ee454aa58144.png)

上図の`Open Level(by Name)`が動画で紹介されているノードと同等のものです
`Open Level(by Object Reference)`は名前ではなく、実際のオブジェクトをリストから指定できるノードです

なお、[ここ](https://youtu.be/7ianEtjiWVI?t=1403)で同名レベルによるトラブルが実際に起きている様子を見ることができます
動画ではリファレンスパスを指定する解決方法が紹介されています
この解決方法と同等のことは、UE5EAにある`Open Level(by Object Reference)`を使用することで行えます
こちらはリストから選べる上に、名前の重複によるトラブルも防ぐことができるので、より便利になっています

レベル遷移は、アセットの管理やメモリの節約などで有効な方法ですが、その際に破棄されたレベル上のデータも全て失われるという副作用もあります
その解決方法として[Game Instance](https://youtu.be/7ianEtjiWVI?t=2261)の使い方が紹介されています
ゲームの進行状況（スコアや操作キャラのステータスなど）は、この方法で管理することで、ゲーム中どこからでも参照できるようになります

メモリ管理上で重要なテクニックと思われる、[パーシスタントレベルとサブレベル](https://youtu.be/7ianEtjiWVI?t=3385)の解説もあります
アセット配置とライティングなどを分業する場合に有効になる方法です

強大なマップを作る際にも使うようですが、こちらはUE5で追加される[World Partition](https://docs.unrealengine.com/5.0/ja/WorldFeatures/WorldPartition/)を利用することで大幅に手間が減りそうです

さいごは[質問応答](https://youtu.be/7ianEtjiWVI?t=6026)です
レベルを管理する際に気をつけた方が良いことなどが紹介されています

# さいごに
改めてみると、UEで何かを作ろうとした時に必要となりそうな要素がしっかりと盛り込まれている動画でした
初めて試聴したときは、エディタの使い方やBlueprintの基本を覚えるのでいっぱいいっぱいだったので、あまり細かいところが聞こえていなかったようです
UE5EAでコンテンツを作成する際も、おおむねそのまま使える内容なので、初心者の方は一度じっくり見ることをお勧めします

あらためて、これだけのボリュームの動画を公開してくださっている関係者の皆様に感謝です