2025-01-20 TIL
게임 서버 아키텍처 패턴
종류 | 특징 |
---|---|
실시간 멀티 플레이어 게임 서버 | 여러 플레이어간의 상호 작용이 필요한 게임에서 사용된다. 플레이어 간 통신, 게임 상태 동기화, 충돌 감지 및 해석과 같은 실시간 요소를 처리한다. (photon, unreal engine 등) |
클라이언트-서버 모델 | 클라이언트와 서버끼리만 소통을 한다고 전제하는 모델. 클라이언트를 그저 그래픽 처리 및 간단한 연산만 하고 나머지는 서버에서 처리하는 방식 |
p2p 모델 | 플레이어끼리 직접 통신하게 해주는 방식. 격투 게임은 이 방식이 아닐까 싶다. |
게임 클라우드 서비스 | 기기 종속적이지 않다는 특징이 있는 게임 서버. 대용량 서버가 필요하다. |
게임 데이터베이스 서버 | 게임보다는 게임 아이템 등을 관리하게 해주는 서버 |
서버의 종류
종류 | 특징 |
---|---|
dedicated 서버(전용 서버) | 하나의 게임만을 관리하는 전용 서버. 세션 내에서 다수의 플레이어가 상호작용할 때 사용된다. (ex : 배틀그라운드, 폴가이즈) |
세션 기반 서버(세션 클러스터링 서버) | 서버에서 세션을 할당 받아 유저들을 그 안에 넣는 식. 전체 서버를 독점하지 않아 비교적 부하가 적다. 서버가 직접 세션 정보를 가지고 있는 게 아니라 별도의 데이터베이스 등에 등록한다. |
relay 서버(릴레이 서버)() | 서버가 처음 서비스 시작되었을 때부터 계속 실행되어 실시간으로 데이터 처리를 관리하는 서버. 주로 mmorpg 같은 서버가 계속 켜져 있어야 하는 게임에서 자주 보인다. |
유희왕/하스스톤/매더게 등은 어떤 서버를 사용할까?
dedicated 서버를 사용할 것인가? => 플레이어가 적고 오가는 데이터가 적기 때문에 게임이 시작할 때마다 서버가 만들어지는 것은 비효율적이다.
세션 기반 서버를 사용할 것인가? => 하나의 세션에서 플레이어(최소 1명, 최대 8명)의 데이터를 관리하는 방식이기에 괜찮을 것으로 보인다. => 서버를 직접 만드는 비용보다 세션을 만드는 비용이 더 저렴하다. => 카드 또는 족보는 데이터베이스에서 값을 가져와야 하므로 동시에 게임 데이터베이스 서버와 밀접하게 연관이 있어야 한다.