게임 서버의 2가지 기술 [1 / 4], 실시간 게임서버 (Stateful) 와 비동기 게임서버 (Stateless)

본 글은 ‘프로카데미’ 의 게임서버 프로그래밍 교육과정 교육 자료로 작성 되었습니다.

게임 서버의 2가지 기술 포스트 시리즈

게임서버 개발은 크게 2가지로 나누어 집니다.

  1. Stateful (실시간 온라인 게임) 게임서버
  2. Stateless (비실시간 비동기 온라인 게임) 게임서버

이 두 가지의 서버기술은 완전히 다른 방식의 기술을 사용합니다.


본 글에서는 두가지 기술의 큰 차이점과 적용 게임에 대해서 알아봅니다.

실시간 온라인 게임과, 비동기 온라인 게임

1. 실시간 온라인 게임

실시간 온라인 게임의 대표적인 장르는 MMORPG (대규모 멀티온라인 PRG) 입니다. 수많은 유저가 같은 공간에서 실시간으로 빠르게 움직이고 전투를 하며 상호작용을 하는 게임 입니다.

리니지 2M

실시간 온라인 게임을 구분하는 가장 큰 요소는 다른 유저들의 플레이 화면이 보이는가, 즉각적인 상호작용 (이동,전투,행위) 가 가능한가 입니다.

물론 이 외에도 MOBA (AOS) , FPS 게임, 대전플레이 게임 등 다양한 장르가 존재 합니다.

브롤스타즈

꼭 대규모의 유저가 플레이를 하지 않는 게임 (MO) 도 실시간 온라인 게임이며, Stateful 게임서버로 개발되는 게임들이 있습니다.

MO (멀티온라인) 게임의 경우에는 P2P 와 C/S 방식으로 나누어 집니다만, C/S 방식의 경우는 Stateful 게임서버 방식으로 개발 됩니다.

P2P 와 CS 구조에 대해선 아래 글에 정리 되어 있습니다

LOL , 오버워치 , 브롤스타즈 등의 게임 역시 MO 게임 이지만 C/S 의 방식이며, 이는 Stateful 게임서버의 기술을 사용하게 됩니다.

이런 실시간 온라인 게임들은 다수의 유저들과 실시간 액션 플레이를 해야합니다. 그렇기 때문에 모든 클라이언트는 서버에 접속하여 연결을 유지한 상태로 플레이를 진행 합니다. 또한 게임의 로직과 전투의 판정 등, 모든 데이터와 결정은 게임서버가 주도적으로 진행해야만 합니다.

우리는 이런 게임을 실시간 온라인 게임’ 이라고 부르며 이런 목적의 게임 서버를 ‘Stateful Game Server’ 라고 부릅니다.

온라인 게임의 본질, 다른 유저와의 협동플레이는 실시간 온라인 게임만의 묘미 입니다. 과거 온라인 게임보다 더욱더 다이나믹하고 빠르고 화려한 실시간 온라인 게임들이 꾸준히 개발되고 있습니다.

2. 비동기 (비실시간) 온라인 게임

비동기 온라인 게임은 유저간의 상호작용이 없거나 상호작용이 굉장히 제한적인 게임으로 싱글 게임에 가까운 온라인 게임 입니다.

수집형 게임, 확산성 밀리언아서
방치형 게임, 오늘도 환생
RPG 게임, 마블퓨처파이트

비동기 게임은 혼자서 플레이 할 수 있는 모든 장르의 게임 입니다. 수집형, 방치형, RPG, 퍼즐, 액션, 슈팅… 등 특정 장르를 가리지 않습니다.

유저간의 실시간 상호작용 컨텐츠가 없이 혼자서 싱글 플레이를 하는 게임에 적합한 기술 입니다.

  • 모바일 싱글 RPG
  • 온라인 퍼즐게임
  • 방치형 게임
  • 수집형 게임
  • 유저간 실시간 플레이가 없는 대부분의 모바일 게임

