とあるゲームプログラマの挑戦と敗北の歴史

UE4とプログラミングとmayaとpythonとhtmlとマラソンを中心に情報を発信する元「技術ブログを目指すブログ」から再始動した毎日の日々を発信するブログです。

UE4:オンラインラーニング(ゲーム開発におけるブループリントと C++ のバランスの調整 )

UE4オンラインラーニング
ゲーム開発におけるブループリントと C++ のバランスの調整
を受講しました。

https://learn.unrealengine.com/course/3750127

ここでは学んだことのおぼえ書きとして、
記述したいとおもいます。


このラーニングでは
TwinStickShooterのテンプレートをC++で作成した場合を想定して説明がなされています。
f:id:toncrimentan_w:20210113115047p:plain



UPROPERTYには
EditAnywhere, BlueprintReadWrite
などのオプションが指定されています。

これはC++で定義した変数を
エディタで編集できるようになったり、
ブループリントで編集できるようにするための指定です。

f:id:toncrimentan_w:20210113113727p:plain



レベルごとのPCの初期パラメータの指定方法

一般的にはPlayerStartが配置されたところにPCが出現しますが、
自分で配置し初期パラメータを変更することができます。
・PlayerStartを取り除く
・自分でPCを配置
・初期パラメータを指定する
・そしてPawnのAutoProssessPlayerを PLAYER 0 に変更
によりPCの初期パラメータを変更した状態でゲームをプレイすることができます。

f:id:toncrimentan_w:20210113114836p:plain



C++でアセットパスを指定した際の注意点

FObjectFinderを利用することでC++からアセットへアクセスすることができます。
この指定には注意が必要です。
これはデザイナーがエディタからそのアセットの名前を変更した際に、
C++で参照していることを知らずに変更してしまう恐れがあるためです。

サウンドに関してはなおさらで、
ならなくなっていることが気づかない可能性もあります。

アセットパスはエディタから指定する作りを心がけましょう。

f:id:toncrimentan_w:20210113115426p:plain



お手本になるサンプルのご紹介

ARPG Game Templateが非常にC++とBPのバランスがよくつくられています。
Epic Launcher のラーニングタブにあります。



PlayerStartとPCを同時に配置した場合の注意

PlayerStartによる自動スポーンシステムと
PC手動配置によるスポーンと競り合うことになるので注意がひつようです。

f:id:toncrimentan_w:20210113120628p:plain



現在時間の取得方法

Nowブループリントがあるのでコスト計測に利用できます。

f:id:toncrimentan_w:20210113122123p:plain



BPよりはC++のほうが高速に動作します。

以下の3つを検証した結果
やっぱりC++がパフォーマンスが高かった。
(BPは超重い処理を行うと最悪クラッシュします)
C++
C++&BP
BP

f:id:toncrimentan_w:20210113122621p:plain



C++のメリット

・高速に動作すること
・可読性(メンテナンスの容易さ)
レプリケーションC++のほうが良い
プラグインを利用し別プロジェクトで利用する場合に有利
プラグインの作り方はこちら:https://learn.unrealengine.com/course/2503776
・プログラムをパクれる
 例としてepicのProjectileComponentなどの改造して使うことができる。



エディタで変更可能なゲームモードの作り方

C++ゲームモードを右クリック
・基づくブループリントクラスを作成
・これで編集可能なゲームモードがつくられる
・プロジェクト設定>マップ&モードから指定することができる。

f:id:toncrimentan_w:20210113133922p:plain
f:id:toncrimentan_w:20210113134402p:plain



C++でスポーンするBPをエディタで変更する方法

スポーンするBPを指定できるようにしておき
BPクラスからスポーンする作りに変更します。
f:id:toncrimentan_w:20210113141042p:plain
f:id:toncrimentan_w:20210113141214p:plain

あとはエディタ側でスポーンクラスを指定すれば
無事エディタでスポーンするBPを指定できるようになりました。
f:id:toncrimentan_w:20210113141334p:plain
f:id:toncrimentan_w:20210113141431p:plain



いろいろ、おさらいすることも多かった。
よいラーニングだった。