アクタのレプリケーション は時間を要する場合があります。Unreal Engine (UE) はレプリケーション処理を出来るだけ効率よく行いますが、ユーザー側でこのジョブをより簡単に行うための留意点がいくつかあります。
レプリケーションを行うアクタの収集時に、サーバーは関連性、更新頻度、ドーマンシーなどいくつかの点をチェックします。パフォーマンスに影響を与えるために、このようなチェックを調整することができます。可能な限り処理の効率化を図るには、以下の順番で優先順位を付けるのがベストと考えられます。
- レプリケーションをオフにする (
AActor::SetReplicates( false )
)- アクタをレプリケートしていない時に、このアクタがそもそもリスト上に無い場合など、レプリケートが不必要なアクタをオフ状態にすることで効率性が向上します。
NetUpdateFrequency
値を下げる- アクタ更新が少なければ少ないほど、更新に要する時間が少なくなります。この値に、出来る限り低い値を設定することをお勧めします。この値は、アクタがクライアントへ 1 秒間にレプリケートされる頻度を示します。
- ドーマンシー
- 関連性
NetClientTicksPerSecond
必要がある場合を除いて、プロパティのレプリケートには絶対にチェックをいれないでください。可能な場合は、既存のレプリケートプロパティからステートの派生を試みてください。
既存の量子化機能を利用してください。例えば FVector_NetQuantize
クライアントへこのステートをレプリケートするために必要なサイズが大幅に削減できます。正しく使用すれば目立ったアーティファクトは発生しません。
FName
は通常は圧縮されていないため、RPC へのパラメータとして使用する際は各コールに文字列を送信することに留意してください。この処理はオーバーヘッドが大きくなる可能性があります。