액터 리플리케이션은 시간이 걸릴 수 있습니다. 엔진은 이 작업의 효율을 가급적 높이려 최선을 다합니다만, 이 작업을 수월하게 만들기 위해 할 수 있는 일이 몇 가지 있습니다.
리플리케이트할 액터를 수집할 때, 서버는 연관성, 업데이트 빈도, 휴면 여부와 같은 것을 몇 가지 검사합니다. 이러한 검사를 미세조정하여 퍼포먼스에 영향을 끼치도록 할 수 있습니다. 이 프로세스의 효율을 가급적 높이기 위해 생각을 해 보자면, 우선권을 이렇게 하는 것이 가장 좋습니다:
리플리케이션을 끕니다. (
AActor::SetReplicates( false )
)이 액터가 리플리케이트되지 않을 때는 애초에 목록에 올라가지 않으니 가장 좋은 방법이 되므로, 리플리케이트할 필요가 없는 액터의 경우 그렇게 마킹해 주면 됩니다.
NetUpdateFrequency (네트 업데이트 빈도) 값을 낮춥니다.
액터 업데이트 빈도가 낮을 수록, 업데이트에 걸리는 기간도 짧아집니다. 이 수치는 가급적 낮게 하는 것이 가장 좋습니다. 이 수치는 이 액터가 클라이언트에 리플리케이트되는 초당 빈도를 나타냅니다.
휴면 여부 (Dormancy)
연관성 (Relevancy)
NetClientTicksPerSecond (네트 클라이언트 초당 틱 수)
꼭 필요치 않다면 프로퍼티에 리플리케이트 마킹을 하지 마세요. 가급적 기존의 리플리케이트되는 프로퍼티에서 상태를 파생하려고 시도하는 것이 가장 좋습니다.
이미 존재하는 양자화 함수성, 이를테면 FVector_NetQuantize
같은 것을 활용해 보세요. 이 상태를 클라이언트에 리플리케이트시키는 데 필요한 크기를 크게 줄여주며, 제대로만 사용한다면 눈에 띄는 부작용은 없을 것입니다.
FName
은 보통 압축되지 않으니, RPC 의 파라미터로 사용할 때는 일반적으로 매 호출마다 스트링을 전송하게 된다는 점을 유념해 주시기 바랍니다. 부하가 꽤 클 수 있습니다.