언리얼 - 언리얼 액터의 네트워크 복제 설정

정재훈·2025년 8월 12일
0

unreal engine

목록 보기
45/45

언리얼 액터의 네트워크 복제 설정

1. bReplicates = true;

  • 의미 : 액터 자체의 복제
    • 네트워크를 통해 액터의 생성/삭제, Replicated 변수, RPC를 클라이언트로 복제
  • 작동 방식 :
    • 서버에서 액터가 생성되면, bReplicates = true일 경우 클라이언트에게도 해당 액터를 생성하고 속성을 동기화
    • 반대로 false면, 액터는 서버에만 존재하고 클라이언트에서는 아예 생성되지 않거나, 생성되어도 값이 네트워크로 전달되지 않음

2. SetReplicateMovement(true);

  • 의미 : 액터의 Transform(위치, 회전, 스케일)를 자동으로 네트워크 복제할지 여부를 설정
  • 작동 방식 :
    • 이 값을 true로 하면, 서버에서 액터의 Transform이 바뀔 때 자동으로 클라이언트로 복제
    • false면, 위치 변화는 네트워크로 보내지 않으니 직접 RPC(Remote Procedure Call)나 다른 방식으로 전달해야 변경값이 적용됨

3. 컴포넌트 복제 (Component->SetIsReplicated(true))

  • 의미 : 해당 컴포넌트를 네트워크 하위 객체(Replicated Subobject)로 복제 대상에 올리겠다는 뜻
    • 서버에서 해당 액터를 복제할 때, SetIsReplicated(true)인 컴포넌트는 클라이언트 쪽에도 같은 인스턴스가 생성됨
  • 되는 것 : 이 컴포넌트에 UPROPERTY(Replicated)로 표시된 프로퍼티 값들이 서버에서 클라이언트로 동기화됨

  • 안 되는 것 : 컴포넌트의 Transform, 물리 상태, 머티리얼 등과 같은 컴포넌트의 상태들은 자동으로 복제되지 않음

SetSimulatePhysics(false)가 동기화되지 않는 이유

  1. 함수 자체의 복제 불가능 : SetSimulatePhysics() 함수 자체는 네트워크를 통해 자동으로 복제되지 않음 -> 서버에서 이 값을 바꾸고, 그 결과(상태)를 복제해야 함

  2. 프로퍼티 복제와 기능 복제의 차이: SetIsReplicated()는 컴포넌트의 프로퍼티 값들을 동기화, 물리 시뮬레이션 토글(Ragdoll on/off) 같은 상태 전환 동작은 반영되지 않음

해결 방안으로는 RPC를 사용하여 서버에서 SetSimulatePhysics(false)를 호출하게 만들거나, OnRep_을 사용하여 물리 시뮬레이션 상태를 나타내는 변수를 동기화

profile
드가자

0개의 댓글