모바일 게임에서의 실시간 멀티플레이에서 P2P와 CS 네트워킹의 비교

by haley.choi / 2016. 05. 16. [12:18]

모바일 게임에서의 실시간 멀티플레이에서 P2PC/S 네트워킹에 대해 비교하면서 서술 하겠습니다.

 

결론부터 말하자면, 다음과 같습니다.

 

l  Wifi 환경에서 게임을 할때는 높은 확률로 직접 P2P 통신을 합니다.

l  FPS, 레이싱 장르 등 레이턴시가 민감한 게임은 P2P가 효과적입니다.

l  P2P는 해킹에 취약한 면이 있습니다. C/S는 사용법에 따라 해킹에 취약할 수 있습니다.

l  보편적으로 P2PC/S보다 레이턴시(반응 속도)가 더 좋습니다

 

자세한 내용을 말씀 드리겠습니다.
 

 

C/S 네트워킹과 P2P 네트워킹이란

멀티플레이어 게임에서 C/S 네트워킹 혹은 클라이언트-서버 네트워킹을 할 때는, 클라이언트에서의 메시지 가령 플레이어 캐릭터의 이동이나 플레이어가 입력한 명령을 서버에 보내고 서버가 그것을 다른 클라이언트들에게 보냅니다.

             

 

 

P2P 네트워킹 혹은 피어투피어(peer-to-peer) 네트워킹을 할 때는 클라이언트가 직접 다른 클라이언트에게 메시지를 보냅니다.

 

 

 

l  Wifi 환경에서 게임을 할 때 높은 확률로 직접 P2P 통신을 합니다.

 

게임을 할 때 두 기기 사이가 모두 셀룰러 네트워크 즉 3GLTE인 경우에는 홀펀칭 성공률은 제각각입니다.

한국의 경우 통신사마다 다릅니다. KT를 제외하고 나머지 통신사 기기간에는 P2P 홀펀칭이 잘 됩니다.

  SK Telecom LG Telecom KT
SK Telecom O O X
LG Telecom O O X
KT X X X

국내 통신사별 사용자수 통계도 포함해서 P2P 성공율을 산출하면 56%입니다.

한쪽이나 양쪽이 Wifi이면 홀펀칭 성공율은 높습니다.

 

 


 

실시간 멀티플레이 게임에서는 데이터 통신 요금이 발생합니다. 사용자 입장에서는 아무래도 신경이 쓰이죠.

중국에서는 통신 요금이 비싼 중국에서는 메신저앱 푸시 알림이 오면 이를 확인하기 위해 Wifi가 되는 환경을 찾아가기도 합니다

따라서 사용자들은 3G나 LTE 대신 Wifi를 선호하기 마련입니다. 

 


 

 

l   레이턴시가 민감한 게임은 P2P가 효과적입니다.

모바일 네트워크(3G/LTE)의 회선 품질이 좋지 않을 경우에는 P2PC/S의 레이턴시는 큰 차이가 나지 않습니다.

 

하지만 모바일 네트워크(3G/LTE)의 품질이 좋을 때는 P2P C/S 간의 차이가 확연해집니다.

 

품질이 좋은 모바일 네트워크(3G/LTE))에서는

P2P의 경우 약 2ms,

C/S에서는 약 12ms

처리 딜레이를 확인할 수 있습니다. (환경에 따라 다소 차이가 있을 수 있습니다.)

 

아마도 FPS 게임을 주로 하는 유저들은 레이턴시 10ms의 차이가 무엇을 의미하는지 절실하게 공감할 것입니다



 

 

 

 

l   P2P는 해킹에 취약한 면이 있습니다. C/S는 사용법에 따라 해킹에 취약해질 수 있습니다.

 

C/S 방식인 실시간 멀티플레이 온라인 게임의 경우 멀티플레이 동기화를 하는 방식은 크게 세가지로 구분됩니다..

  

l  방식 1: 클라이언트에서 명령을 보내는 방식 (Player 1 -> Player 1 Input(Scene Update))

l  방식 2: 클라이언트에서 연산된 플레이어 이동 정보만을 보내는 방식

 

방식1은 방식2에 비해 클라이언트 해킹에 강합니다.

그 이유는 플레이어 캐릭터에 대한 이동 연산을 서버에서도 처리하기 때문입니다.

하지만 scene update를 서버에서 모두 처리하는 것은 서버 성능에 있어서 상당한 부하를 차지합니다.

 

더 큰 문제가 발생하는데, 방식2보다 게임 플레이 중에 발생하는 끊김 현상 혹은 랙 현상이 더 심합니다.

 

<방식1을 쓴 게임의 랙 현상 https://www.youtube.com/watch?v=83i8Yzkkzvg>

 

