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