[Network] 온라인 게임의 네트워크 통신 방식

alirz-pixel·2023년 7월 22일
3

Network

목록 보기
1/1

온라인 게임의 네트워크 방식은 크게 P2P, Client/Server, Web-based 방식으로 나뉜다.

Client/Server 방식

Client/Server 방식은 중앙의 Server를 두고 여러 Client가 해당 Server에 접속하는 방식으로 이루어진다.

이 방식은 그림에서 볼 수 있듯이 이벤트에 대한 모든 네트워크 트래픽이 Server에 집중되는 구조이다. 따라서 빠른 응답성을 요구해야하는 FPS에서는 해당 방식이 적합하지 않다.

장점

  • 대규모 플레이어가 서로 상호작용이 가능하다.
  • 중요한 이벤트가 Server에서 처리되기 때문에 악의적인 데이터 수정이나 핵 사용이 불가능하다.
  • Server 하나로 로직을 처리하기 때문에 일관성 있는 결과 처리와 동기화가 편리하다.

단점

  • Server가 가지는 부담이 크다.
  • 개발 기술이나 유지비용이 많이 들어간다.
  • Server의 부하나 통신 지연의 이유로 액션의 정교한 처리가 다소 어렵다.

멀티플레이 동기화 방식

(사진 출처는 해당 링크에서 가져왔습니다.)

  • 방식 1: 클라이언트의 입력에 대해 '명령'을 보내는 방식
  • 방식 2: 클라이언트의 입력에 대해 '연산 결과'를 보내는 방식

방식1

방식 1은 클라이언트 입력 -> 입력 정보를 서버에 전송 -> 요청에 대한 연산 -> 연산 결과를 클라이언트에 전송 -> 클라이언트 출력의 과정을 거치기 때문에 네트워크의 상태가 안 좋다면 방식 2보다 끊김 현상 혹은 렉 현상이 더 심하다.
프레임은 좋으나 네트워크 상태 문제로 인해 게임 끊김 현상이 발생하는 예(Youtube 영상)

위 링크의 영상처럼 플레이어에 대한 이벤트 처리를 서버가 하고, 그 연산 결과를 받아서 화면에 반영하기 때문에 렉 현상이 발생하는 것이다. 또한 모든 이벤트 처리를 서버가 하기 때문에 서버의 부담이 더 커지게 된다.

방식2

방식 2는 이벤트 처리를 클라이언트가 하고, 해당 이벤트 연산 결과를 서버에 보내는 방식으로 진행된다. 이 방식을 사용하면 서버의 부담이 적어질 수 있지만 '연산'을 '클라이언트'가 처리하기 때문에 해킹에 취약해지게 된다. (P2P와 거의 동급으로 해킹에 취약하다고 함)
이를 방지하기 위해 서버에서 할 수 있수 있는 최선은 클라이언트의 연산이 해킹된 결과인지 검사하는 것 뿐이다.


Peer To Peer (P2P) 방식

P2P 방식은 게임을 플레이하는 플레이어 간의 연결을 통해 게임을 진행하는 방식이다. '플레이어 간' 연결을 하기 때문에 적은 인원으로 진행되는 게임에서 주로 사용된다.
플레이어의 클라이언트에서 직접 로직을 처리하기 때문에 서버의 부담이 적고 빠른 이벤트처리와 정확한 충돌처리가 가능하다. 그렇기 때문에 FPS 슈팅 게임, 액션게임, 레이싱, 스포츠 게임들이 P2P 방식을 많이 사용한다.

그렇다면 P2P 방식으로 진행되는 게임에서 서버와의 통신은 언제 하게 될까?
바로 게임이 종료된 직후, 게임 결과를 서버 쪽으로 보낼 때 통신하게 된다.
(이 방식 때문에 랜선을 뽑아 경기를 무효화 하는 비매너 행위가 존재한다. 이를 게임 용어로 랜뽑이라고 함)

장점

  • 직접 메시지를 상대방에게 전달하므로 네트워크의 지연이 최소화된다.
  • 로직을 각자 자신이 직접 처리하기 때문에 정교하고 빠른 처리가 가능하다.
  • 서버에서 로직을 처리하지 않기 때문에 서버의 부담이 적다.

단점

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

C/S 방식의 방식 2는 그나마 처리 결과를 서버가 받기 때문에 조금의 검증 가능성이 있지만, P2P 방식은 서버의 개입없이 직접하기 때문에 막을 방법이 거의 없다고 한다.
만약, '하나의 아이템을 두 명이 동시에 먹는 상황'이 생긴다면, 네트워크를 통해 들어온 상대방의 응답보다 나의 처리가 더 빠르기 때문에 동기화의 문제가 발생하는 것이다.

이러한 P2P 방식은 또 다시 2가지로 나뉜다.

SUPER PEER 방식


이 방식은 그림을 통해 알 수 있듯이 특정 1명이 HOST(서버) 역할을 하게 되고, 다른 나머지 플레이어들이 호스트 플레이어에게 접속하는 방식이다. (그래서 CENTEALIZED 방식이라고도 함)

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

DECENTEALIZED 방식


이 방식은 그림을 통해 알 수 있듯이 Client끼리 그물처럼 모두 연결되는 방식이다. 이 방식에서는 자신의 컨트롤이나 처리 결과를 다른 플레이어에게 직접 알려주게 된다.


Web-based

이 방식은 웹 특징을 그대로 몰려 받은 방식으로 Request/Response 구조를 가지고 있다.

HTTPS를 이용한 보안성 확보가 쉬우며, 다른 방식들과 다르게 연결을 유지할 필요가 없어 접속이 불안정한 환경에서 유리하다.
또한 Scale-Out 방식의 확장도 가능하기 때문에 확장성이 좋다.



출처

0개의 댓글