멀티 플레이어 개요
스토브 게임 플랫폼은 멀티 플레이어 환경에서 게임에 적용할 수 있는 여러 가지 기능 및 API를 제공하고 있습니다.
그중 매치메이킹 시스템은 다양한 게임 유저가 어느 지역에서 접속하든지 낮은 지연으로, 함께 게임을 즐길 수 있도록 해 주는 서비스입니다.
매치메이킹 시스템에서 제공하는 API를 통해 게임 유저를 하나의 공유된 공간에 모아주고(매칭), 여기에 접속한 게임 유저들에게 채팅 메시지 및 데이터를 실시간으로 전송합니다.
매칭된 게임 유저들에게 실시간으로 채팅 메시지 및 데이터를 전송을 위해 여러 네트워크 서비스를 제공하고 있습니다.
- 암호화된 보안 세션을 통해 실시간 채팅 메시지 전송을 지원합니다.
- 소규모 게임의 실시간 데이터 전송을 위한 P2P 네트워킹을 지원합니다.
- 좀 더 규모 있는 게임을 위해 UDP 릴레이를 지원합니다.
개발자는 어떠한 네트워크 서비스를 사용할 것인지 사용할 서비스만 선택하시면 됩니다.
매치메이킹 소개
매치메이킹 시스템은 매치메이킹 서버와 클라이언트 SDK로 이루어져 있습니다.
Indie Developer Center을 통해 매치메이킹 서버에 게임을 등록하고, 매치메이킹 클라이언트 SDK로 게임 유저 매칭을 개발할 수 있습니다.
매치메이킹 시스템의 역할은 개개의 게임 유저들이나 그 친구들이 함께 게임을 즐길 수 있도록 한 곳(로비)으로 모아 주는 것입니다.
매치메이킹 시스템은 다음의 3가지 방법을 통해 게임 유저들을 한 곳(로비)으로 모으고, 같이 게임을 즐길 수 있도록 중계합니다.
- 첫 번째 방법은 랜덤 매칭입니다.
게임 유저는 단순히 매치메이킹 서버에 빠른 입장을 요청하면, 서버 측에서 유저를 적절한 로비로 안내합니다. 이 방법은 개발이 쉽고 게임 유저 UI를 단순하게 만들 수 있습니다. - 두 번째 방법은 검색 매칭입니다.
게임 유저는 각 게임에서 정의된 특성에 따라 검색 조건을 설정하고, 그 조건에 충족되는 로비 목록을 선택할 수 있습니다. 이 방법으로 최대한 비슷한 레벨의 게임 유저를 만나 적절한 난이도에서 게임을 플레이할 수 있게 개발할 수 있습니다. - 세 번째 방법은 친구 초대입니다.
게임 유저는 내가 입장한 로비에서 내 친구를 초대하여 같이 게임을 플레이할 수 있습니다.
매치메이킹 클라이언트 SDK(Unity)를 사용하면 매치메이킹 시스템을 게임에 쉽게 적용할 수 있습니다.
매치메이킹 과정 순서
매치메이킹 서버에 접속한 후 랜덤 매칭하여 게임을 플레이하는 방법은 다음과 같습니다.
- 해당 게임에서 멀티 플레이어로 플레이할 종류를 계획합니다. (ex. 난이도 : [쉬움, 어려움], 시나리오 : [맵1, 맵2] )
- 게임 유저가 계획된 값중 하나로 로비 랜덤 입장 API를 호출여 입장합니다.
- 게임 유저가 다음 값(난이도 = 쉬움 and 시나리오 = 맵1)으로 로비 랜덤 입장 API를 호출하면
자동으로 로비를 찾아서 입장하거나 로비를 생성합니다.
- 게임 유저가 다음 값(난이도 = 쉬움 and 시나리오 = 맵1)으로 로비 랜덤 입장 API를 호출하면
- 게임 시작에 필요한 최소 인원이 채워질 때까지 대기합니다.
- 로비에 입장한 게임 유저 간 캐릭터나 유저 설정에 대한 데이터를 전송합니다.
- 채팅 API를 통해 서로 채팅할 수 있습니다.
- 게임을 시작할 준비가 완료되면 로비 방장은 게임을 시작합니다.
- 데이터 송신 API를 통해 게임 데이터를 주고받을 수 있습니다. (P2P 혹은 UDP 릴레이)
- 게임이 종료되면 로비 방장은 게임을 종료하고 로비는 자동으로 소멸합니다.