최근 기어즈 오브 워 팬과 이메일을 통해 시리즈 세 작품의 네트워킹 품질의 차이점에 대한 이야기를 나누었습니다. 여기서 네트워킹 품질 향상 측면에서 한 가지 짚어볼 수 있는 부분은, 저희가 언리얼 엔진에 내장된 네트워크 시뮬레이션 기능을 사용했다는 점입니다. 이러한 기능을 통해 다양한 네트워크 환경속에서 협동 / 경쟁 멀티플레이어 게임을 테스트해 볼 수 있었습니다. 이는 열악한 환경에서도 최선의 결과를 내는 것은 물론, 네트워크 관련 취약점 관련해서, 출시 후 커뮤니티에서 보고받은 내용에 대해 반응하기 보다는 출시 전 QA 랩에서 발견하는 것이 그 목표였습니다.
엔진에서 사용할 수 있는 세팅은 이렇습니다:
세팅 |
설명 |
---|---|
PktLag |
패킷 전송을 지정된 밀리초만큼 지연시킵니다. |
PktLagVariance |
패킷 전송 지연 시간에 약간의 가변성을 둡니다. 지정된 밀리초만큼 기간을 증감시킵니다. |
PktLoss |
패킷 손실 시뮬레이션을 위해 나가는 패킷을 지정된 확률로 버립니다. |
PktDup |
지정된 확률만큼 중복 패킷을 전송합니다. |
PktOrder |
켜면 패킷을 순서 없이 전송합니다. (1 = 켜짐, 0 = 꺼짐) |
이 세팅을 설정하는 방법은 1. 명령줄 인수, 2. 게임 내 콘솔 실행 명령, 3. 엔진 INI 파일, 총 세 가지입니다. 명령줄에서는 다음과 같이 지정합니다:
<SettingName>=<Value>
콘솔에서는 이렇습니다:
Net <SettingName>=<Value>
DefaultEngine.ini 파일을 통한 설정은, INI 파일에 다음 섹션을 추가한 다음 테스트하고자 하는 값을 바꿔줍니다:
[PacketSimulationSettings]
PktLag=0
PktLagVariance=0
PktLoss=0
PktOrder=0
PktDup=0
기어즈 오브 워 개발 도중 매일 빌드에 시뮬레이션 세팅 부분을 만들어, 각각의 랜 기반 플레이테스트에 실제와 같은 네트워크 조건을 구현할 수 있었습니다. 프로그래머 전용 협동 / 경쟁 플레이테스트에는 극한 (왕복 핑 500, 패킷 손실 10% 이상 등) 세팅을 사용하기도 했습니다. 이러한 테스트는 즐기기 위한 게임 플레이용이 아니라, 열악한 조건에서만 나타나는 네트워크 취약점이나 버그를 찾기 위함이었습니다. 이러한 조건이 자연 발생하지는 않을 것 같다 해도, 네트워크 취약점을 악용하는 치터를 방지하기 위한 테스트로는 최선입니다.
커뮤니티에서 취약점을 찾아 공유해 줄 수는 있지만, 이러한 문제 유형에 수동적으로 반응하기 보다는 능동적 대응을 하는 것이 훨씬 낫습니다. PR 및 커뮤니티 관리 팀에서 고마워 할 것입니다.
그러면 즐거운 취약점 사냥 되시길!