UE4オンラインラーニング
ゲーム開発におけるブループリントと C++ のバランスの調整
を受講しました。
https://learn.unrealengine.com/course/3750127
ここでは学んだことのおぼえ書きとして、
記述したいとおもいます。
このラーニングでは
TwinStickShooterのテンプレートをC++で作成した場合を想定して説明がなされています。
UPROPERTYには
EditAnywhere, BlueprintReadWrite
などのオプションが指定されています。
これはC++で定義した変数を
エディタで編集できるようになったり、
ブループリントで編集できるようにするための指定です。
レベルごとのPCの初期パラメータの指定方法
一般的にはPlayerStartが配置されたところにPCが出現しますが、
自分で配置し初期パラメータを変更することができます。
・PlayerStartを取り除く
・自分でPCを配置
・初期パラメータを指定する
・そしてPawnのAutoProssessPlayerを PLAYER 0 に変更
によりPCの初期パラメータを変更した状態でゲームをプレイすることができます。
C++でアセットパスを指定した際の注意点
FObjectFinderを利用することでC++からアセットへアクセスすることができます。
この指定には注意が必要です。
これはデザイナーがエディタからそのアセットの名前を変更した際に、
C++で参照していることを知らずに変更してしまう恐れがあるためです。
サウンドに関してはなおさらで、
ならなくなっていることが気づかない可能性もあります。
アセットパスはエディタから指定する作りを心がけましょう。
お手本になるサンプルのご紹介
ARPG Game Templateが非常にC++とBPのバランスがよくつくられています。
Epic Launcher のラーニングタブにあります。
PlayerStartとPCを同時に配置した場合の注意
PlayerStartによる自動スポーンシステムと
PC手動配置によるスポーンと競り合うことになるので注意がひつようです。
現在時間の取得方法
Nowブループリントがあるのでコスト計測に利用できます。
BPよりはC++のほうが高速に動作します。
以下の3つを検証した結果
やっぱりC++がパフォーマンスが高かった。
(BPは超重い処理を行うと最悪クラッシュします)
C++
C++&BP
BP
C++のメリット
・高速に動作すること
・可読性(メンテナンスの容易さ)
・レプリケーションはC++のほうが良い
・プラグインを利用し別プロジェクトで利用する場合に有利
(プラグインの作り方はこちら:https://learn.unrealengine.com/course/2503776)
・プログラムをパクれる
例としてepicのProjectileComponentなどの改造して使うことができる。
エディタで変更可能なゲームモードの作り方
・C++ゲームモードを右クリック
・基づくブループリントクラスを作成
・これで編集可能なゲームモードがつくられる
・プロジェクト設定>マップ&モードから指定することができる。
C++でスポーンするBPをエディタで変更する方法
スポーンするBPを指定できるようにしておき
BPクラスからスポーンする作りに変更します。
あとはエディタ側でスポーンクラスを指定すれば
無事エディタでスポーンするBPを指定できるようになりました。
いろいろ、おさらいすることも多かった。
よいラーニングだった。