2021.2.17こんにちは!情熱開発部プログラム課の平野です!今回はUE4歴1年の私が、レプリケーションの最適化に関連する機能について調べてみようと思います。拙い記事になってしまうかもしれませんが、どうか温かい目で見守っていただければと思います。そもそもレプリケーションとは?レプリケーション対象(AActor::bReplicatesがtrue)のアクターがサーバー上でパラメータ更新された際に、自動的にクライアントへ同期してくれる機能です。通信帯域が足りている時は即時レプリケーションされますが、足りなくなってしまうと同期が遅れていきます。(UE4内で優先度を計算し、優先度の高いものから順次レプリケーションされます。)↑の状態になるとサーバーとクライアントのズレによる不具合や、ラグいプレイ感を生み出してしまう原因になり得ます。レプリケーション最適化機能NetPriorityAActor::NetPriorityはレプリケーションによるパラメータ更新の優先度を設定することができます。*「NetPriority」で優先度を決め、順次同期処理を行います。重要度の高いアクターはこの値を高めに設定しておくことで、帯域が飽和状態にあっても(優先度の低いアクターの更新を犠牲に)同期されやすい状態にすることができます。レプリケーションされるべきかの判定をする仕組みです。レプリケーションされます。(指定した距離外のアクターは距離カリングされます。レプリケーションされるように設定可能です。true;NetCullDistanceSquaredが10mに設定されたアクターの10m以内に入るとレプリケーション復帰NetUpdateFrequencyAActor::NetUpdateFrequencyはレプリケーションの更新頻度設定ができます。重要度の低いアクターや頻繁に同期しなくてもよいアクターは、この数値を低めに設定することで、他の重要度の高いアクターが効率的に通信帯域を使用することができます。10.0f;NetDormancyAActor::NetDormancyはアクターを休眠状態(同期しない状態)に指定することができます。長時間、値が変更されないということが分かっている場合や、値を同期する必要がなくなったアクターに対して休眠状態を指定することで、値が変更されたかどうかの検査コストを下げることができます。同期リストから排除され休眠状態に入りますSetNetDormancy(DORM_Initial);さいごに以上、UE4のレプリケーション最適化機能についてでした。人は何かを犠牲にしなければ、何かを得ることはできないのですね。適切にこれらの機能を活用し、効率的に通信帯域を使って、ラグや不具合のないネットワークゲームを制作していきたいですね。株式会社ロジカルビートは一切の責任を負いません。understrap.com。