初めてUE5を触ってぷちコンに参加した話

# はじめに
はじめまして。リンクラフト株式会社のkawachiと申します。
業務としてはモバイルアプリの開発エンジニアとして従事しております。

社内の人（記事内ではよっしー）にUE5ぷちコンに出ようと誘われ参加したので、初めてUnrealEngineを使った感想やらを書いた記事になります。
リンクラフトアドベントカレンダーの４日目を担当しています。よろしくどうぞ。

# ぷちコンとは
https://historia.co.jp/ue5petitcon20
お題に沿ったゲームをUnrealEngineで作って動画をyoutubeに配信し、そのurlを投稿する事で参加できます。
今回のお題は「コントロール」でした。

# unreal engine5（UE）とは
>Unreal Engine はゲーム開発者、そしてあらゆる業界のクリエイターに力を与え、次世代のリアルタイム 3D コ ンテンツや体験をこれまで以上に自由に、高忠実度で、柔軟に作成できるようにします。

公式からの引用になりますが、主に3Dコンテンツを円滑に作る事ができるツールになります。
ゲームだけでなく、車の設計や動画作成など幅広い用途に使われています。


# 成果物
ロボットに乗って操縦しながら戦う2Dのゲームを作りました。以下の動画が実際に作ったゲームの動画でこれをぷちコンに投稿しました。
<iframe width="560" height="315" src="https://www.youtube.com/embed/IPiFmZaPeVk?si=M21TrfESu0VCWMuD" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

# 開発の流れ
## どんなゲームを作るかを考えた
自分はUEに触るのがほぼ初めてなので、UE5に深い知見があるよっしーに基本的な実装は8割くらいお願いしました。
私はどんなゲームを作るかなどの要件定義や基本設計的な所を対応しました。

discodeとgoogleスライドを使ってこういうものを作りたいとよっしーに相談し、ボツをくらいながら「コントロール部分は操縦するという理解」にしたいと提案しそれならいけそうだとなりました。

話のなかで参考になりそうな動画や記事を共有しあったりしました。主に以下の動画と記事でよっしーとの認識とイメージがあったかと思います。

<iframe width="560" height="315" src="https://www.youtube.com/embed/n4BEcHtsAFw?si=wfvX8RA56awQxCCp" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

https://www.simplelove.co/entry/20190820/1566227239


会話をして何かを決めたい時は、実際に参考になる図柄や動画があると話の質はぐんと上がると思っています。
自分はモバイルアプリ開発エンジニアですが、UI周りのお話をお客さんとする時はなるべく画像や動画を共有する様にしています。

## モデリングしてもらった
ここに関してはUEはそこまで関係ないです。ここでいうモデリングとは3Dのオブジェクトを作る事を指しています。
今回でいえば自機のロボットや敵キャラクターをモデリングします。

まず最初に私の要望に沿って、よっしーがAIを使って自機のイメージ画像を作ってくれました。
この画像を3Dモデリングの参考にしてデフォルメを行いつつ作成という作業をする為にまずはイラスト化するという感じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546015/335042d7-db85-d395-045d-075d23877117.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546015/f925fcdb-1e98-1460-ff8b-cc761767d19b.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546015/9b347edc-534f-38be-2c2b-52c6d6cfd077.png)


モデリングは「Blnder」
https://www.blender.jp/

テクスチャの作成は「Substance Painter」
https://www.adobe.com/jp/products/substance3d-painter.html

を使ってデフォルメしてできたのがこちらです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546015/c8da5254-3982-be81-fb58-cc8adcbbce16.png)

ぷにぷに感がでて素敵に仕上がっています。流石よっしー。

という感じで敵のモデリングなどその他も対応してくれました。

## 機能部分の実装

モデリングされた自機や敵に動きを作ったり玉の判定などゲームを動かす実際の処理を作成しなければいけません。
UnityであればC#でコーディングしてーなどプログラミング的な作業が入りますが、UnrealEngineだとその部分が「ブループリント」というシステムで実現しています。


>ブループリントは基本的に、スクリプトをゲームに視覚的に追加していくシステムです。 ノード、イベント、関数、そして変数をワイヤーで接続して複雑なゲームプレイ要素を作成することができます。 ブループリントは、オブジェクト構築、個々の関数、一般的なゲームプレイ イベントなど、様々な目的を持つノードのグラフを使って機能します

