온라인 게임 Peer to Peer (P2P) 방식과 Client/Server (CS)

온라인 게임의 네트워크 구성에는 크게 P2P (Peer to Peer) 방식과 CS (Client / Server) 방식이 있습니다.  이는 각 플레이어들간에 네트워크를 어떻게 연결 할 것인지,  누가 게임 로직을 처리 할 것인지에 대한 차이 입니다. 각 방식의 차이점과 장단점을 알아봅니다.


Client / Server 방식

CS 방식은 MMORPG 를 생각 하시면 쉽습니다.

플레이어는 서버를 선택하여 해당 서버에 접속합니다. 수만명의 모든 클라이언트는 서버에 연결하여 게임을 플레이 합니다. 게임서버에서 모든 클라이언트의 명령을 처리하며 로직의 처리를 전담 합니다. 

클라이언트는 사용자의 컨트롤 입력과, 결과 그래픽 처리, 애니메이션, 이펙트 등의 게임 뷰어 역할을 하게 됩니다. 서버는 캐릭터 이동 경로부터 몬스터 AI, 데미지, 보상 등등 게임 대부분의 컨텐츠 로직을 서버가 처리 하여 결과를 클라이언트에 통보 합니다.

장점

  • 서버 단독의 처리로 일관성 있는 결과 처리와 동기화가 편리함.
  • 악의적인 데이터 수정이나 핵 사용이 불가능.
  • 대규모 플에이어의 상호작용 가능.

단점

  • 게임서버의 로직 부담이 큼
  • 개발 기술이나 유지비용이 많이 들어감
  • 모든 로직이 서버를 경유하므로 응답성이 다소 떨어질 수 있음
  • 서버의 부하나 통신 지연의 이유로 액션의 정교한 처리가 다소 어려움

위와 같은 이유로 액션성이 강한 게임이나 유닛의 컨트롤이 많은 전략시뮬레이션 게임들이 CS 구조를 사용하지 않았습니다. MMORPG 에서 논타게팅 전투 방식이 흔하지 않았던 이유도 같은 이유 입니다. 서버에서 정교한 충돌처리가 어려웠기 때문이죠.

하지만 서버기술도 좋아지고 네트워크 환경이 좋아져서 요즘에는 CS 구조로 다양한 액션게임이나 논타게팅 MMORPG 가 개발되고 있습니다.


Peer to Peer 방식

P2P 방식은 게임을 진행중인 플레이어간에 연결하여 게임을 진행하는 방식 입니다.  적은 인원이 함께 게임을 진행하는 (대부분 10명 내외) MO 류의 게임에서 주로 사용이 되곤 합니다.

플레이어의 클라이언트에서 직접 로직을 처리하므로 서버의 부담이 적고 (거의 없고) 빠른 액션처리와 정확한 충돌처리가 가능 합니다. 그래서 FPS 슈팅게임이나 액션게임, 레이싱, 스포츠 게임들이 P2P 방식을 많이 사용 했었습니다.

P2P 방식은 다시 2가지로 나누어 집니다.

모두가 동등한 P2P

게임에 참여한 플레이어끼리 그물처럼 모두가 연결합니다. 자신의 컨트롤이나 처리결과를 다른 플레이어에게 직접 알려주는 방식입니다.

장점

  • 직접 메시지를 상대방에 전달 하므로 네트워크의 지연이 최소화
  • 나의 로직을 내가 직접 처리하므로 정교하고 빠른 처리가 가능
  • 서버에서 로직을 처리하지 않으므로 서버의 부담이 적음

단점

  • 클라이언트의 데이터가 조작되면 이를 검증하지 못함 (핵,치트 가능)
  • 로직이 분산되므로 판정에 어려움이 있음. 동기화가 어려움.

위 구조에서 가장 큰 단점은 핵,치트 이며 이는 사실 막을 방법이 없습니다. 그리고 판정의 애매함이 있을 수 있는데 나의 행동에 대한 처리를 모두 각자가 하기 때문에 그렇습니다.

예) 하나의 아이템을 두명이 동시에 먹었다면 누가 먹은것으로 해야 하는가 ?

Host 방식 P2P / Super peer

플레이어중 특정 1명이 호스트 (서버) 역할을 하여 다른 플레이어들이 호스트 플레이어에게 접속합니다. 이는 실제로는 CS 구조와 같은 방식이지만 서버의 역할을 플레이어가 하게 된다는게 다른 점 입니다.

Host 역할은 보통 게임 방을 만든 사람이나, 참여자 중 컴퓨터 환경이 가장 좋은 플레이어가 호스트 역할을 합니다.

장단점은 기본 P2P 와 비슷합니다. 다만 한명의 Host 가 로직,판정을 전담할 수 있어서 동기화 문제나 판정의 애매함은 없도록 만들 수 있습니다. 하지만 응답성은 기본 P2P 보다 조금 떨어질 수 있습니다.

CS 와 P2P 혼합형

추가로 P2P 와 CS 구조를 동시에 사용하는 경우도 있습니다. 중요도가 떨어지는 데이터나 로직의 경우 P2P 로 각자 처리 및 통신하고, 중요한 데이터나 컨텐츠는 서버에서 처리하도록 구성 할 수 있습니다.


온라인 게임에서는 P2P 방식이 점점 사라짐

예전에는 액션류 MO 게임들의 정확한 충돌처리와 빠른 응답성을 위해서 대부분 P2P 로 개발이 되어 왔습니다.

그러나 P2P 에서는 해결이 불가능한 핵,치트의 문제로 최근에는 점점 사라지고 있습니다. 온라인 게임에서 핵은 게임 서비스를 망하게 할 정도로 엄청난 피해를 줍니다. P2P 방식에서는 핵을 완벽하게 막을 방법이 없기 때문에 결국 온라인 게임에서는 CS 구조를 선택하는 것이 올바른 방향이라 볼 수 있습니다.

기존에 P2P 로 개발되어진 게임들도 CS 구조로 변경하거나 CS 구조의 검증서버를 추가로 넣어서 핵을 차단할 수 있도록 개선되고 있습니다.

게임서버 프로그래밍 교육,연구 프로카데미 http://www.procademy.co.kr

1 thought on “온라인 게임 Peer to Peer (P2P) 방식과 Client/Server (CS)

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다