フリーランス薬剤師 / 事業主
【UEFN】【verse】初!フォートナイトの島をリリース
私がUEFNで制作したフォートナイトの島が先日EpicGamesの審査を通過し、公開されましたので島の概要と技術レビューを書かせていただきます。 技術レビュー内の各実装が実際にどのように動いているかを確認するための動画も是非視聴ください! なお動画内でプレイヤーが飛行しておりますがこれは各実装を見やすくするために一時的に飛行機能をONにしているものであり、実際のゲームでは飛行はできません。 タイトル: COMBAT ATHLETIC 島コード:9674-4819-1884 ※このコードをフォートナイト内で検索していただくと実際に遊ぶことができます。 概要: タイムアタック形式のアスレチックゲームです。プレイヤーはコース内に配置された敵や障害物を乗り越え、最速タイムでのゴールを目指します。 技術レビュー: 今回のゲーム上でversとNiagaraの一部を紹介します。 ①設定された数の敵を撃破することでドアが開く仕掛け (画像⓵-1、⓵-2) 最初のエリアでは次のエリアに進むための経路上にシャッターがあり、エリア内の敵を全滅させることでシャッターが開く仕組みをvarseで実装しています。合計撃破数KillCountと目標撃破数NeccessaryKillCountの二つの変数を設定し、敵が撃破されるまいにKillCountがNeccessaryKillCountに到達したかどうかをチェックし、条件達成時にシャッターのオブジェクトが移動してサウンドが再生するように実装しました。 ②見張り台上の敵キャラのパトロール行動制御(画像②-1、②-2、②-3) 見張り台にいる敵が1方向を監視してしばらくたったら別の方向を向いて…と繰り返して4方向を順番に警戒する動作をverseで実装しました。敵がパトロールで移動する経路を指定する「パトロール経路の仕掛け」というUEFNにあらかじめ用意されている機能を活用してvarseでコントロールすることで実現しています。 仕組みとしては「パトロール経路の仕掛け」を利用して4つのパトロールコースを見張り台上に用意しそれぞれのコースはそれぞれの方向を向くように配置し、1つのコースが終了したら一定時間(コード上ではEnemySearchTimeという変数に設定)静止し、次のコースに入るというようにしています。 ③回転する足場の仕掛け 足場が縦方向にくるくる回転し続けるようにverseで実装し、飛び移るタイミングを考えないと落ちてしまう仕掛けにしました。 足場は7個のキューブをつなげて、空のブループリントを作成してこれを親として7個のキューブを子にすることでグループ化しています。親となっているブループリントに対してverseでloop文を用いて回転し続けるように実装しています。 ④ボス撃破時のクリア演出とクリアタイムの計算と表示(画像④-1、④-2) ゲームはクリアした後に終了されなければなりません。このゲームは最後に登場するボスを撃破すればゲームクリアなので、ボスの撃破をトリガーにゲームクリアの演出が開始されるようにverseを使って実装しました。またこのゲームはタイムアタック形式であるためクリアタイムと現在のタイムを表示する仕掛けを「タイマーの仕掛け」を使って実装しました。ゲームの終了自体は「ゲーム終了の仕掛け」がUEFNに用意されているのでそれをverseで制御しています。 演出の内容としてはゲームの動きをスローモーションにするレベルシーケンスを用意して、それがボスの撃破時に作動し、撃破の瞬間がスローモーションになる演出を作りました。そしてクリアタイム、クリアのメッセージがUIに表示されていくようにverseでクリア時の演出を実装しています。 クリアタイムは「タイマーの仕掛け」に備わっている残り時間(秒)を出力する関数を活用し、事前に制限時間を3600秒に設定し、ボスの撃破時点で残り時間(秒)を取得してそれを計算して例えば1分30秒を「01:30」といった表示形式になるようにverseで実装しています。C++言語には「1」を「01」と表示するように設定することができますがverseではそれができないため、このクリアタイムの計測の部分はとても工夫が必要でした。 さらにクリアタイムが10分未満だった場合に得られる経験値が増量になる「栄誉の仕掛け」が作動するようにverseで実装しています。 ⑤ボスキャラ登場時のVFX演出(Niagara)(画像⑤-1、⑤-2) Unreal Engineと同様にUEFNにもVFXを作るためのNiagaraを備えています。ボスキャラが上空から降ってきて地面に着地するときに花火が吹き上がるVFXを作成して実装しました。 今後も島制作をどんどんしていこうと思います。 最後まで記事を読んでいただきありがとうございます。


