Post

(TIL) 2025-01-21

(TIL) 2025-01-21

게임 서버 아키텍처


클라이언트-서버 아키텍처 (Client-Server Architecture)

클라이언트-서버

기본적인 형태의 게임 서버 아키텍처이며, 유저가 디바이스를 통해 게임을 실행하는 쪽이 클라이언트 이며 주로 UI와 입력 처리를 담당한다. 서버는 중앙집중식으로 게임의 모든 로직을 처리 및 게임 상태를 관리한다.

예) 유저의 위치, 상태 등을 서버에서 관리하고, 클라이언트는 해당 데이터를 받아서 표시한다.

피어 투 피어 아키텍처 (Peer-to-Peer Architecture)

P2P-서버

게임에서 각 클라이언트가 서버 역할을 함께 수행하는 방식이다. 모든 클라이언트가 서버와 클라이언트 역할을 동시에 수행하며, 게임의 데이터를 서로 직접 교환한다.
중앙 서버가 필요 없으며 네트워크 부하가 분산되기 때문에 서버 유지비용이 낮다. 그러나 보안이나 데이터 동기화에서 문제가 발생할 수 있으며, 클라이언트 조작 및 해킹에 취약할 수 있다.

예) 두 명 이상의 플레이어가 동일한 맵에서 함께 플레이하는 게임.

멀티 서버 아키텍처 (Multi-Server Architecture)

멀티 서버 아키텍처

하나의 서버가 처리할 수 있는 부하가 한계가 있기 때문에, 서버 클러스터링이나 로드 밸런싱을 통해 여러 서버가 데이터를 분산 처리한다.
수평 확장(scaling)이 가능하여, 많은 유저가 동시에 접속할 수 있도록 지원하며, 게임 데이터를 분할하여 처리할 수 있어 성능을 향상시킬 수 있다. 특정 서버에서 장애가 발생 시 다른 서버로 처리할 수 있다.

존 기반 서버 아키텍처 (Zone-based Architecture)

큰 게임 세계를 여러 개의 존(지역)으로 나누고, 각 존마다 별도의 서버를 배치하여 처리하는 방식이다. 각 서버는 특정 지역에 해당하는 유저들의 데이터를 관리한다. 예를 들어, 게임 세계를 지역별로 나누고, 유저가 특정 지역에 접속하면 해당 지역의 서버와 통신하게 된다. 스케일링이 용이하고, 각 지역 서버는 특정 지역의 유저만 처리하므로 서버의 부하가 분산되지만, 서버 간 데이터 동기화와 유저 이동 처리가 필요하며 서버 전환 시 유저 데이터를 이동시켜야 한다.

예) 게임의 큰 맵을 여러 구역으로 나누어 각 구역에 해당하는 서버가 게임 진행을 담당.

하이브리드 서버 아키텍처 (Hybrid Architecture)

클라이언트-서버 아키텍처와 피어 투 피어 아키텍처의 장점을 결합한 형태이다. 중앙 서버가 있지만, 유저 간의 직접적인 통신도 가능하도록 설정되어 있기에 서버 부하를 줄이고 성능을 개선할 수 있다.

예) 서버가 게임의 일부 상태를 관리하지만, 유저 간의 상호작용은 피어 투 피어 방식으로 처리한다.(실시간 전략 RTS)

이벤트 기반 아키텍처

서버가 유저의 요청을 이벤트 기반으로 처리하는 아키텍처이다. 이벤트 시스템을 사용하여 유저가 발생시킨 이벤트를 처리하고, 게임의 상태 변화나 클라이언트에 응답을 반환한다. 유연성이 높고, 다양한 이벤트를 동적으로 처리할 수 있다.

Cloud-based Server Architecture (클라우드 기반 서버 아키텍처)

클라우드를 활용하여 게임 서버를 운영하는 방식 이며, 서버 확장성과 자동화된 관리가 용이하다. 클라우드 서비스 제공자가 자동 확장, 자동 로드 밸런싱 등을 지원하여, 게임 서버의 성능과 확장성을 관리할 수 있다. 또한 서버 비용을 효율적으로 관리하고, 필요할 때 서버를 추가하거나 제거할 수 있으며 서버의 위치와 설정을 자동으로 조정할 수 있어 글로벌 서비스에도 유리하다.

라그나로크 온라인

라그나로크

이명진의 만화인 라그나로크를 원작으로 그라비티에서 제작한 온라인 게임이며 2D 캐릭터가 3D 맵을 뛰어다니는 독특한 그래픽으로 초기 많은 인기를 끌었다. (지금은…) 라그나로크 게임 서버에 대한 공개된 정보는 없지만 예상으로 작성을 해보았다.

  1. 멀티 서버 아키텍처 (Multi-Server Architecture)
    라그나로크 온라인은 멀티 서버 아키텍처를 사용하여 여러 개의 서버에서 게임 데이터를 처리한다고 생각된다. 서버는 지역이나 콘텐츠에 따라 분리되며, 각 서버는 게임의 다른 측면을 담당한다.
    • 서버 클러스터: 아래와 같이 여러 서버가 서버 클러스터로 연결되어 다양한 기능을 처리한다.
    • 필드 서버: 게임의 필드, 몬스터, NPC 등을 관리합니다.
    • 던전 서버(인스턴스): 던전 안에서의 게임 로직과 유저 상호작용을 처리하는 서버.
    • 인벤토리 서버: 유저의 아이템, 장비, 재화 등을 관리하는 서버.
    • 채팅 서버: 유저 간의 실시간 채팅을 처리하는 별도의 서버. - 부하 분산: MMO RPG인 만큼 많은 유저가 동시에 접속하는 상황에서도 원활한 게임 플레이 할 수있게 서버는 부하 분산(load balancing)을 통해 유저 수가 급증하는 구간에서는 추가 서버가 동적으로 배치된다고 생각한다.
  2. 존 기반 아키텍처 (Zone-based Architecture)
    라그나로크는 많은 지역이 존재하며 각 지역별로 여러가지 필드가 존재한다. 또한 인스턴스 던전이 존재하기에 게임 세계를 여러 개의 존으로 나누고 각 존에 대한 독립적인 서버로 구성되어 있지 않을까 생각된다.

라그나로크 맵

  • 지역별 서버: 게임 세계는 여러 개의 지역으로 나뉘며, 각 지역을 담당하는 서버가 존재. 예를 들어, 필드 지역, 마을, 던전 등이 각각의 서버로 관리한다.
  • 존 전환: 유저가 한 지역에서 다른 지역으로 이동할 때 서버 전환이 필요하다. 이때, 서버 간의 데이터 이동과 동기화가 필요하며. 예를 들어, 유저가 특정 던전에서 퀘스트를 진행하고 있을 때, 던전 서버에서 게임 상태를 관리한다(인스턴스 던전).

내가 생각한 MMO RPG 게임 아키텍처

게임실행

This post is licensed under CC BY 4.0 by the author.