복제¶
게임에서는 대개 플레이어와 개체를 클라이언트 전체에 복제해야 하며, 플레이어들은 상대할 다른 플레이어와 개체를 볼 수 있어야 합니다. 또, 이 액터들의 속성도 동기화해야 합니다.
Strix Unreal SDK에서는 Replicator 요소가 복제를 담당합니다. 이 요소는 그것이 추가되는 액터의 클래스를 Strix에 등록하며, Strix는 다른 플레이어의 게임 월드에 이 액터의 레플리카를 스폰합니다.
플레이어 간에 액터가 복제되는 경우 각 플레이어는 모두 가급적 같은 수준으로 하는 것이 좋습니다. 복제된 액터는 플레이어의 월드에서 실제 개체이므로 그 안에 있는 액터와 상호작용을 할 수 있습니다. Strix는 비전용 서버를 이용하므로 비동기화 문제가 일어나지 않도록 주의해야 합니다.
Strix Replicator 요소¶
Strix Replicator 요소는 기본 복제 요소로, 다른 Strix 요소 전체에서 이 요소를 요구합니다. 나머지 네 요소를 이용하고 싶은 액터가 있다면 이것을 거기에 입력하면 됩니다. 왜냐하면 Strix Replicator가 타입 ID(Strix에서 현재 상대하고 있는 액터의 타입을 확인할 때 이용하는 속성)를 부여할 책임이 있기 때문입니다.
Strix Replicator는 액터 클래스를 Strix에 등록합니다. 플레이어가 방에 들어오면 Replicator가 그 클래스의 복제된 액터를 다른 클라이언트에 인스턴스화합니다. 월드 위치는 0,0,0입니다. 다른 클라이언트에 Replicator 요소가 있는 기존 액터도 새 플레이어의 월드에 복제됩니다.
옵션¶
Strix Replicator는 고정되어 있는 월드 개체만 아니라면 어떤 액터에도 추가할 수 있습니다. Strix Replicator에는 다음과 같은 옵션이 있습니다.
Ticks Per Second |
int |
액터 속성의 업데이트는 1초마다 일어납니다.
|
|
Instantiable By |
Anyone 또는 Room Owner |
이 액터의 레플리카를 다른 클라이언트에 인스턴스화는 사람을 결정합니다.
Anyone으로 설정되면 방에 있는 플레이어 모두가 이 액터의 새 레플리카를 다른 모든 클라이언트에 인스턴스화합니다.
Room Owner로 설정되면 방장만 레플리카를 인스턴스화합니다. 따라서 그 외 레플리카에는 모두 이 액터의 레플리카가 복수로 존재합니다. 픽업과 같은 개체에 유용합니다.
|
|
Connection Closed Behaviour |
Delete 또는 Change Ownership |
연결이 끊어지면 동작을 결정합니다.
기본값은 Delete이며, 연결이 끊어졌을 때 액터를 파괴합니다.
Change Ownership은 개체의 소유자를 새로 선택하고 소유권을 그 소유자로 바꿉니다. 이것으로 방이 빌 때까지 액터를 생존 상태로 유지할 수 있습니다.
|
|
Should Receive Destroy Events |
bool |
오리지널이 파괴되었을 때 이 액터를 파괴할지 판단합니다.
기본값은 참입니다.
거짓인 경우, 액터는 서버의 삭제된 메시지를 무시합니다.
즉, 오리지널 액터가 파괴되어도 레플리카는 다른 클라이언트에 남아 있다는 뜻입니다. 이것은 플레이어가 예기치 않게 연결 해제되었을 때 레벨에서 액터를 원활하게 제거하기 위함입니다.
|
|
Auto Register Properties |
bool |
기본값은 참입니다.
참이면 Replicator가 이 액터의 블루프린트 변수 중에서 동기화할 수 있는 것은 모두(원시 타입과 스트럭트 전부) 동기화합니다. 단, 복제 조건이 Replicated로 설정되어 있어야 합니다.
|
참고
블루프린트가 아닌 액터의 복제는 지원하지 않습니다.