UEって何なのさ
あれです。ソロ活動の成果発表会(?)のために用意したページってやつです。
多分当日はUEの画面見せながらいろいろ説明してると思うのでこのページ使わないかもしれないです。
一応ソロ活動期間中にやった事とか、発表会での内容をここにも記載していくので文字ベースで見たいなら。
と言っても私のページにある内容の要約に近いです。
tags
ソロ活動中何やったのさ
ソロ活動期間中はprogateとUEを触ってました。
progateは主に今までの授業でやった言語の振り返りみたいな事してました。
UEはデフォルトで用意されている「ThirdPersonTemplate」を改造(機能追加)する形でお勉強してました。
以下個別に書いていくつもりですが、多分UEの方が長くなると思います。いや絶対長くなる。
progateで何やったのさ
実はenPiT始まる前に、個人的な理由でprogateに触れた事がありました。だもんで「課金しないと最後まで進められない」ってことは分かってました。なので課金しました。お金出してくれませんかね。
お金の力を得た私は授業でやった言語を一通りなぞりました。
Java
Python
Ruby
この辺りは完走しましたね。一応授業ではCもやったんですが、progateにCコースはなかったっす(なかった……よね?)。
流れはどれも同じで、「基本的な処理(条件分岐、ループ等)をやった後に、オブジェクト指向を活かした料理注文システムを作る」って感じですね。言語は違えど同じことを3回もやったので、オブジェクト指向の考え方はふんわりと掴んだ気がします。後述しますが、雰囲気だけでもふんわりと掴めた事でUEでの機能実装に役立ちました。
それとは別に「すぐ終わりそう」って理由で
Git
Command Line
この2つも走り切りました。その後にHTML & CSSを始めたのですが、中級編を終えたところで止まっています。UEに火がついてしまったんです。
一応progateのレベル(?)はenPiT開始時点で6でしたが、ソロ活動が終わる頃には124になってました。ただ自分でなにかモノ作らないと知識が定着しないような気がします。
UEって何なのさ
そもそも「UE」とは「Unreal Engine」の略で、(原則)無料で使えるゲームエンジンのことです。「ノーコード版Unity」とも言われるくらい画面の雰囲気はUnityと似ています。私Unity触ったことないけど。
UE(より正確にはUE4)を採用したソフトとして「エースコンバット7」「鬼滅の刃 ヒノカミ血風譚」「ドラゴンクエストⅪ」「FF7リメイク」「フォートナイト」「VALORANT」「キングダムハーツⅢ」「真・女神転生Ⅴ」「テイルズ オブ アライズ」「WACCA」……まぁ挙げればキリ無いっす。ちなみに私はこの中だとFF7RとKH3しかやった事ありません。
ゲームエンジン、及びゲーム開発キットだという事でUEにはいくつかテンプレートが用意されてます。その中でも「ThirdPersonTemplate」はアクションゲームに必要な最低限の要素が全て詰まった状態の箱庭を用意してくれます。以下は全て最新版のUE5での画像っす。
https://scrapbox.io/files/62b9a67dcf3bdf0023a38d7d.png
↑「ThirdPersonTemplate」読み込み直後の様子
具体的にはテンプレートの段階で
キャラの移動(WASD、ゲームパッド対応済)
3人称視点のカメラの移動(マウス、ゲームパッド対応済)
操作キャラのジャンプ(Space、ゲームパッド対応済)
がもう出来るようになってるのです。
個人的に驚いたのは、UE5ではデフォルトでFootIKを実装済みだという点。自前で用意するとなると健やかに禿げそうなFootIKが既に用意されているのには純粋に驚きました。
https://scrapbox.io/files/62b9a7e06e935d002383eb94.png
↑ FootIKが機能している様子。地面の角度に合わせて足がちゃんと接地するようになっている。
つまるところ、「小学生の夏休みの自由研究でThirdPersonTemplate見せるだけで何も知らない大人ならコロっと騙せる」くらいには完成度が高いんです。テンプレートの時点で。……え、例えが分かりにくい?
UE5で何やったのさ
さて話をソロ活動に戻しまして。なぜソロ活動にUE(UE5)をやろうかという理由なのですが、包み隠さず話すと「趣味でやりたいことがあったから」。私は個人的にKHライクなアクションゲームを将来的に作りたいと考えてまして(理由は長くなるので割愛)、enPiTが始まる少し前からUEを独学していました。
ただenPiTが始まるとUEをやる時間が取れなさそうだと不安に。「趣味なんてそんなもんだろ」と言われたらそこまでなのですが、当時ソロ活動でやる事が決まってなかった私は何を血迷ったのかソロ活動にUEをやろうかと考えたのです。おまけに「開発にUnityを使ったチームもある」との声。かくしてUE5をソロ活動に持ち出すこととなったのです。
UEでの開発経験が皆無でありながら、前述の通り将来的にUEでやりたいことが決まっていた私。経験と知識をつけつつモチベーションを維持するために、「KHの機能をThirdPersonTemplateに実装していく」という方針を立てました。度々質問いただいてたのですが、「ソロ活動期間中に」UEでこれを作りたい、ってのはなかったです。強いて言えば「少しでもKHに近づける」でしょうか。その過程でUE開発における基本的な考え方なりゲーム開発の考え方なりが身につくだろうと考えてたのです。
では具体的にどんな機能をThirdPersonTemplateに追加したのか。ざっくり言うと6つです。
コンボ攻撃
ゲーム内でコンボの最大数を増減(コンボプラス・コンボマイナス)
2段ジャンプ(ダブルフライト)
ゲーム内で機能のオンオフ切り替え
ロックオンカメラ
ロックオンした相手のHPを表示(HPライブラ)
ゲーム内で機能のオンオフ切り替え
前転回避(ドッジロール)
以下それぞれについて簡単に解説、及び元記事で該当する箇所も乗っけときます。 【コンボ攻撃】
https://scrapbox.io/files/62b9b681da5a2d0023332ebd.mp4
リファクタリングの重要性を教えてくれたコンボ攻撃。モーションはネットから拾ってきたものをグレイマン(操作キャラ)用にリターゲットして利用。タイミング入力なんて頭使う要素はごみ箱に捨てました。ボタン連打でコンボ攻撃ができるようになってます。
……今気づいたけどUIの表示一部ズレてますね。アンカーの設定ミスかな。発表までには直しときます。
【コンボプラス・コンボマイナス】
https://scrapbox.io/files/62b9b6296c0c8b0023b1ff70.mp4
「ゲーム内で」最大コンボ数を変更できるってところがポイント。今はテスト用にキーボードでコンボ数弄れるようにしてあるけど、最終的にはメニュー画面からアビリティのオンオフで調整する予定。
【ダブルフライト】
https://scrapbox.io/files/62b9b7a76f8235002370a1e2.mp4
2段ジャンプ機能自体はUE5で既に実装されてた(最大ジャンプ回数を指定する)。だけど空中ジャンプ時のモーションが気に入らなかったので少し改造した。これは機能というよりもアニメーションの切り替えがメインだったかな。
【ロックオンカメラ】
https://scrapbox.io/files/62b9b8686785da001d991993.mp4
特定の箇所にカメラを固定するアレっす。なお動画ではロックオンした対象にマークを付けていますが、実は"(・)"という文字を出しています。画像でも図形でもなく文字列です。手抜きです。いつでも画像や図形に差し替えられるけど。
ちなみにここで協力してもらった豚さんは、自分の後ろを延々とついてくるような動作にしてあります。攻撃を当てたら爆発して樽になります。その辺の内容はこちら(5/6)に書いてあります。 progateの方でちらっと触れたオブジェクト指向によるリファクタリングでコードをすっきりさせました。
【HPライブラ】
https://scrapbox.io/files/62b9ba815131c5001d7fa357.mp4
……一番分かりづらいっすね。動画内での中央と右上に注目しているとなんとなく分かるかもしれません。
【ドッジロール】
https://scrapbox.io/files/62b9c56f872355001d26877d.mp4
この頃はスクショ取ってなかったから何やってるのか分かんないですね。enPiTもscrapboxもまだよく分かってなかった頃なので仕方ない。今は分かってるのかと聞かれると黙り込んじゃうけど。
まとめ
いやー長くなったっすね(棒)。
ソロ活動を通してなんとなくUEの(あるいはゲーム開発の?)考え方が分かったような気がします。ゲーム全般で言えばイベント単位での処理設計とか、UEで言えばウィジェット周りの扱いとかキャストとか。
発想元がKHだってことで、エネミーの追加もやりたいと思ってました。ただエネミーの行動アルゴリズムを学んで、考えて、設計してってなると時間が足りなくて。enPiT以外に時間を割かなければならなかったってのも大きいです。
UEの進め方が「この機能再現してみよう」の繰り返しだったため、行き当たりばったりな設計をしてしまったなぁと。途中で新しくクラスを作って既存のクラスの親クラスに差し替えるとかアクロバティックな事だってしてました。そんな感じで高度な柔軟性を維持しつつ臨機応変に進めていたもんですから、以前よりも対応力は上がったのではないでしょうか。そう信じたい。と同時にある程度は事前に設計を立てておくことも大事だと実感した次第です。
……なんか発表記事というよりブログみたいになってしまいました。こうやって口語調で書き連ねてるからでしょうね。わかっとりますよそんなこと。文語調で書けないってわけじゃないんですけど、口語でいいなら口語の方が気が楽って理由が大きいです。発表記事に口語を使っていいかどうかは怪しいところ(というかほぼアウト)ですが。
恐らく夏合宿以降でUE5を使うことはないだろうと思ってます。だって人口少ないし。ただUE5に特化した知識だけ会得したわけではないので、決して無駄ではないのかなとも思ってます。それこそUnity使うんなら多少はUEの知識も生かせそうだし。そうでなくともな部分もあります。排他実行制御とか非同期処理とかの知識もやんわりとつけられた気がします。っていうかUEだと排他処理非同期処理がめちゃくちゃ簡単に実装できるからオヌヌメ。
最後まで長々とお付き合いしていただいた画面の向こうの貴方、大変ありがとうございます。
……みんなもUE5はじめてみようね!!たのしいよ!!