다른 유저와의 실시간 플레이 없이 싱글 플레이 후 플레이 데이터를 서버에 보관 하거나, 다른 유저의 플레이 결과만을 교환 또는 확인, 선물전달, 랭킹 확인 등의 요소들로 유저간의 실시간적인 교류와 플레이가 제한적인 게임 입니다.

우리는 이런 게임들을 ‘비동기 (비실시간)온라인 게임’ 이라고 부르며, 이런 목적의 게임서버를 ‘Stateless Game Server’ 라고 부릅니다.

최근의 온라인 게임의 추세는 비동기 온라인 게임이 활성화 되고 있습니다. 개발의 편의성도 뛰어나며, 유저들 또한 더 가볍고 손위운 게임을 선호하고 있기 때문에 많은 게임들이 비동기 온라인 게임으로 개발 되고 있습니다.

3. 비동기 온라인 게임도 유저간 상호작용을 하는데요 ?

위 설명에서 실시간과 비동기 (비실시간) 의 기준을 “유저간의 실시간 상호작용이 있는가? “ 로 분류 하여 설명 하였습니다. 그런데 생각해면 비동기 게임에도 유저간의 상호작용이 있습니다. 대부분의 소셜 게임들은 나의 친구들과 함께 게임을 즐기도록 컨텐츠를 개발하고 있습니다.

내 친구 들의 플레이 상황이 보여지고요

캔디크러시 사가, 친구들의 클리어 상태가 보여짐

다른 유저의 집(마을) 을 살펴보고, 공격합니다.

크래시 오브 클랜, 다른 유저의 마을을 공격한다

친구의 가게를 둘러보고 도움을 주기도 합니다.

아이러브 커피, 다른 유저의 매장을 둘러볼 본다

위에 보여드린 사례들은 모두 완벽한 실시간이 아니며 서버에 저장되어 있는 과거의 데이터를 보여주는 것입니다.

약간의 과거 데이터를 보여주어도 문제가 없는 컨텐츠로 개발이 되었으며, 그래서 ‘비동기’ 게임 이라고 표현하는 것입니다.

물론 비동기 게임서버 (Stateless Server) 기술로도 다른 유저들의 상황이 실시간에 가깝게 보이도록 만들 수 있습니다. 하지만 완벽한 실시간을 보장받기 힘들기 때문에 실시간 상호작용 컨텐츠를 넣기에 어려움이 있으며, 실시간 컨텐츠를 주력으로 하기에는 Stateless 게임서버의 성능,기능상의 한계가 존재 합니다.

3. 그리고 두 가지 기술의 혼합형태

위와 같이 게임의 장르, 플레이 방식에 따라 게임서버의 개발 방식이 다르게 됩니다. 최근에는 게임 컨텐츠가 다양화 됨에 따라 위의 2 가지 (실시간 온라인, 비동기 온라인) 방식이 함께 적용어 가고 있습니다.

비동기 온라인 게임 (Stateless) + 실시간 채팅 (Stateful)

비동기 온라인 게임 (Stateless) + 실시간 PVP 인스턴스 던전 (Stateful)

실시간 온라인 게임 (Stateful) + 토탈 랭킹 컨텐츠 (Stateless)

실시간 온라인 게임 (Stateful) + 로비, 캐릭터 꾸미기 (Stateless)

실시간 온라인 게임 (Stateful) + 느슨한 상호작용 컨텐츠 (Stateless)

처음 공부하시는 분들은 위의 구분이 다소 애매하게 느껴질 수 있습니다. 이는 Stateful 과 Stateless 의 기술적 구현방법에 대한 글을 읽고 나시면 조금더 이해가 잘 되실 것입니다.

결국은 어떤 기술이 온라인 게임을 장악하지 못합니다. 2가지 기술이 공존하게 되며, 각 용도에 맞는 개발 방법으로 온라인 게임 서버는 발전하고 있습니다.

댓글 남기기

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