게임 서버를 구현하려면 무엇이 필요한가?
일반적으로 서버/클라이언트 모델의 온라인 게임을 만들고 운영하려면 게임 서버 빌드를 만들고 호스팅 해야한다. 그 서버 빌드에는 서버 엔진 파트와 게임 컨텐츠 파트가 구현되어야 한다.
엔진 파트 - Transport 설계, 소켓 통신, API등 전반적인 네트워킹 기능
컨텐츠 파트 - 게임의 온라인 컨텐츠 기능
엔진 파트 구현은 어떻게 구현할 수 있는가?
직접 구현
먼저 성능과 필요한 기능을 고려해 서버 엔진을 팀내에서 자체적으로 제작하는 방법이 있다. 이 방법의 장점은 서버 기능의 확장, 유지 보수가 용이하다. 구현하고자 하는 게임에 최적화도 가능하다. 그리고 구현 방식을 자유롭게 선택 가능하다.
하지만 서버 엔진을 구현하기 위해 필요한 네트워크 지식을 모두 알아야 되며 제작에 드는 시간과 비용을 고려하면 결코 쉬운 작업이 아니다. 그래서 소규모 팀에게는 그다지 추천하지 않는다.
서버 엔진 또는 라이브러리 사용
다른 방법으로는 이미 만들어진 게임 서버 라이브러리와 제공되는 API를 이용하는 방법이 있다. 이미 많은 솔루션들이 있으며 각 솔루션마다 각기 다른 특징을 가지고 있기 때문에 구현하고자 하는 게임에 맞게 선택 해서 사용하면 된다. 이 방법의 장점은 서버 엔진을 구현하는 시간과 비용을 절약할 수 있는 것이다. 경우에 따라서는 네트워크 프로그래밍에 관한 지식이 없어도 API 사용 방법만 익히면 멀티플레이를 구현할 수 있다는 것이다. 단점은 라이브러리 내에 구현된 서버 엔진에 따라서 원하는 기능의 추가나 성능 최적화가 제한될 수 있다는 것이다.
Mirror & Mirage 네트워크 라이브러리 소개
Unet으로부터 포크(fork)해 다수의 개발자들이 오픈 소스로 참여하고 제작한 Mirror와 Mirror에서 포크하여 전문 서버 개발자들이 새롭게 제작 중인 Mirage를 살펴보자
Mirror의 특징
- Mirror는 Unet에서 포크되었기 때문에 마찬가지로 HLAPI를 사용한다. Mirror를 사용하면 개발자들은 서버 엔진 단의 작동 방식을 몰라도 API만 잘 활용하면 손쉽게 멀티플레이를 구현할 수 있다.
- Mirror는 Low level의 Transport를 지원한다.
- Server/Client의 서버 모델을 지원한다
- 네트워크의 전반적인 기능은 NetworkBehavior라는 상위 오브젝트에 구현된 메서드를 override해서 구현한다.
- 오픈소스 기반 라이브러리
- 오랜 기간 개발되어 API 문서와 튜토리얼이 잘되어 있다.
Mirage의 특징
- Mirror에서 포크한 오픈 소스 라이브러리이다. 많은 부분에서 Mirror와 비슷하다.
- Mirror는 태생이 TCP베이스인 반면, Mrage는 UDP 베이스이다.
- Unity 2019부터 도입된 fast domain reload를 지원한다.
- Mirage는 Mirror에 비해 더 세부적인 기능들로 모듈화가 잘되어 있다. 사용하기 더 쉽고 편하다.
- UPM(Unity Package Manager)를 통해 업데이트 된다.
- API가 전반적으로 event 기반으로 작동한다. Mirror 보다 직관적이다.
- 유저와 오브젝트 숫자가 많아도 최적화가 잘되어 있어서 서버가 CPU와 메모리 사용량을 적게 먹는다.
- ErrorHandling을 자체적으로 지원한다.
전반적으로 Mirage가 Mirror보다 좋아보이는데 아무래도 Mirror보다는 비교적 최신이기 때문인 것으로 보인다.
그래서 메뉴얼은 Mirror가 Mirage보다 잘되어 있다. 필요한 내용은 모두 있지만 업데이트가 느려서 최신 변경을 반영하고 있지 않다.
출처
'프로그래밍 > 네트워크' 카테고리의 다른 글
INADDR_ANY에 대해서 (4) | 2023.08.14 |
---|---|
TCP 3-way Handshake & 4-way Handshake (3) | 2023.08.14 |
사이더(CIDR)란 무엇인가? (2) | 2023.07.19 |
네트워크 이야기하면 무조건 나오는 'OSI 7계층'에 대해 (32) | 2023.07.05 |
물리 계층(Physical Layer)에서 동작하는 리피터(Repeater)와 허브(Hub)에 대해서 (0) | 2023.03.06 |
댓글