퍼포먼스 및 대역폭 팁

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

Choose your operating system:

Windows

macOS

Linux

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

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

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

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

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

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

  • 휴면 여부 (Dormancy)

  • 연관성 (Relevancy)

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

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

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

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

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
건너뛰기