본문 바로가기

넋두리있다

[Unity] 게임 서버 프레임워크 조사 - 업데이트 중 -

갑자기 하늘을 보다가 이런 생각이 들었습니다.
'Unity로 게임 서버를 만들 수는 없을까?'

 

※ 본 포스트는 저의 생각의 흐름을 정리하는 글입니다. 저도 유니티 기반 게임서버를 만들 수 있을지 없을지 아직 알지 못합니다. 제가 알지 못하는 좋은 프레임워크들이 이미 있을지도 모르고, 저와 비슷한 생각을 한 사람들이 여러번 시도는 했지만 현실적으로 불가능하거나 전혀 효율적이지 못해 아무도 만들지 않았을 수 있습니다. 이 글을 통해 제가 답을 찾을 수도 있고 그렇지도 못할 수도 있습니다. 하지만 최소한 저와 같은 고민을 하시는 분들께 최소한의 길라잡이는 되었으면 하는 마음으로 글을 씁니다.

 

접근 방법

가장 먼저 내가 생각하는 '게임서버'가 필요로 하는 요구사항들에 대해 정리를 해보자. 그리고 요구 사항을 만족하는 기존의 유니티 어셋이나 프레임워크가 있는지 살펴 보도록 한다.

 

게임 서버 요구 사항

  1. 유저 데이터 관리가 가능해야 한다
    게임 서버는 DB나 캐시 서버를 사용 할 수 있어야 한다. 백엔드 저장소로 부터 유저 데이터를 읽어오고 업데이트 할 수 있는 기능이 있어야 한다.
  2. 서버간 통신이 가능해야 한다.
    게임 서버 한 대로만 돌아가는 시스템은 거의 없다. 로그인을 담당하는 로그인 서버, 유저들이 모여있는 로비서버, 게임을 플레이하는 인게임 서버, 랭킹 서버 기타등등 백엔드 서버등 하나의 게임 시스템에는 많은 서버 컴포넌트들이 서로 통신을하며 시스템을 유지한다.
  3. 다수의 동시접속을 커버 할 수 있어야 한다.
    다수라고하니 막막하지만 최소 1천 이상의 동시접속을 유지 할 수 있어야 하지 않을까 한다. 최소 요구사항은 채널 하나를 서버 프로세스 하나에서 유지 할 수 있을 정도다.
    ※ 채널의 정의가 모호해서 단위의 혼돈이 올 수 있다. 실제로 필자도 명시적인 수치를 말하기 어려워서 채널이라고 모호하게 표현 했다.
  4. 유니티 엔진에서 사용하는 모든(or 물리엔진 만이라도) 기능들을 사용 할 수 있어야 한다.
    유니티로 서버를 만들면 좋지 않을까라고 생각하게 된 가장 큰 이유가, 클라이언트와 서버가 동일한 API, 동일한 엔진을 사용하게 되면 개발하면서 많은 이득을 얻을 수 있기 때문이다. 서버에서 클라이언트와 동일하게 시뮬레이션 할 수 있다거나, 서버 클라이언트 동일한 로직을 코드 레벨에서 쉐어하면서 구현량을 줄인다거나 하는 것 말이다.

 

 추가적으로 있으면 좋을 것 같은 요구 사항

  • 모니터링 시스템
  • 자동화된 테스트 툴

 

기존에 존재하는 솔루션이 있는가

지금 상용 혹은 오픈소스로 대중에게 공개되어 있는 유니티 호환 서버 프레임워크를 살펴 보자.

유니티 네트워크-트랜스포트 레이어

 

네트워크-트랜스포트 레이어 | Unity

자동차 산업의 디자이너, 엔지니어 및 마케팅 전문가가 Unity를 사용하여 몰입형 인터랙티브 3D 가상 경험을 만드는 방법을 알아보세요.

unity.com

포톤

 

온프레미스 타입의 크로스 플랫폼, 실시간 멀티 플레이어 게임 백엔드 | Photon Engine

MULTIPLAYER REALTIME PUN BOLT QUANTUM COMMUNICATION CHAT VOICE SELF-HOSTED SERVER 멀티플레이를 간단하게 실현합니다! Photon Realtime 인디/프로 개발자 누구나 실시간 멀티 플레이어 게임을 개발하여 세계로 진출할

www.photonengine.com

Unity ECS

 

[Unity-ECS] 엔티티 구성 요소 ECS 및 Jobs System

MetaMoni Framework

gyungmun.blogspot.com

결론 : ???

 

알고 계시는 유니티 호환 서버 프레임워크가 있으신가요?

유익한 글이었다면 공감(❤) 버튼 꾹!! 추가 문의 사항은 댓글로!!