具体的にどんな風な事をしているかというとまずHPバーのUIを作る作業でみてみます。

![スクリーンショット 2023-11-06 233402.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546015/a5e77d9f-e654-cc56-1bd5-0fc5b1b5e7ad.png)

上記はUIを作れるブループリントです。今回は複雑な処理をせずとりあえずUIとしての機能だけを持ったブループリントを作成しました。

これを別のブループリントの「Event Begin Play」から「Create HPBar Widget」を使って処理をつないでいく様な実装になります。

![スクリーンショット 2023-11-06 233942.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546015/cdf812b8-bdaa-7b17-c4b7-3ce0d3135597.png)

![2023-11-06 23-49-39.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546015/bd320393-2fbf-b01a-50a0-bb6d35b95818.gif)


プログラマーじゃなくてもいろんな処理を実現できる事がブループリントの魅力かと思います。

## 動画作成
ある程度成果物ができたらキャプチャーソフトを使って、動画を作成しました。
動画はほとんど作った事がなかったのでかなり苦戦しましたが、今後やれたら便利なスキルかなと思ったので挑戦してみました。youtuberはこれをやってるんやなぁ・・・・大変だ。


# Unreal Engineによる開発の感想
## 良かった所
### ブループリント素敵
覚えてしまえば結構簡単にいろんな事が実現できていいなと思いました。
比較対象がUnityだとすると、C#という言語の特性を覚える事が前提として必要なのでハードルに関してはこちらの方が低いかなと感じました（初心者なほど）
私はUnityを仕事として使っていた事もあるのですが、もし今からゲーム開発したい！っていう初心者がいたら、UEをお勧めできるくらいにはとっつきやすいです。

### アセットも豊富
有志が作ったであろう豊富なアセット（ライブラリみたいなもん）が開発をサポートしてくれるのでこれはUnityと一緒でいいなと思いました。

### エディタ操作も直感的
ある程度いろんな所でドラッグ＆ドロップもできて、名称もわかりやすいです。
公式のマニュアルもしっかりしている方な気がします。
とはいえUnityよりはネットに出回っている情報量が少ないのでトリッキーな事しようとするとちょっと大変かも。

## 大変だった事
### パフォーマンス要求
めちゃくちゃパソコンのスペック求められます。Unityも結構必要だった気がしますが、UEはもっと必要でした。
自分のパソコンではもう起動に時間かかってつらかったです
ビルドしてバイナリなんかにするのもやばい時間かかります。

### プログラマーの経験が邪魔になる
これは自分だけかもしれないんですが、なんとなく実装していて、ここはコードだったらこうだよなーとかスコープもここまでだよなーとかを考えちゃった事が結構作業の邪魔をしていました。
ブループリントは視覚的にはわかりやすいものの、依存しあうノード（ブループリントの処理単位）が複雑に絡むと管理がちょっと大変なので、疎結合に作るにはどうしたらいいのかなーとか調べてもなかなか答えがでず、そういう意味でも経験が生きるような生きないような感じでした。
シンプルに機能を受け入れて学習していればもっと早く吸収できたなと感じた次第です。その方があとから答えが湧き出てくるので。


# 最後に
という感じで初めてのUnreal Engineを使った開発でしたが、なんだかんだ楽しくできました。誘ってくれてありがとうよっしー。

同じ会社の人と仕事以外でこうやってクリエイティブな事ができるのは本当にいい経験だなと感じたし、まだまだ学んで楽しい事が世の中にあるなと実感できました。

引き続き暇出来たら触って、簡単なゲームを作っていきたいなと思っています（その為に新しいパソコン買いました( ´∀｀ )


__ちなみに作ったゲームは特に表彰されなかったですｗｗ__
くやしーーーーー！！！！（下記の動画が審査結果）

↓【第20回UE5ぷちコン】審査結果発表会！

<iframe width="560" height="315" src="https://www.youtube.com/embed/YOa_PG3kgo8?si=d2OHIRE-Wy6Ossci" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>




# 一緒に働く仲間を募集中です！
リンクラフト株式会社では、組織拡大に伴い積極的な採用活動を行っています。
少しでも興味がある方はぜひご連絡ください。

▽会社ホームページ
https://lincraft.co.jp/
▽Instagram
https://www.instagram.com/lincraft.inc/
▽ご応募はこちらより
https://lincraft.co.jp/recruit