멀티 플레이어 게임의 종류
멀티 플레이어 게임은 Asynchronous, Persistent, Session 등 세 가지 형태로 나눌 수 있습니다.
1. Asynchronous(비동기식)
클래시 오브 클랜 같은 소셜 게임류가 대표적인 Asynchronous 게임입니다.
이는 웹 서버가 클라이언트와 통신하는 것과 크게 다르지 않게 동작합니다.
클라이언트가 어떤 요청을 하고 응답을 받는
요청-응답 방식이기 때문에 게임의 특징이
플레이어의 액션에 응답해 주는 형태로 제작됩니다.
2. Persistent(영구적인)
Persistent 멀티 게임은 월드가 지속적으로 유지되는 형태의 게임입니다.
대표적인 장르로 MMORPG, 게임으로는 WoW가 있습니다.
Persistent 게임은 서버가 상태를 항상 유지해야 하기 때문에,
Scale-out 및 비용 절감이 쉽지 않습니다. 또한,
게임의 성능 요구 조건이 까다로운 편이라
복잡한 쿼리 및 Transaction(게임 내 거래)이
빈번하기 때문에 RDBMS(Relation DataBase Management System)가 필요합니다.
그런데, RDBMS는 Scale-out이 쉽지 않기 떄문에 DB가 병목되는 경우가 많습니다.
그래서, 병목 현상을 피하기 위해서 1서버, 2서버등 서버를 나누어 관리하게 됩니다.
또한, 플레이어 간 패킷 통신이 많아서 고성능 네트워크 인터페이스가 필요합니다.
Persistent 게임은 서버에 상태를 항상 보관 및 관리하기 때문에, CS(Client-Server) 구조를 사용 합니다.
클라이언트는 서버를 통해 간접 연결하는 구조고, 중요한 로직은 서버에서 직접하기 때문에
클라이언트 해킹으로부터 비교적 안전합니다.
단, 서버 규현 난이도와 유지 보수 비용이 높은 편 입니다.
CS(Client-Server) 방식의 로직 처리 과정은, 클라이언트로부터 입력을 받으면 무조건 서버로 보냅니다.
그럼 서버가 입력에 대한 로직을 처리 및 시뮬레이션을 하고 결과를 클라이언트에게 발송합니다.
그럼, 클라이언트는 서버에서 보내준 결과를 토대로 화면에 렌더링을 합니다.
그래서, 클라이언트가 서버의 응답을 늦게 받으면, 튕기는 현상이 발생하게 되고
유저는 흔히 랙(Lag)이라고 부릅니다.
위의 그림은 일반적인 MMOG 아키텍처 입니다. 이런 종류의 게임은 DB가 병목되기 때문에,
1서버, 2서버, 3서버 형태로 쪼갭니다. 이런 서버 단위를 렘름(Realm)이라고 합니다.
즉, 렐름별로 각 DB를 유지하기 때문에 다른 렐름에 있는 유저와 직접, 간접적인 영향을 받지 않습니다.
현재 인기 있는 MMOG는 이 구조가 가장 많습니다. 몰론, 고성능 DB를 사용하면 렐름을 특정군으로 묶을 수 있습니다.
3. Session
Session 게임은 쉽게 말해 방을 만들어 게임을 하는 형태입니다.
방을 플레이어가 직접 만드는 경우도 행당하고, 매치메이킹을 통해
자동으로 만드는 경우도 해당합니다.
시작과 끝이 명확한 게임으로 주로 MOBA, FPS, RTS 등
실시간 멀티 플레이어 게임이 Session 게임에 속합니다.
Session 게임은 연결 구조에 따라
1. P2P
2. 클라리언트 중 하나가 서버 역할을 하는 호스트 방식
3. 전용 서버를 따로 두는 데디케이티드 방식
으로 나뉩니다.
1. P2P
P2P 방식은 서로 간 직접 연결하기 때문에, 서버가 필요 없고 반응성이 빠릅니다.
과거 FPS나 RTS 게임류가 많이 사용한 방식입니다.
다만, 각각의 클라이언트의 정보가 다른 모든 클라이언트에게 공유하는 방식이기 때문에
맵핵, 헬퍼와 같은 해킹에 취약합니다.
그리고, 클라이언트 수가 늘어날 수록 연결의 수가
늘어나기 때문에 확장성에 제약이 있습니다.
2. 호스트 방식
클라이언트 중 하나가 서버 역할을 하는 방식으로
이러한 서버를 수퍼피어라고 합니다.
보통 방장 역할을 하는 플레이어가 호스트가 됩니다.
때문에, 방장의 컴퓨터 성능이 게임에 영향을 미칩니다.
3. 데디케이티드 방식
데디케이티드 서버는 클라이언트 호스팅, 랜더링을 하지 않고 오직
플레이어들을 연결시켜주려고 하는 전용적인 서버 입니다.
데디케이티드 서버의 규모와 성능에 따라 수용 가능한 플레이어의 수가 제한 됩니다.
데디케이트 방식과 게임 서버를 따로 만드는 이유는
게임 서버를 직접 구현하지 않고 어떤 프로그램을 서버 모드로 사용합니다.
하나의 클라이언트가 데디케이트 서버로 동작하는 것이고,
이 데디케이팅 서버는 하나의 게임 세션을 처리합니다.
장점으로는
엔진 레벨의 정교한 시뮬레이션이 가능하도록 동작합니다.
또한, 어떤 로그나 한 게임 세션에 대한 정보를 다른 공간에 저장할 수 있습니다
(리플레이 기능을 구현할 수 있다)
'Network 강의' 카테고리의 다른 글
데이터 링크 계층이란? (0) | 2024.09.01 |
---|---|
물리 계층이란? (0) | 2024.09.01 |
2024년 8월 27일 강의 및 추가 학습(게임 서버의 역할, 상호 작용, 하는 일, 자격) (0) | 2024.08.28 |
OSI(Open Systems Interconnections) 7 계층이란? (0) | 2024.08.25 |
컴퓨터 세계에서 서버와 클라이언트는 무엇인가 (0) | 2024.08.25 |