[UE5] Lyra改造計画①  ゲームルールの変更

Post 2023年4月28日金曜日

C++ GASでオンラインシリーズ Lyra改造 UE5 Unreal Engine オンラインゲーム

ご無沙汰しております。一応生きております。

Part 1の続きではありますが、今回から別記事になります。

今回からのシリーズも、不本意ながらC++が多めになります。ご了承下さい(文句ならLyraの基幹システムをブループリントに公開していないEpic様に言ってください笑)

お約束
この記事作成にあたって使用した主なUnreal Engine バージョンUE 5.1.1

本日のゴール

Lyraのルールを変更する


前の企画はどうなった?

前の企画はまだ生きてはいるんですが、データが消えたので一旦停止中です。。。こちらをメインでやっていきます ※今は反省してクラウドにバックアップをとってあるので大丈夫です。バックアップのやり方もいずれ記事にします。


自由自在なルール設定

さて、Lyraでは、「Eliminate」「Control」などのモードの選択をすることで、大幅なゲームルールの変更が可能になっています。

それを可能にしているのが、「Game Features」です。新しい機能です。



例としてレベル「L_ShooterGym」を見てみましょう。


ワールドセッティングから、このレベルに設定されたGame FeaturesのCoreを確認することができます。「B_ShooterGame_Elimination」が指定されていることがわかります。

おっと。まずは、ファイルを見れるようにコンテンツブラウザの設定を変えておきます。

「ShooterCoreコンテンツ」の中の「B_ShooterGame_Elimination」を検索して探して見てみましょう。

上記のような見た目をしています。

この「Game Features」設計で面白いのは、ゲームルールを追加したり削除したりすることができることです。しかもレベル毎に設定することができるので、ステージAではこういうルールだが、ステージBではこういうルールでやる、みたいなことができます。これをModular Gameplayと呼ぶらしいです。

ニーア・オートマタで急に出てくるシューティングゲームなんかも実装ができそうです。

概要は、alwaiさんが解説されているので、一読しておきましょう。いつも神記事をありがとうございます。

それを可能にするのが、この「B_ShooterGame_Elimination」のなかのActionsの中にある、Componentという部分になります。ちょっと開いて見てみましょう。

このような感じで、ルールの設定や、BGMの設定などが色々と追加されています。

ためしに、一番最後のPickなんたらを外してみましょう。
エラーが出ると思いますが構わずコンパイルしてプレイしてみます。

キャラクターのメッシュが表示されませんね。このPickなんたらというところで、メッシュを選択していることがわかります。これでもプレイはできるからすごいですね。

この一番上の~Scoringがルールを決めているブループリントです。

このなんとかScoringを開いてみましょう。

なんとなくタイマーとかが見えますね。
タイマーがゼロになったときの処理とかもなんわかります。

これを修正することで、ゲームルールを変えることができます。

このブループリントを確認すると、Target Scoreに達するとゲームが終了になるようになっています。
ここを修正し、制限時間に達すると、Red Team = Team 1が勝利するように書き換えていきます。

Handle Victoryが勝利のFunctionです

私のゲームでは、Kill数がTarget Scoreに達すると勝利になるという条件は不都合なので削除しておきます。

On EliminationScoredの関数の中でTarget Scoreに達したチームが勝利になるようになっているのでこのノードを外します。

Widgetのバグ?も修正しておきましょう。
標準だとTickを使う設定になっているので・・・

「~Scoring」の方でマルチキャストのイベントを作成して、Player Countedを呼び出してあげます

そして同じく「~Scoring」の On Elimination Scored関数の中で、先程作ったマルチキャストのイベントを呼び出します


あとは先程のTickにつながっている処理を削除すればOKです。
※なんか別環境だとうまくTick排除ができなかったので、もしかしたらなにか間違っている可能性あります…。

今回は以上です。まだまだ道のりは遠い…