[UE5] Lyra改造計画② Lyraの基幹システムについてちょっと理解する

Post 2023年4月29日土曜日

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

前回の続き。

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

本日のゴール

Lyraの基幹システムについてちょっと理解する


B_ShooterGame_Eliminationをもっと見てみる

前述したとおり、Lyraでは「Game Features」という機能を使っていて、レベル毎にありとあらゆる設定を変更することが可能です。

AIについても同様です。

「B_ShooterGame_Elimination」を見てみましょう。すると、「B_ShooterBotSpawner」というものがGameStateの一つとして採用されていることがわかります。


B_ShooterBotSpawnerをもっと見てみる

これがBot、つまりコンピューターが制御するキャラクターをSpawnさせているブループリントになります。


ではこれ「B_ShooterBotSpawner」を早速見てみると、今度は「B_AI_Controller_LyraShooter」をAIコントローラーとして指定していることがわかります。

こんな感じで、Lyraは一見すると複雑で何がどうやって使われているかわかりませんが、Game Featuresを解き明かしていくと意外とわかりやすい構造になっていることがわかります。


「B_ShooterBotSpawner」は「Lyra Bot Creation Component」を継承したブループリントです。

「Lyra Bot Creation Component」はC++で書かれています。何をやってるのか見てみると、

①Bot の数を決める /NumBotsToCreate

②Bot の名前を決める ※標準は5種からランダム /CreateBotName ファンクション

Bot のAIコントローラーをSpawnさせる /ServerCreateBots ファンクション

これらを実行しています。やっていることは単純です。

注意するポイントは、ここではアクターは指定していないことです。つまりキャラクターの見た目は別のファイルで決めています。不思議な設計ですねぇほんと。


B_MusicManagerComponent_Eliminationを見てみる

次に、上記ファイルを見てみます。このブループリントはただのアクターとなっています。

こちらは「B_MusicManagerComponent_Base」というアクターを継承しています。

まあ音を鳴らしているだけです。多分。深くまで見ていませんが、ブループリントなのでそんなに解読は難しくないはず…。


B_TeamSetup_TwoTeamsを見てみる

次に、上記ファイルを見てみます。このブループリントもGame Stateの一つになっています。

こちらは「LyraTeamCreationComponent」というC++ファイルを継承しています。

こちらでは何をやっているのでしょうか?

Teamを作成する /ServerCreateTeamsとServerCreateTeamファンクション

②On Post Login時にTeamに対してプレイヤー&Botを振り分ける /ServerAssignPlayersToTeams ファンクション

主にはこの2つになります。

肝心のTeam ID (つまりどのチームに所属しているか)は、Player State (Lyraの場合はLyra Player State)に保存されています。

このため「LyraTeamCreationComponent」では、Lyra Player StateにCastして、Lyra Player Stateのチーム情報を変更するファンクション(SetGenericTeamId)を使っています。


B_TeamSpawningRulesを見てみる

次に、上記ファイルを見てみます。このブループリントもGame Stateの一つになっています。

こちらは「TDM_PlayerSpawningManagmentComponent」というC++ファイルを継承しています。

こちらでは何をやっているのでしょうか?

こちらではすごいシンプルで、どのLyra Player Startでスポーンするかを選んでいます。

ただし、すごーく分かりにくいのですが、このファイルは後述する「LyraPlayerSpawningManagerComponent」をさらに継承しており、どちらかというとこちらのほうがメインの処理が書いてあります。

では「LyraPlayerSpawningManagerComponent」では何をやっているのでしょうか?

基本的には、Spawn / Respawn時の処理が書いてあります。ただチーム分けの情報だけは書いていません。(チーム分けの情報は前述の「LyraTeamCreationComponent」)

あくまでどのLyra Player Startでスポーンするかの処理がメインになります。


B_PickRandomCharacterを見てみる

次に、上記ファイルを見てみます。このブループリントはControllerComponentというものの一つになっています。このファイルだけは珍しく、ブループリントに内容がありますね。
こちらは「LyraControllerComponent_CharacterParts」というC++ファイルを継承しています。

こちらでは何をやっているのでしょうか?

こちらでは、アクターの設定がメインになっています。このファイルがないと、アクターがない状態でプレイすることになります。

Cosmetic、つまり装飾についてのプログラムも用意されているので、リボンとか帽子とかをつけたり外したりが容易です。

また、開発中だけ使えるCheatについてもこちらで使えるようにできるようですが、いまいち不勉強なので良くわかっていません。



というわけでLyraシステムの解読をしてきました。これで次回からバリバリC++も弄っていきます。骨太な企画になりそうですね…(*_*)