Matchplay: Matchmaker 및 Multiplay 샘플
중요: 대부분의 사용자는 이 Matchplay 샘플 대신 전용 게임 서버 샘플을 사용합니다. Unity 6부터 Multiplayer Services 패키지는 게임에 멀티플레이어 요소를 추가하기 위한 종합 솔루션을 제공합니다.
참고: 이 샘플은 PC 및 OSX 클라이언트용, Linux 헤드리스 서버용 Unity 2021.2에서 테스트했습니다.
Matchmake 버튼을 생성하는 방법을 보여 주는 이 Matchplay 샘플은 엔드투엔드 매치메이킹 기능을 갖춘 기본적인 네트워크 기반 클라이언트-서버 게임으로, Unity 엔진과 Cloud Services SDK를 사용합니다.
참고: 이 Matchplay 샘플은 ‘드래그 앤 드롭’ 솔루션이 아니며, 실제 프로젝트에 복사해 사용할 목적으로 제작된 최소 코드 샘플이 아닙니다. 이 샘플은 기본적인 게임 로직과 인프라를 갖춘 버티컬 슬라이스로, 다양한 서비스를 사용하는 방법을 안내합니다. Matchmaker와 Multiplay Hosting이 함께 작동하여 일반적인 최종 사용자 기능을 만드는 방식을 익히기 위한 참고 자료로 사용하십시오.
기능
- 매치메이킹 티켓 설정: 플레이어가 자신이 선호하는 맵과 게임 모드를 설정합니다.
- 매치메이킹: 플레이어가 Matchmake 버튼을 클릭해 매치 탐색을 시작합니다.
- Matchmaker 할당 페이로드: 서버가 매치에 대한 정보를 가져와 그에 따라 서버를 설정합니다.
- Multiplay 서버 할당: 전용 클라우드 서버를 가동하고 서버 정보를 플레이어에게 전달합니다.
- 클라이언트 서버 넷코드: Multiplay Hosting으로 호스팅할 수 있는 경량 서버입니다.
프로젝트 개요
이 프로젝트는 클라이언트 또는 서버 모드와 로컬 서비스 모드로 실행됩니다. 서버는 5초 동안 서비스를 찾으려 시도하고, 탐색에 실패하면 로컬 테스트용 기본 설정으로 서버를 시작합니다. 클라이언트는 로컬 호스트 IP를 사용하여 이 서버에 직접 연결할 수 있습니다.
씬
- bootStrap: 이 샘플이 올바르게 작동하려면 이 씬에서 플레이해야 합니다.
- mainMenu: 사용자에게 matchmake 및 local connection 버튼을 표시합니다.
- game_lab: 테이블이 있는 게임 씬입니다.
- game_space: 구체가 있는 게임 씬입니다.
클라이언트로 실행
다음 시나리오에서는 프로젝트가 클라이언트로 실행됩니다.
- 에디터에서 bootStrap 씬으로 Matchplay 프로젝트를 플레이합니다.
- 선택한 플랫폼에서 비서버 빌드를 실행합니다.
- bootStrap 씬에서 인수 필드가 ‘client’인 상태로 ParrelSync 클론 프로젝트를 플레이합니다.
클라이언트는 Matchmaker를 사용하거나 UI의 로컬 연결을 통해 연결할 수 있습니다.
서비스가 설정되지 않으면 Matchmaker가 실행되지 않습니다. 샘플 설정 가이드를 따라 서비스를 설정하십시오.
서버로 실행
다음 시나리오에서는 프로젝트가 서버로 실행됩니다.
- 선택한 플랫폼에서 서버 빌드를 실행합니다.
- bootStrap 씬에서 인수 필드가 ‘server’인 상태로 ParrelSync 클론 프로젝트를 실행합니다.
- Matchmaker가 매치를 찾으면 Multiplay Hosting이 자동으로 서버를 실행합니다.
서버가 실행되는 컨텍스트에 따라 Matchmaker에서 서버의 설정을 가져오거나 기본값으로 서버를 시작합니다.
ParrelSync로 로컬에서 넷코드 테스트
다음을 따라 ParrelSync로 로컬에서 넷코드를 테스트합니다.
- 상단 바에서 ParrelSync > Clones Manager > Add new Clone을 선택합니다. 이렇게 하면 프로젝트 폴더가 복제되고 반복 작업(iteration)을 위해 콘텐츠가 동기화됩니다.
- 클론이 로컬 서버 모드로 실행되도록 인수 필드에 ‘server’를 입력합니다.
- 서버가 시작되면 기본 프로젝트로 돌아와 Play를 선택합니다.
- mainMenu 씬이 로드되면 로컬을 선택하고 플레이 버튼을 눌러 로컬 서버에 연결합니다.
참고: 로컬 서버의 기본 IP는 (127.0.0.1:7777)입니다.
클라우드 프로젝트 및 조직
Unity의 Multiplayer 서비스를 사용하려면 프로젝트용 클라우드 조직 ID가 필요합니다. 새로운 조직은 어떻게 만드나요? 가이드를 따라 조직을 설정하십시오.
프로젝트를 서비스와 연결하는 방법을 살펴보려면 프로젝트 서비스 설정 가이드를 참고하십시오.
서비스
인증
Matchmaker와 Multiplay는 Unity Authentication 2.0을 통해 자격 증명을 확인합니다. 이 샘플은 Unity Authentication의 익명 로그인 기능을 사용해 플레이어별로 고유한 반영구 자격 증명을 생성하지만, 개발자가 플레이어의 영구 계정을 유지할 필요는 없습니다.
Matchmaker
Matchmaker 서비스를 사용하면 플레이어가 자신과 동일한 환경 설정을 사용하는 다른 플레이어를 찾아 같은 매치에 할당될 수 있습니다.
Matchmaker 기술 자료에서 Matchmaker 서비스의 코드 샘플과 추가 정보를 확인할 수 있습니다. 기술 자료는 Matchmaker 사용법에 대한 포괄적인 정보와 코드 샘플을 추가로 제공하므로 Matchplay 샘플을 더 잘 이해할 수 있습니다.
Matchmaker 서비스는 Unity Dashboard에서 관리할 수 있습니다.
Multiplay Hosting
Multiplay Hosting 서비스를 사용하면 클라우드에서 게임 서버를 호스팅하여 가능한 한 최고의 핑 성능으로 전 세계의 플레이어를 간편하게 연결할 수 있습니다.
Multiplay Hosting 기술 자료는 Multiplay Hosting 서비스의 코드 샘플과 추가 정보를 포함합니다. 여기에는 Multiplay Hosting 사용법에 대한 포괄적인 세부 정보와 Matchplay 샘플을 더 잘 이해할 수 있도록 돕는 추가 코드 샘플이 들어 있습니다.
Multiplay Hosting 서비스는 Unity Dashboard에서 관리할 수 있습니다.
샘플 설정 가이드
클라우드 프로젝트 및 조직(영문)에 설명된 내용을 따라 에디터 프로젝트를 클라우드 프로젝트에 연결합니다.
Matchplay 프로젝트에서 BuildTools > Linux Server를 선택하여 서버를 빌드합니다.
프로젝트가 서버 빌드로 자동 빌드되고 다음과 같이 출력됩니다.
<project root>/Builds/Matchplay-<platformBuildType>_<dateTime>
Multiplay에 서버를 업로드하고 서버 호스팅을 설정합니다. Unity Dashboard > Multiplay Setup Guide > Create a build로 이동합니다.
Details 필드에 내용을 입력하고 Upload Files로 넘어갑니다. 드롭박스에 Linux 헤드리스 빌드를 드래그하여 넣고 Upload Files를 선택합니다.
계속 진행하여 빌드 설정을 완료합니다. 필드 입력을 완료하고 게임 서버 실행 파일 필드에 Matchplay.x86_64를 입력합니다.
쿼리 유형으로 SQP를 선택하고 다음 내용을 커스텀 실행 파라미터로 입력합니다.
-ip 0.0.0.0 -port $$port$$ -queryPort $$query_port$$ -logFile $$server_log_dir$$/matchplaylog.log
서버 플릿(server fleet) 이름을 입력하고 이전에 생성한 빌드 설정을 선택하여 플릿을 생성합니다. Scaling settings에서 최솟값을 1로, 최댓값을 5로 각각 설정합니다. 이제 Multiplay Hosting 플릿이 준비되었습니다.
Unity Matchmaker
서버 플릿을 생성했으니 이제 Matchmaker Setup Guide를 선택해 Matchmaker를 설정할 수 있습니다. 샘플은 이미 Matchmaker가 프로젝트에 연동되어 있으며 이 가이드에서는 Integrate Matchmaker를 클릭하면 됩니다.
Create Queue를 선택하고 대기열의 이름을 입력합니다. 대기열 이름은 1~36자여야 하며 영숫자 또는 하이픈만 사용할 수 있습니다.
대기열 이름을 ‘casual-queue’로 설정하고 티켓의 최대 플레이어 수를 10명으로 설정합니다.
UDash에 정의된 대기열 이름 문자열이 다음 SDK 샘플의 입력 문자열과 정확하게 일치해야 합니다.
이전에 생성한 Multiplay Hosting 플릿과 빌드 설정을 선택하여 풀을 생성합니다. 타임아웃을 15초로 설정합니다.
참고: 서버 플릿 스케일링의 최소 서버 수가 0으로 설정된 경우, 서버 초기 시작에 걸리는 시간을 감안하여 타임아웃을 180초로 늘려야 할 수 있습니다.
매치 규칙
매치 규칙은 샘플에서 환경 설정에 따라 플레이어를 매칭할 때 적용하는 필터로 사용됩니다. 풀과 대기열 내에서 모든 플레이어의 설정은 다른 플레이어의 설정과 비교하여 평가됩니다.
다음 단계를 따라 매치 정의 규칙을 설정합니다.
- 플레이하는 지역을 설정합니다. 이 지역은 서버 플릿 지역과 같아야 합니다.
- 기본 팀 정의를 설정하고 고급 규칙은 건너뜁니다.
- Finish를 선택해 Matchmaker의 설정을 확정합니다.
이제 Unity 에디터에서 프로젝트를 플레이하면 Matchmake 버튼을 눌러 매치를 찾고, Multiplay Hosting 서버에 연결하고, 다른 플레이어의 참여를 기다릴 수 있습니다.
ParrelSync 또는 여러 개의 빌드를 사용하여 Matchmake 버튼으로 동일한 서버에 여러 명의 플레이어를 연결할 수 있습니다.