방식2는 방식1과 달리, 플레이어 캐릭터에 대한 이동 연산을 클라이언트가 합니다. 따라서 방식1과 달리 해킹에 약합니다. P2P는 해킹에 약하지만 방식 1도 P2P와 거의 동급으로 해킹에 약합니다. 그나마 할 수 있는 최선은, 클라이언트의 연산이 해킹된 결과인지를 검사하는 것 뿐입니다.

방식1의 장점은 방식1보다 훨씬 쾌적한 멀티플레이입니다. 레이턴시에 덜 민감하기 때문입니다.  

 

모바일 게임은 무선 네트워크(WIFI/3G/LTE)를 사용합니다.

문제는 무선 네트워크의 레이턴시가 유선 네트워크에 비해서 편차가 크다는 데 있습니다.

무선 네트워크의 품질이 양호하더라도 간헐적인 큰 레이턴시는 피할 수 없습니다.

방식2는 간헐적인 큰 레이턴시가 일어나더라도 대부분 게임 플레이중에 이상함을 못 느낍니다.

하지만 방식1은 큰 레이턴시가 일어날 때 마다 게임플레이가 stuttering이 일어납니다. 화면이 잠깐 잠깐씩 멈춰버리는 현상입니다.

 

이러한 문제점 때문에 대부분의 모바일 게임에서는 클라이언트-서버 네트워킹을 할 경우 어쩔 수 없이 방식2를 사용하고 있습니다.

 

모바일 P2P 네트워킹에서는 플레이어의 이동 처리를 클라이언트가 담당합니다. 따라서 해킹에 취약할 수 밖에 없습니다.

그러나 클라이언트-서버 네트워킹으로 만든다 하더라도 방식2를 선택하는 이상 P2P 네트워킹과 마찬가지로 해킹에 취약해집니다. 해결하려면 방식1을 써야 하지만 게임의 질을 크게 떨어뜨리므로 선호되지 않고 있습니다.

 

 

l   보편적으로 P2PC/S보다 레이턴시(반응 속도)가 좋습니다.

 

멀티플레이에서 P2P 네트워킹을 적용하는 방식은 크게 두가지가 있습니다.

l  수퍼피어 방식: 클라이언트 중 하나가 모든 플레이어의 scene update를 담당합니다. 흔히들 리슨 서버 방식이라고 말합니다.

l  대칭피어 방식: 각 클라이언트가 각자 플레이어의 scene update를 담당합니다. 리슨 서버 방식이 아닙니다.

 

 

   

수퍼피어 방식은 패키지 게임에서 시작된 방식이며 이 방식은 일부 온라인 게임에서도 사용되고 있습니다. 서버에서 처리하기에는 scene update 들의 연산량이 많거나, 대칭피어 방식으로 개발하기 힘든 이유가 있을 때에 쓰이기도 합니다.

 

불가피한 경우가 아닌 이상 수퍼피어 방식을 피해야 합니다.

수퍼피어 방식의 경우 슈퍼 피어로 선정된 플레이어가 게임 플레이 도중 이탈할 때 함께 플레이하던 다른 플레이어들도 게임이 중단된다는 문제점이 있고, 수퍼 피어의 처리 성능이 나쁠 경우 다른 플레이어들도 모두 악영향을 받습니다.

 

따라서 많은 온라인 게임에서 P2P 네트워킹은 대칭피어 방식으로 사용됩니다.

대칭피어 방식에서는 각 플레이어의 위치 정보를 직접 다른 클라이언트들에게 전송합니다.

그러므로 플레이어는 C/S 방식으로 플레이할 때보다 빠른 반응 속도를 느낄 수 있습니다.

설령 P2P 홀펀칭을 못해서 릴레이를 하게 되고 이로 인해 느려졌다고 하더라도 C/S 방식으로 통신하는 게임과 동일한 레이턴시를 확인할 수 있습니다.

 

P2P방식은 C/S방식보다 더 빠른 반응 속도를 제공하며, 최악의 경우에도 반응 속도는 C/S 방식과 똑같아집니다.

 

 

P2P 네트워킹의 여러 가지 용도

P2P 네트워킹은 더 빠른 반응 속도의 멀티플레이뿐만 아니라 다음 용도로도 활용됩니다.

 

l  클라이언트간 많은 양의 트래픽이 발생하는 경우 (예시: 음성, 화상 대화 등)

l  서버에서 처리하기에는 너무 많은 양의 연산을 해야 하는 경우 (예시: 게임 물리 엔진 연산 등)

 

이에 대한 자세한 내용은 프라우드넷 도움말 P2P 통신에 대한 (한국어)에서도 설명하고 있습니다.

 

 

 

 

 

 

4. 개발 이야기