3. Replication Systems (레플리케이션 시스템)
UE의 세 가지 레플리케이션 시스템:
- Generic Replication System (기본 복제 시스템)
- Replication Graph (대규모 네트워크 환경 최적화)
- Iris Replication System (최신 개선 시스템)
3-1. Generic Replication System (기본 동기화 시스템)
- UE의 기본 네트워크 복제 시스템으로, 대부분의 문서가 이 시스템을 기준으로 작성됨.
- Actor, 속성, RPC 복제를 지원.
🔹 주요 기능
기능 | 설명 |
Dormancy | 특정 Actor가 클라이언트에 대한 복제 목록에서 제외되도록 설정 가능. |
Priority | 네트워크 대역폭이 제한될 경우, 어떤 Actor가 우선적으로 복제될지 결정. |
Relevancy | 특정 클라이언트에서 Actor가 중요하지 않을 경우 복제 제외 가능. |
3-2. Replication Graph (대규모 동기화 시스템)
- 많은 수의 Actor를 복제해야 하는 경우를 위한 확장 가능한 복제 시스템.
- 복제할 Actor를 그룹화하여 네트워크 부하를 최적화함.
- 예: 대규모 오픈월드 게임에서 사용.
3-3. Iris Replication System (최신 개선 시스템)
- UE의 최신 네트워크 복제 시스템으로, 기존 복제 시스템을 보완하며 성능을 향상.
- Generic Replication System과 함께 동작하지만, 일부 기능을 개선함.
- 새로운 기능 제공 (예: 더 세밀한 복제 필터링, 동적 우선순위 설정).
🔹 주요 기능
기능 | 설명 |
Filtering | 특정 클라이언트에 대해서만 Actor 복제 가능 (더 정밀한 네트워크 제어). |
Prioritization | Actor의 중요도를 동적으로 변경 가능하여 최적화 가능. |
5. 네트워크 최적화 팁
네트워크 게임의 성능을 향상시키려면 다음과 같은 팁을 따르는 것이 좋습니다.
- RPC 최소화: 가능한 RepNotify를 사용하고, RPC 호출 횟수를 줄입니다.
- 멀티캐스트 RPC 절제: 네트워크 부하를 줄이기 위해 최소한으로 사용합니다.
- 서버 전용 로직 구분: 불필요한 서버 RPC 대신 클라이언트가 실행할 필요가 없는 로직을 따로 처리합니다.
- RPC 입력 제어: 플레이어가 빠르게 버튼을 눌러 서버를 과부하시키지 않도록 제한합니다.
- 비신뢰성 RPC(Unreliable RPC) 사용: 자주 호출되는 RPC는 Unreliable로 설정해 네트워크 트래픽을 줄입니다.
- 네트워크 역할(Role) 확인: HasAuthority() 또는 IsLocallyControlled()를 사용해 코드 실행 위치를 필터링합니다.
- 네트워크 휴면 상태(Dormancy) 활용: 자주 변하지 않는 액터는 Dormant 상태로 두어 네트워크 사용량을 줄입니다.
6. 네트워크 디버깅과 테스트
멀티플레이어 게임의 복잡성을 고려하면, 디버깅과 테스트가 매우 중요합니다. 언리얼 엔진은 여러 가지 네트워크 디버깅 도구를 제공합니다.
- Net Profiler: 네트워크 트래픽을 분석하는 도구.
- Stat Net 명령어: 네트워크 성능을 모니터링.
- LogNet: 네트워크 관련 로그를 출력하여 문제를 진단.
- PIE(Play In Editor)에서 분할 실행: 클라이언트와 서버를 동시에 실행하여 테스트 가능.