Replicates 속성
단순히 RPC 키워드를 작성해서 로직을 잘 작성하더라도
복제를 원하는 액터의 Replicates 속성을 true로 바꿔줘야
Server의 액터 상태가 클라들에도 복제가 된다
ASLandMine::ASLandMine()
{
...
bReplicates = true;
}
Server RPC의 실행 흐름 예시
1. Owner Client에서 특정 키를 누름
2. 해당 키를 누른 Owner Client의 캐릭터 클래스의 키 바인드 함수 호출
3. 서버로 보내는 패킷에 Server RPC 함수의 정보도 Serialize 해서 전송
4. 서버에서는 패킷을 Deserialize 후 Owner Client의 캐릭터 클래스 Server RPC 함수 수행
5. 서버에서 특정 액터가 스폰
6. 해당 액터의 bReplicates 속성이 true이므로, 클라들에게 스폰 정보가 복제
물리 동기화
액터의 Simulate Physics를 true로 설정하면
서버에서 물리 시뮬레이션이 실행되고, 그 결과를 클라이언트에게 전송하여 동기화를 시도한다
그러나 네트워크 지연, 패킷 손실, 연산 과부하 등으로 인해 완벽한 동기화는 불가능하다
보간, 예측 클라이언트 움직임, 물리 엔진 설정 조정 등의 기법을 사용하여
이러한 문제를 완화할 수 있다
Net Culling Distance Squared
액터의 속성 중 Net Cull Distance Squared를 통해 컬링 거리를 설정할 수 있다
클라의 View Target 위치와 해당 액터의 위치가 해당 설정한 거리 이상 멀어지면 Replicate 되지 않는다
Always Relevant
액터의 속성 중 Always Relevant를 true로 설정하면
Net Culling Distance와는 무관하게 반드시 Replicate가 되도록 할 수 있다
물론, 플레이어가 많을수록 해당 속성을 체크하는 건 상당한 부하를 유발한다
'게임 엔진 > [코드조선] 언리얼 데디서버' 카테고리의 다른 글
Replicated, ReplicatedUsing 키워드 (0) | 2025.03.07 |
---|---|
함수 내부에서의 구분 (0) | 2025.03.07 |
RPC 키워드 사용법 (0) | 2025.03.07 |
RPC (Remote Procedure Call) (0) | 2025.03.07 |
언리얼 멀티플레이 개념 (0) | 2025.03.07 |