お世話になっております。
Dedicated Server でマルチスレッド実装を行うことはできますでしょうか。
可能な場合、参考になるページなどありますでしょうか。
<br/>
Unreal Insights を使用してパフォーマンスを見ていたところ、`Foreground Worker` や `Background Worker` などのスレッドの存在は見つけられたものの、その一方で アニメーションBP の `BlueprintThreadSafeUpdateAnimation` が(クライアント実行時とは異なり)メインスレッドで動いていることも同時に記録されています。
<br/>
このあたりの事情を理解したく、参考になるページ等をご教示いただければ幸いです。
デディケートサーバーがワーカースレッドへタスクを積極的にオフロードしないのは個々の処理において、FApp::ShouldUseThreadingForPerformance()の戻り値を参照し動作を変えるためです。
ShouldUseThreadingForPerformance関数の中をみていただくと、IsRunningDedicatedServer()が影響している行があるのでここをコメントアウトしていただくとデディケートサーバーでも大部分がクライアントと同じようにマルチスレッド化が行われます。
しかしながら一般的にデディケートサーバーではグラフィクスやアニメーションなどのグラフィックス描画に関する処理が概ね省かれるためWorldのTickがボトルネックになることは少なく、逆にマルチスレッド化による同期処理などのオーバーヘッドの方が大きくなりがちです。実際にマルチスレッド化でゲインが得られるかはプロジェクトによるため、もしデディケートサーバー上でのワールドのTickの負荷が高いようであればエンジンの書き換えをご検討できると思います。
ご回答ありがとうございました。
ページ等があるわけではないようですが、上記回答のみで伺いたかった内容を知ることができました。