네트워크 조건 시뮬레이션
개요
로컬 테스트를 할 때는 항상 네트워킹 코드를 현실적이거나 현실적 지연 및 손실보다 더 나쁜 상태에서 테스트하는 것이 좋습니다. 좋은 네트워크 게임 설계의 복잡성의 대부분은 플레이어 간의 역설과 시간 차이가 어떻게 숨겨져 있는지에 관한 것입니다. 이를 통해 코드 베이스가 만들어낼 실제 플레이어 경험을 알 수 있습니다.
이를 위해 실제 인터넷 연결로 테스트를 실행하거나 개발 파이프라인에서 로컬로 구축 및 테스트가 필요한 경우 시뮬레이션을 수행해야 합니다.
Fusion은 네트워크 조건 시뮬레이션에 내장되어 있으며, 이 시뮬레이션은 dll 디버깅 버전의 fusion.dll
을 사용할 때 사용할 수 있습니다. 릴리즈 dll을 사용할 때는 Windows 용 Clumsy 소프트웨어 등의 외부 소프트웨어를 사용해야 합니다.
내장 네트워크 조건
내장 네트워크 조건은 지연(레이턴시) 및 손실용 오실레이터와 랜덤 값 생성기의 조합으로 작동합니다. 이 오실레이터는 시간에 따라 변하는 값을 사용하여 지연 및 손실을 시뮬레이션할 수 있습니다(간헐적 혼잡과 같은 매우 끔찍한 인터넷 상태의 시뮬레이션 가능). 진동보다 고정된 값을 선호하는 경우 Min 값과 Max 값을 일치하도록 설정하면 됩니다.
네트워크 조건 사용하기
NetworkProjectConfig
(유니티 메뉴Fusion > Network Project Config
)를 엽니다.Network Conditions
라는 이름의 폴드아웃을 찾습니다.- 폴드아웃이 보이지 않는다면 프로젝트는 현재 release
fusion.dll
을 사용하고 있을 가능성이 높습니다. 이 경우 유니티 메뉴Fusion > Toggle Debug Dlls
로 이동하여 debug dll로 전환합니다. 주의: 변경 사항을 적용하려면 유니티 에디터를 다시 시작해야 할 수 있습니다.
- 폴드아웃이 보이지 않는다면 프로젝트는 현재 release
- 네트워크 상태 시뮬레이션을 활성화 및 비활성화하려면
Enabled
로 전환합니다.
설정
네트워크 조건
- Enabled: 불리한 네트워크 상태가 시뮬레이션되고 있는 경우.
- Delay Shape:
DelayMin
과DelayMax
값 사이에서 진동하는 데 사용되는 패턴. - Delay Min:
DelayShape
오실레이터에서 반환되는 가장 낮은 패킷 지연 값. - Delay Max:
DelayShape
오실레이터에서 반환된 패킷 지연 값 중 가장 높은 값. - Delay Period:
DelayShape
오실레이터의 주기(지연이 초 단위로 진동하는 속도). - Delay Threshold:
DelayShape
는 0과 1 사이에서 진동합니다. 이 임곗값 미만의 값은 0으로 감소하므로DelayMin
과 같은 값이 됩니다. - Additional Jitter:
DelayShape
오실레이터로부터의 지연 값이 결정된 후, 0과 이AdditionalJitter
사이의 추가 랜덤 값이 지연시간에 추가됩니다. - Loss Chance Shape:
LossChanceMin
그리고LossChanceMax
값 사이에서 진동하는 데 사용되는 패턴. - Loss Chance Min:
LossChanceShape
오실레이터가 만들어낼 가장 낮은 손실 확률 값. 0 = 손실 확률 0%, 1 = 손실 확률 100%. - Loss Chance Max:
LossChanceShape
오실레이터가 만들어낼 가장 높은 손실 확률 값. 0 = 손실 확률 0%, 1 = 손실 확률 100%. - Loss Chance Threshold:
LossChanceShape
파형은 0과 1 사이에서 진동합니다. 이 임계값 미만의 값은 0으로 감소하므로LossChanceMin
과 동일한 값이 됩니다. - Loss Chance Period:
LossChanceShape
오실레이터의 주기(지연이 초 단위로 진동하는 속도)입니다. - Additional Loss:
LossChanceShape
오실레이터에 의해 Loss Chance 값이 생성된 후, 0에서 이AdditionalLoss
사이의 추가 랜덤 값이 (정규화된) Loss Chance에 추가됩니다.
호스트 및 서버 모드
내장된 네트워크 조건은 각 피어에 표시된 값의 1/2을 생성합니다. 서버와 클라이언트 모두 이 값을 적용하여 총 지연 시간이 설정과 거의 같습니다. 즉, 200ms의 지연은 다음과 같은 결과를 가져옵니다:
- ~100ms 동안 패킷을 보관하는 서버 그리고
- 최대 100밀리초 동안 패킷을 보유하고 있는 클라이언트.
공유 모드
공유 모드에서 클라이언트는 항상 Photon 게임 서버를 온라인으로 연결합니다. 공유 모드에서 테스트할 때 로컬 클라이언트가 실제 온라인 플레이를 보고 있으므로 네트워크 조건을 시뮬레이션할 필요가 없습니다.
그러나 현재 연결이 제공하는 것보다 더 나쁜 조건을 시뮬레이션하기 위해 지연 시간과 손실을 추가하는 것이 여전히 바람직할 수 있습니다. 공유 모드에서는 클라이언트만 시뮬레이션된 지연 시간과 손실을 추가하므로 설정에 표시된 값의 절반(50%)만 실제로 적용됩니다. 따라서 공유 모드 테스트를 위해서는 값을 두 배로 늘려야 합니다. 또한 공유 모드에서는 이러한 값이 이미 온라인 상태에서 자연스럽게 발생하는 지연 시간에 추가됩니다.
타사 소프트웨어
fusion.dll
의 릴리스 버전을 사용하는 경우에도 서드파티 앱을 사용하여 네트워크 트래픽을 지연시키고 방해함으로써 불리한 네트워크 상태를 시뮬레이션할 수 있습니다.
Windows의 경우 Clumsy는 네트워크의 불리한 상황을 시뮬레이션할 때 가장 많이 사용되고 권장되는 타사 앱입니다.
대부분의 사용 사례에는 'udp and outbound' 의 필터링 문자열이 사용되어야 하며, 자세한 내용은 Clumsy 문서를 참조하시기 바랍니다. 주의: 사용 중인 포트 및 네트워크 IP 주소를 알아야 합니다.
Back to top