大量のActorがLineTraceを行う時、AsyncLineTraceを使う事で負荷を軽減できるかもしれません。このサンプルでは、通常のLineTraceByChannel
とAsyncLineTraceByChannel
の負荷を比較します。
このサンプルでは接地判定をシミュレートしています。周期的にバウンドする球型のActorは、それぞれが自分の足元から3uu真下にLineTraceを行います。TraceがBlockされたら球は緑色に、そうでないときは青色になります。
UE5.1.1以降
チェックボックスを操作して、stat unit
のGameの負荷がどのように変化するか確認してみて下さい。
Use async trace
: 有効な場合はAsyncLineTraceByChannel
を使います。Delay async result work until next tick
: 有効な場合はAsyncLineTraceByChannel
でDelegateを設定せず、各Actorの次回Tickで結果を拾って作業します。
Async Traceで行う仕事の性質で決めるのが良さそうです。
- Using Async Collision Traces in Unreal Engine 4 | by Bryan Corell | Medium
- ほぼこちらのブログの実装を参考にさせて頂きました。有難や🙏
- 60fpsアクションを実現する秘訣を伝授 解析編【UNREAL FEST EAST 2019】
AsyncLineTraceByChannel
以外の負荷軽減テクニックも大量に掲載されています
- UE4 BPで使える非同期タスクやマルチスレッドのプラグインを比較してみる
- BlueprintでAsyncLineTraceできるプラグインが紹介されています
以上