온라인 멀티 플레이어 게임을 개발 중입니다. 로컬 영역 네트워크에서 테스트 할 때 잘 작동하지만 릴리스하기 전에 서버에 잘 연결되지 않은 사람에게 사용자 경험이 어떻게 작동하는지 테스트하고 싶습니다. 로컬 환경에있을 때 높은 대기 시간, 낮은 대역폭, 지터 및 가끔씩 패킷이 손실되는 인터넷 연결 상태를 어떻게 시뮬레이트 할 수 있습니까?
온라인 멀티 플레이어 게임을 개발 중입니다. 로컬 영역 네트워크에서 테스트 할 때 잘 작동하지만 릴리스하기 전에 서버에 잘 연결되지 않은 사람에게 사용자 경험이 어떻게 작동하는지 테스트하고 싶습니다. 로컬 환경에있을 때 높은 대기 시간, 낮은 대역폭, 지터 및 가끔씩 패킷이 손실되는 인터넷 연결 상태를 어떻게 시뮬레이트 할 수 있습니까?
답변:
나는 Dummynet 이 당신이 찾고있는 것이라고 생각 합니다. Dummynet은 대역폭 제한, 지연, 패킷 손실 등을 시뮬레이션 할 수있는 네트워크 에뮬레이션 도구입니다. 차단할 트래픽을 쉽게 선택하고 제한을 구성 할 수 있습니다 (예 : 들어오는 모든 TCP 트래픽을 2Mbit / s로 제한)
ipfw add pipe 2 in proto tcp
ipfw pipe 2 config bw 2Mbit/s
알려진 ipfw 방화벽에 의해 트래픽 선택이 이루어지고 파이프는 제한 기능을 제공합니다.
FreeBSD, Linux 및 Windows에서 사용할 수 있습니다.
Mac을 사용하는 경우 네트워크 링크 컨디셔너를 사용할 수 있습니다.
Edge 및 3G를 포함하여 다양한 인터넷 연결 불량 사례를 시뮬레이션 할 수 있습니다.
또한 고유 한 설정으로 고유 한 프로파일을 만들 수 있습니다.
Xcode에서 무료로 다운로드 할 수 있습니다 (Xcode → 개발자 도구 열기 → 추가 개발자 도구…로 이동하여 Xcode 용 하드웨어 IO 도구를 다운로드하십시오 ).
Linux를 사용하는 경우 netem 을 사용 하여 높은 대기 시간, 낮은 대역폭, 패킷 손실 및 기타 여러 가지 네트워크와 관련된 가능한 모든 문제를 시뮬레이션 할 수 있습니다 .
NetLimiter 라는 Windows 옵션 이 있지만 사용하지 않았으므로 보증 할 수 없습니다.
Clumsy ( Windows Vista 및 7)
로컬 환경에있을 때 높은 대기 시간, 낮은 대역폭, 지터 및 가끔씩 패킷이 손실되는 인터넷 연결 상태를 어떻게 시뮬레이트 할 수 있습니까?
Windows를 사용하는 경우 SoftPerfect Connection Emulator를 사용해보십시오 . 기본적으로 선택한 NIC의 응용 프로그램과 네트워크 계층 (Wireshark / WinPCAP와 유사) 사이에 자신을 삽입하고 제한된 대역폭, 대기 시간, 패킷 손실 및 기타 사항을 시뮬레이션 할 수있는 드라이버입니다. UI는 간단하고 간단합니다.
이 제품은 상용 제품이지만이 시험판을 사용하면이 도구가 원하는 기능을 수행하는지 판단하기에 충분한 30 초의 "간섭"버스트를 수행 할 수 있습니다.
또 다른 크로스 플랫폼 옵션은 DummyNet인데 , 이는 ipfw를 통해 유사한 방식으로 작동하지만 사용하기가 덜 쉽습니다.
서버에 제대로 연결되지 않은 사람에게 사용자 경험이 어떻게 작동하는지 테스트하고 싶습니다.
질문의이 부분은 "응용 프로그램의 네트워크 대기 시간을 어떻게 처리합니까?" 일반적으로 사용되는 효과적인 기술 중 하나는 Dead Reckoning 입니다. 링크 된 기사는 내가 할 수있는 것보다 더 잘 설명하지만 기본 아이디어는 클라이언트가 각 엔티티가 있어야하는 위치와 알고리즘에 의해 수행해야하는 작업을 "시뮬레이션"하는 것입니다. 엔터티가이 알고리즘 (예 : 플레이어 입력, 서버 측 이벤트 등)에서 벗어날 때마다 각 클라이언트에 업데이트를 보냅니다.
한동안 사용해 본 적이 없지만 이것을 테스트하기 위해 Charles 를 사용 했습니다. "높은 대기 시간, 낮은 대역폭, 지터 및 가끔씩 패킷 손실이 발생하는 인터넷 연결 불량"과 같은 문제를 시뮬레이션하는 등 다양한 네트워크 진단 도구가있는 응용 프로그램입니다.
당신과 잘 아는 경우 피들러 , 당신이있어 에만 HTTP / 1 다음 스크립팅 할 수 있습니다이 관심.
Fiddler는 HTTP / 2를 지원하지 않으므로이를 차단하면 모든 HTTP 트래픽이 HTTP / 1로 다운 그레이드됩니다.