This document is about: FUSION 2
SWITCH TO

네트워크 환경 시뮬레이션

개요

로컬 테스트 시, 네트워크 코드를 항상 현실적인 또는 현실보다 더 나쁜 지연 및 손실 조건하에서 테스트하는 것이 좋습니다.
좋은 네트워크 게임 디자인의 복잡성 대부분은 플레이어 간 시간 차이와 모순을 얼마나 잘 숨기느냐에 달려 있습니다.
이런 테스트를 통해 실제 플레이어가 경험하게 될 상황을 미리 알 수 있습니다.

이를 위해 실제 인터넷 연결로 테스트하거나, 개발 파이프라인이 로컬 테스트를 필요로 할 경우 네트워크 환경을 시뮬레이션해야 합니다.

Fusion은 내장된 네트워크 상태 시뮬레이션 기능을 제공합니다. 단, 이 기능은 fusion.dll의 디버그 버전 사용 시에만 활성화됩니다.
릴리스 버전 사용 시에는 Windows용 Clumsy 같은 외부 소프트웨어를 사용해야 합니다.

내장 네트워크 상태

Network Conditions Foldout
Network Project Config의 Network Conditions 옵션.

내장된 네트워크 상태 시뮬레이션은 지연 및 손실에 대해 시간에 따라 변동하는 값을 생성하기 위해 오실레이터와 랜덤 값 생성기를 사용합니다.
(간헐적 혼잡 같은 매우 나쁜 인터넷 상태도 시뮬레이션할 수 있습니다.)
고정 값으로 테스트하고 싶다면 Min과 Max 값을 동일하게 설정하면 됩니다.

네트워크 상태 시뮬레이션 활성화

  1. 유니티 메뉴 Fusion > Network Project Config로 이동합니다.
  2. Network Conditions 접기 메뉴(Foldout)를 찾습니다.
    • 만약 Network Conditions가 보이지 않는다면, 현재 프로젝트는 릴리스 fusion.dll을 사용 중일 가능성이 높습니다. 이 경우, Fusion > Toggle Debug Dlls를 선택해 디버그 버전으로 전환하세요. (주의: 유니티 에디터를 재시작해야 적용될 수 있습니다.)
  3. Enabled를 켜서 네트워크 상태 시뮬레이션을 활성화합니다.

설정 항목

Network Conditions
인공적인 지연 및 손실 설정.

네트워크 조건 설정

  • Enabled: 네트워크 상태 시뮬레이션을 활성화할지 여부.
  • Delay Shape: DelayMinDelayMax 사이를 오실레이션하는 패턴.
  • Delay Min: 최소 패킷 지연 시간(ms).
  • Delay Max: 최대 패킷 지연 시간(ms).
  • Delay Period: 지연 오실레이터가 주기적으로 변동하는 시간(초 단위).
  • Delay Threshold: 오실레이터 값이 이 임곗값 이하일 경우 DelayMin 값으로 설정.
  • Additional Jitter: Delay 값에 추가로 랜덤 지터(0 ~ 지정값)를 추가.
  • Loss Chance Shape: LossChanceMinLossChanceMax 사이를 오실레이션하는 패턴.
  • Loss Chance Min: 최소 패킷 손실 확률 (0 = 0%, 1 = 100%).
  • Loss Chance Max: 최대 패킷 손실 확률 (0 = 0%, 1 = 100%).
  • Loss Chance Threshold: 오실레이터 값이 이 임곗값 이하일 경우 LossChanceMin 값으로 설정.
  • Loss Chance Period: 손실 오실레이터가 변동하는 주기(초 단위).
  • Additional Loss: Loss 값에 추가로 랜덤 손실 확률(0 ~ 지정값)을 추가.

호스트 및 서버 모드

내장 네트워크 상태 시뮬레이션은 양쪽(서버/클라이언트) 각각에 설정값의 절반을 적용합니다.
즉, 200ms 지연을 설정하면:

  • 서버는 패킷을 약 100ms 동안 보류하고,
  • 클라이언트도 패킷을 약 100ms 동안 보류합니다.

결과적으로 전체 지연이 약 200ms가 됩니다.

공유 모드

공유 모드에서는 클라이언트가 항상 Photon 게임 서버에 직접 연결됩니다.
따라서 공유 모드에서는 일반적으로 별도의 시뮬레이션이 필요하지 않습니다.

하지만 더 나쁜 조건을 테스트하고자 한다면, 추가로 지연이나 손실을 설정할 수 있습니다.
단, 공유 모드에서는 클라이언트 측에만 인위적 지연과 손실이 추가되므로, 설정값의 50%만 실제로 적용됩니다.
따라서 공유 모드에서는 값을 두 배로 설정해야 기대하는 결과를 얻을 수 있습니다.

또한 공유 모드에서는 이 값들이 이미 존재하는 실제 네트워크 지연에 "추가"로 적용된다는 점을 주의하세요.

외부 소프트웨어 사용

릴리스 버전 fusion.dll을 사용하는 경우에도,
외부 앱을 통해 네트워크 지연과 손실을 시뮬레이션할 수 있습니다.

Windows에서는 Clumsy가 가장 많이 사용되고 추천되는 툴입니다.

Clumsy User Interface
Clumsy 사용자 인터페이스.

대부분의 경우, 필터링 문자열로 'udp and outbound'를 사용하면 충분합니다.
자세한 설정 방법은 Clumsy 공식 문서를 참고하세요.
(주의: 포트 번호 및 네트워크 IP 주소를 알고 있어야 합니다.)

Back to top