퍼포먼스 및 대역폭 팁

액터 리플리케이션의 퍼포먼스와 대역폭 사용량 최적화 관련 팁입니다.

Windows
MacOS
Linux

액터 리플리케이션은 시간이 걸릴 수 있습니다. 엔진은 이 작업의 효율을 가급적 높이려 최선을 다합니다만, 이 작업을 수월하게 만들기 위해 할 수 있는 일이 몇 가지 있습니다.

리플리케이트할 액터를 수집할 때, 서버는 연관성, 업데이트 빈도, 휴면 여부와 같은 것을 몇 가지 검사합니다. 이러한 검사를 미세조정하여 퍼포먼스에 영향을 끼치도록 할 수 있습니다. 이 프로세스의 효율을 가급적 높이기 위해 생각을 해 보자면, 우선권을 이렇게 하는 것이 가장 좋습니다:

  • 리플리케이션을 끕니다. (AActor::SetReplicates( false ))

    • 이 액터가 리플리케이트되지 않을 때는 애초에 목록에 올라가지 않으니 가장 좋은 방법이 되므로, 리플리케이트할 필요가 없는 액터의 경우 그렇게 마킹해 주면 됩니다.

  • NetUpdateFrequency (네트 업데이트 빈도) 값을 낮춥니다.

    • 액터 업데이트 빈도가 낮을 수록, 업데이트에 걸리는 기간도 짧아집니다. 이 수치는 가급적 낮게 하는 것이 가장 좋습니다. 이 수치는 이 액터가 클라이언트에 리플리케이트되는 초당 빈도를 나타냅니다.

  • 휴면 여부 (Dormancy)

  • 연관성 (Relevancy)

  • NetClientTicksPerSecond (네트 클라이언트 초당 틱 수)

꼭 필요치 않다면 프로퍼티에 리플리케이트 마킹을 하지 마세요. 가급적 기존의 리플리케이트되는 프로퍼티에서 상태를 파생하려고 시도하는 것이 가장 좋습니다.

이미 존재하는 양자화 함수성, 이를테면 FVector_NetQuantize 같은 것을 활용해 보세요. 이 상태를 클라이언트에 리플리케이트시키는 데 필요한 크기를 크게 줄여주며, 제대로만 사용한다면 눈에 띄는 부작용은 없을 것입니다.

FName 은 보통 압축되지 않으니, RPC 의 파라미터로 사용할 때는 일반적으로 매 호출마다 스트링을 전송하게 된다는 점을 유념해 주시기 바랍니다. 부하가 꽤 클 수 있습니다.

Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