퍼포먼스 및 대역폭 팁

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

Windows
MacOS
Linux

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

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

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

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

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

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

  • 휴면 여부 (Dormancy)

  • 연관성 (Relevancy)

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

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

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

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

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback