bReplicates = true;
bReplicates = true
일 경우 클라이언트에게도 해당 액터를 생성하고 속성을 동기화false
면, 액터는 서버에만 존재하고 클라이언트에서는 아예 생성되지 않거나, 생성되어도 값이 네트워크로 전달되지 않음SetReplicateMovement(true);
되는 것 : 이 컴포넌트에 UPROPERTY(Replicated)로 표시된 프로퍼티 값들이 서버에서 클라이언트로 동기화됨
안 되는 것 : 컴포넌트의 Transform, 물리 상태, 머티리얼 등과 같은 컴포넌트의 상태들은 자동으로 복제되지 않음
SetSimulatePhysics(false)
가 동기화되지 않는 이유함수 자체의 복제 불가능 : SetSimulatePhysics()
함수 자체는 네트워크를 통해 자동으로 복제되지 않음 -> 서버에서 이 값을 바꾸고, 그 결과(상태)를 복제해야 함
프로퍼티 복제와 기능 복제의 차이: SetIsReplicated()
는 컴포넌트의 프로퍼티 값들을 동기화, 물리 시뮬레이션 토글(Ragdoll on/off) 같은 상태 전환 동작은 반영되지 않음
해결 방안으로는 RPC를 사용하여 서버에서 SetSimulatePhysics(false)
를 호출하게 만들거나, OnRep_
을 사용하여 물리 시뮬레이션 상태를 나타내는 변수를 동기화