merge매치메이킹

Matchmaking을 빠르게 시작하고 다양한 장르에 대한 예시 시나리오를 탐색하세요.

이 비디오를 따라 Matchmaker 서비스를 시작하세요:

✔️ 준비

매치메이킹 아키텍처

이 가이드는 다음에 중점을 둡니다 Matchmaking API 및 Backfill API.

매치메이킹이 관련될 때 중요한 데이터 흐름은 네(4) 가지입니다:

  1. Matchmaking API 는 게임 클라이언트가 Matchmaker와 통신하는 데 사용됩니다:

    1. 그룹 관리, 서버 할당 및 모니터링을 위해,

    2. 와의 핑 측정을 위해, 핑 비콘.

  2. 배포 API는 Matchmaker가 전용 서버를 배포, 확장 및 관리하는 데 사용됩니다.

  3. Netcode 전송 는 게임 클라이언트와 전용 서버 간 통신에 사용됩니다.

  4. 심층 분석 실행 중인 서버의 플레이어를 교체하거나 추가하기 위해,

circle-info

출시 후, 귀하의 매치메이커는 24시간/연중무휴로 실행되어야 합니다 전 세계 플레이어들이 서버에 접속할 수 있도록 보장하기 위해.

🍀 간단한 예시

간단한 예제부터 시작하여 기본 매치메이킹 플레이어 흐름을 테스트하세요:

  • 공유된 곳에 매치메이커 인스턴스 생성하기 심층 분석,

  • 매치메이커에서 규칙과 설정 정의하기 심층 분석,

  • 플레이어 흐름 테스트 및 티켓 관리하기 📗 API.

1. 무료 요금제로 설정

☑️ 무료 Edgegap 계정에 등록하세요arrow-up-right 그리고 Matchmaker 대시보드 페이지를 여세요arrow-up-right.

☑️ 를 클릭하세요 Matchmaker 생성 먼저, 그런 다음 다음을 입력하세요:

  • 매치메이커 이름 - 참고용 예: quickstart-dev ,

  • 간단한 예시 JSON 구성을 업로드하세요.

🍀 간단한 예시 (권장 최소 구성):

triangle-exclamation

문제 해결 및 FAQ:

☑️ 유효성 검사 오류가 나타나지 않으면, 생성 및 시작 을 클릭하고 프로세스가 완료될 때까지 기다리세요. 그러면 Simple Example 매치메이커와 함께 새로운 무료 클러스터가 시작됩니다.

✅ 이제 다음 단계로 진행할 수 있습니다.

2. 구성 탐색

Matchmaker에 업데이트를 릴리스할 때마다, 각 새 버전은 시맨틱 버저닝 을(를) 사용하여 변경의 영향을 형식으로 명확히 전달합니다 major.minor.patch:

  • 🔥 major 버전은 파괴적인 변경을 포함하며 통합 검토가 필요합니다,

  • 🌟 minor 버전은 상당한 하위 호환 개선을 포함합니다,

  • 🩹 patch 버전은 버그 수정 및 소규모 개선을 포함합니다.

티켓 검사 를 통해 개발 중 가능한 매치메이킹 흐름을 더 잘 이해하고 디버그하세요. 운영 중인 매치메이커에서는 inspect API를 비활성화하는 것을 권장합니다.

일부 배포는 오류를 발생시킬 수 있습니다. 이를 해결하기 위해 배포를 자동으로 최대 max_deployment_retry_count 회까지 재시도합니다 (클라이언트 확인 없이).

예상치 못한 클라이언트 충돌이나 포기된 티켓이 남아 매치메이커 자원을 차지하지 않도록 하기 위해, 매치되지 않은 티켓은 다음 후에 취소됩니다 ticket_expiration_period 그로 인해 상태가 다음으로 변경됩니다 CANCELLED 그리고 영구 삭제되기까지 ticket_removal_period .

우리의 매치메이킹 로직의 핵심은 ⚙️ 구성에 구성되어 있습니다. 각 프로파일은 완전히 분리된 매치메이킹 큐이며, 앱 및 버전 정의된 양의 CPU 및 메모리(RAM) 리소스를 가리킵니다.

플레이어 기반을 여러 프로필로 분할하면 플레이어의 대기 시간이 길어질 수 있습니다. 초기 규칙 세트에서 플레이어가 함께 그룹화되기 위해 충족되어야 하는 조건은 세 가지 속성으로 정의됩니다:

  • 선택한 이름, 예: - 매치 크기,

  • 규칙 유형(연산자라고도 함), 예: - player_count,

  • 마지막으로 연산자 속성들, 예: team_count 또는 max_team_size.

플레이어 수 규칙

이는 할당을 시작하기 위해 몇 명의 플레이어가 매치되어야 하는지를 정의하는 특별한 규칙입니다:

  • team_count 는 팀 수를 나타내며, 1팀은 협동 모드나 프리포올 모드에 사용될 수 있습니다,

  • min_team_size 는 팀당 최소 플레이어 수를 나타냅니다.

  • max_team_size 는 팀당 최대 플레이어 수를 나타냅니다.

우리의 간단한 예시는 2명의 플레이어가 있는 협동 게임을 보여줍니다.

circle-exclamation

지연 시간 규칙

✅ 이제 다음 단계로 진행할 수 있습니다.

3. 인스턴스 세부정보 검토

☑️ 초기화되면 대시보드에서 새 매치메이커의 세부정보를 검토하세요:

  • 상태 는 서비스 상태를 나타내며 ONLINE, OFFLINE 또는 ERROR일 수 있습니다.

  • 식별자 는 문제가 발생했을 때 Edgegap 직원이 귀하의 매치메이커를 빠르게 찾는 데 도움이 됩니다.

  • 시작 시간 은 최신 업데이트 시간을 추적하는 데 유용할 수 있습니다.

  • 크기 는 우리의 요금제 계층arrow-up-right.

  • API URL 은 게임 클라이언트와 게임 서버가 귀하의 매치메이커와 통신하는 데 사용됩니다.

  • Swagger URL 은 API 스키마를 탐색하기 위해 제공하는 편리한 OpenAPI 명세 GUI입니다.

  • 인증 토큰 은 게임 클라이언트와 게임 서버가 인증에 사용하는 고유한 비밀 토큰입니다.

triangle-exclamation

새 매치메이커를 테스트하려면, Swagger URL, API URL 및 인증 토큰이 필요합니다.

✅ 이제 다음 단계로 진행할 수 있습니다.

circle-info

개발 중 매치메이커 규칙을 업데이트하려면 구성을 편집하고 다시 시작하세요.

circle-check

4. 티켓 API 테스트

circle-info

DNS 전파가 완료되도록 매치메이커를 시작한 후 최대 5분까지 기다리십시오. 매치메이커 시작 후 DNS 전파가 완료되도록 최대 5분까지 기다려 주십시오.

☑️ 먼저, Swagger URL을 여세요 스웨거 GUI에서 OpenAPI 스키마를 검사하려면:

☑️ 를 클릭하세요 인증 🔒, 귀하의 인증 토큰를 붙여넣고, 인증.

을(를) 클릭하여 확인하세요 ☑️ 아래로 스크롤하여 티켓 API- POST /tickets , 확장한 다음.

Try it out

  • 을 클릭하세요 ☑️ 요청 미리보기: 다음을 확인하세요 player_ip서버 대 서버 null

  • - 이렇게 설정하면 Matchmaker가 요청에 자동으로 추가된 IP 주소를 사용합니다 (대체 방법은 을(를) 참조하세요), ⚙️ 구성,

  • 프로파일 은 귀하의 속성 은 이 경우

    • 지연 시간 player_count 규칙에 대한 값을 포함합니다,

규칙 은 플레이어 티켓에 속성을 필요로 하지 않는 유일한 규칙입니다. ☑️ 클릭하세요

  • Execute 그리고 플레이어 티켓 요청에 대한 응답을 검토하세요:

  • - 이렇게 설정하면 Matchmaker가 요청에 자동으로 추가된 IP 주소를 사용합니다 (대체 방법은 id ⚙️ 구성,

  • 은 귀하의 고유한 매치메이킹 티켓 ID이며, 나중에 티켓을 확인하기 위해 저장하세요, 의 선택을 확인하며 group_id,

  • 은 모든 티켓에 발급되는 고유한 그룹 ID이며, 단독 플레이어는 1로 구성된 그룹으로 표현됩니다 team_id

  • ☑️ 요청 미리보기: 상태에 도달하면 각 플레이어에게 발급되는 고유한 팀 ID입니다,

  • 각 팀은 구성된 팀 크기를 초과하지 않는 여러 그룹을 포함할 수 있습니다 는 식별 방법에 관계없이 플레이어의 해결된 공용 IP 주소입니다, player_ip 할당

  • 은 다음으로 설정됩니다 서버에 매치되거나 할당되지 않았음을 나타내기 위해,

  • created_at 은 게임 UI에서 사용하기 위해 플레이어 티켓이 생성된 시점에 대한 정보를 제공합니다, status, 현재 티켓의 상태를 나타내며 모든 티켓은 다음 상태로 시작합니다, "SEARCHING" .

☑️ 다시 눌러 두 번째 티켓을 생성하세요 은 플레이어 티켓에 속성을 필요로 하지 않는 유일한 규칙입니다. 다시 눌러 두 플레이어가 매칭되어 서버가 시작되도록 합니다.

☑️ POST /tickets를 축소하고 GET /tickets/{ticketId}를 엽니다, 그런 다음 클릭하세요 , 확장한 다음.

☑️ 이전 단계의 응답에서 티켓 ID를 입력하고 클릭하세요 은 플레이어 티켓에 속성을 필요로 하지 않는 유일한 규칙입니다..

☑️ 플레이어 티켓에 대한 업데이트된 할당을 검토하세요:

  • 상태가 다음으로 변경됨 MATCH_FOUND 먼저, 동시에 각 팀은 구성된 팀 크기를 초과하지 않는 여러 그룹을 포함할 수 있습니다 다음을 확인하세요 player_ip 를 유지하여 플레이어가 매칭되었고 서버가 할당 중임을 표시하세요,

규칙 은 플레이어 티켓에 속성을 필요로 하지 않는 유일한 규칙입니다. 다시 눌러 티켓을 확인하고 티켓에 대한 업데이트된 할당을 검토하세요:

  • 상태가 다음으로 변경됨 HOST_ASSIGNED 와 함께 각 팀은 구성된 팀 크기를 초과하지 않는 여러 그룹을 포함할 수 있습니다 할당된 서버의 세부 정보를 포함합니다.

chevron-right문제 해결 및 FAQhashtag

내 티켓이 에서 멈춰 있습니다 status, 현재 티켓의 상태를 나타내며 모든 티켓은 다음 상태로 시작합니다, "SEARCHING" .

  • 구성에 따라 겹치는 조건을 가진 충분한 티켓이 생성되었는지 확인하세요.


내 티켓이 반복해서 사이를 오가며 멈춥니다 MATCH_FOUNDteam_id 반복적으로.

  • 무료 요금제 계정은 한 번에 1개 배포로 제한됩니다. 업그레이드를 고려하거나 새 배포를 시작하려면 현재 배포를 중지하세요.


내 티켓이 바로 로 이동합니다 CANCELLED.

  • 티켓의 만료에 도달했습니다. 새 티켓을 다시 생성하거나 테스트를 위해 구성에서 만료 기간을 늘리세요.


티켓을 확인할 때 HTTP 404 Not Found를 받습니다.

  • 티켓은 DELETE 요청으로 삭제되었거나(또는 구성에 정의된 제거 기간에 도달하여) 제거되었습니다. 새 티켓을 다시 생성하거나 테스트를 위해 구성에서 만료/제거 기간을 늘리세요.

☑️ 대시보드에서 새 배포를 확인하세요arrow-up-right:

  • 각 배포가 모든 티켓 ID와 프로필로 태그되어 추적 가능성이 향상됨을 확인하세요.

☑️ 게임 클라이언트에서 할당된 서버로의 연결을 시도하세요.

circle-exclamation

☑️ 배포에 문제없이 연결할 수 있음을 확인하고 테스트를 마쳤다면, 배포 중지 다음 빌드를 위해 계정의 용량을 확보하세요.

✅ 이제 다음 단계로 진행할 수 있습니다.

circle-info

테스트용 openAPI 스펙을 다음에서 찾으세요 {matchmaker-url}/swagger/v1/swagger.json.

5. 게임 통합

Matchmaker는 다음과 통합됩니다:

☑️ 에서 게임 클라이언트최상의 플레이어 경험을 위해 인게임 UI를 사용하여 플레이어에게 티켓 상태 업데이트를 제공하는 것을 권장합니다. 자세한 내용은 다음을 참조하세요:

☑️ 에서 게임 클라이언트, 재시도가 가능한 429 Too Many Requests 오류는 지수 백오프와 재시도로 처리하여 매치메이커가 갑작스러운 트래픽 급증 동안 회복할 시간을 가질 수 있도록 하세요.

☑️ 에서 게임 클라이언트, 재시도가 불가능한 오류를 처리하고 있는지 확인하세요:

  • 404 Not Found - 티켓이 삭제되었습니다,

  • 500 Internal Server Error - 일시적인 서비스 중단입니다.

☑️ 에서 게임 서버, 플레이어 선호도와 초기 서버 컨텍스트를 읽어보세요:

  1. 주입된 변수(매치메이커) 초기 플레이어의 매치메이킹 데이터를 검색하기 위해.

  2. 주입된 변수(앱 버전) 버전 매개변수, 설정 및 비밀을 위해.

  3. 주입된 변수(배포) 배포 정보, IP, 위치 등...을 위해.

☑️ 플레이어가 연결되면, 게임 서버 및 게임 클라이언트가 초기화가 진행 중임을 나타내기 위해 로딩 장면(3D 장면, 로비 같은 소셜 UI 또는 진행 표시 막대가 있는 로딩 화면)을 시작하세요.

☑️ 다음을 보장하세요 매치가 종료된 후 배포가 제대로 중지될 것입니다.arrow-up-right 적절히

🙌 축하합니다, 매치메이킹 통합을 완료했습니다! 더 배우려면 계속 읽으세요.

🏁 고급 예시

다음 등을 포함한 모든 매치메이킹 기능을 활용한 완전한 구성은 ⚙️ 구성, 플레이어 기반을 여러 프로필로 분할하면 플레이어의 대기 시간이 길어질 수 있습니다., 및 심층 분석 다음과 같을 수 있습니다:

🎾 커스텀 로비

커스텀 로비(비공개 로비, 샌드박스 레벨)는 소파 멀티플레이 및 게임의 새로운 기능을 메인 모드에 도입하기 전에 테스트하는 데 매우 인기 있는 옵션입니다. 일반적으로 가장 적은 제한을 필요로 하지만, 플레이어가 심층 분석.

circle-info

공개 접근 없이 비공개 로비의 경우, 를 설정하세요 "team_size": 1 그리고 그룹 소유자가 혼자 게임을 시작하도록 하세요. 소유자는 그룹 및 호스트 할당 세부 정보를 여러 멤버와 공유하여 함께 참여할 수 있습니다.

circle-check

🥛 백필 쇼케이스

를 기반으로 구축된 이 구성은 매치메이킹백필을 보여줍니다 Backfill 와 함께 그룹.

⚔️ 경쟁 게임

경쟁 게임은 플레이어들이 개인(개인전)이나 팀으로 승리를 위해 서로 경쟁하는 데 중점을 둡니다. 유사한 실력의 플레이어나 팀을 짝지어 공정하고 균형 잡힌 매치를 보장하고, 빠르게 공정한 경쟁자를 찾아 게임 속도를 유지하세요.

다음을 수행할 수 있습니다 각각 1명 이상의 플레이어로 여러 팀을 정의하세요, 예를 들어:

게임 모드
팀 수
팀 크기
총 플레이어 수

5v5 FPS

2

5

10

5v5 MOBA

2

5

10

20x3 배틀로얄

20

3

60

10인 개인전

1

10

10

다수를 정의하세요 ⚙️ 구성 게임 모드별 규칙 및 설정을 위해, 그리고 필요에 따라 확장하세요.

  • 모든 매치에 대해:

    • 을(를) 제한하세요 매치메이킹 지연 시간 멀리 떨어진 플레이어의 매칭을 방지하기 위해,

    • 심층 분석 사전 구성된 파티와 팀 크기 초과를 방지하기 위해,

    • 더 많은 플레이어를 찾기 위해 시간이 지남에 따라 지연 제한을 서서히 완화하세요,

    • 특정 프로필에 대해 더 많은 CPU 또는 메모리를 할당하세요 앱 및 버전 를 사용하여,

  • 캐주얼 매치의 경우:

    • 매치 속도와 매치 충원율을 극대화하기 위해 랭크 제한을 생략하세요,

    • 모두에게 적합한 지도를 찾기 위해 플레이어가 지도 선호도를 제공하도록 하세요,

    • 팀 크기를 초과하지 않고 이탈자를 대체하기 위해 백필 그룹 크기를 지정하세요,

    • 큐 대기 시간 3분(180초) 후에는 매치를 보장하기 위해 지연 제한을 제거하세요.

  • 경쟁 매치의 경우:

    • 유사한 실력의 상대만 허용하도록 랭크를 제한하세요,

    • 리그의 랭크 극단에 있는 플레이어들을 매칭하기 위해 랭크 상승 또는 하락 랭크를 사용하세요.

  • 상위 1%의 고급 실력 매치(챌린저)의 경우:

    • 매치에서 실력 분포를 세밀하게 제어하기 위해 수치 기반 실력 등급(ELO)을 사용하세요,

    • 플레이어 수가 적기 때문에 지연 요구 사항을 완화하기 전에 더 오래 기다리세요.

circle-check

🤝 협동 게임

협동 게임은 플레이어가 공통의 목표나 AI 상대를 향해 팀으로 함께 작업해야 합니다. 유사한 선호도와 게임 습관을 가진 플레이어를 정렬하세요. 떠난 플레이어를 교체하고 핑 비콘 반응성 있는 플레이어 경험을 제공하기 위해 개선하세요.

팀 수가 1이고 최대 팀 크기가 4인 경우, 매치당 최대 4명의 플레이어가 필요합니다.

다수를 정의하세요 ⚙️ 구성 게임 모드별 규칙 및 설정을 위해:

  • 큐에 플레이어를 유지하고 매치 충원율을 극대화하기 위해 최소 4명의 플레이어로 시작하세요,

  • 을(를) 제한하세요 매치메이킹 지연 시간 멀리 떨어진 플레이어의 매칭을 방지하기 위해,

  • 모두의 실력 수준에 맞게 플레이어가 특정 게임 난이도를 선택하도록 하세요,

  • 모두에게 적합한 지도를 찾기 위해 플레이어가 지도 선호도를 제공하도록 하세요,

  • 유사한 게임 진행도를 요구하기 위해 플레이어 레벨 차이를 제한하세요,

  • 서버 용량을 초과하지 않고 이탈자를 대체하기 위해 백필 그룹 크기를 지정하세요,

  • 저평가된 플레이어와 치터를 일반 플레이어와 분리하기 위해 중재 플래그를 사용하세요,

  • 심층 분석 사전 구성된 파티 및 서버 용량을 초과하지 않고 팀을 채우기 위해,

  • 다른 앱 및 버전 프로필에 대해 더 많은 CPU 또는 메모리를 할당하세요.

이상적인 조건으로 시작하고, 제한을 확장하세요 빠른 매치를 보장하기 위해:

  • 더 많은 플레이어를 찾기 위해 시간이 지남에 따라 지연 제한을 완화하세요,

  • 더 많은 플레이어를 찾기 위해 허용되는 플레이어 레벨 차이를 증가시키세요,

  • 필요한 플레이어 수를 줄이고 게임을 더 빨리 시작하기 위해 최소 팀 크기를 줄이세요,

    • 서버는 빈 슬롯을 AI 팀원으로 채울 수 있습니다,

    • 또는 심층 분석 나중에 플레이어를 추가하려면,

  • 큐 대기 시간 150초 후 솔로로 게임을 시작하려면 최소 팀 크기를 1로 설정하세요

🎈 소셜 게임

소셜 게임은 협력, 소통 및 공유 경험을 통해 플레이어 간의 연결과 관계를 구축하는 데 중점을 둡니다. 많은 수의 플레이어를 지원하고 매치 충원율을 극대화하며 플레이어 선호도와 게임 습관을 맞추세요. 떠난 플레이어를 교체하고 높은 핑 비콘 반응성 있는 플레이어 경험을 제공하기 위해 개선하세요.

팀 수가 1(개인전)이고 최대 팀 크기가 50인 경우, 매치당 최대 50명의 플레이어가 필요합니다.

정의하세요 ⚙️ 구성 게임 모드별 규칙 및 설정을 위해:

  • 을(를) 제한하세요 매치메이킹 지연 시간 멀리 떨어진 플레이어의 매칭을 방지하기 위해,

  • 플레이어가 게임 모드 선호도를 제공하여 모두에게 적합한 모드를 찾도록 하세요,

  • 서버 용량을 초과하지 않고 이탈자를 대체하기 위해 백필 그룹 크기를 지정하세요,

  • 저평가된 플레이어와 치터를 일반 플레이어와 분리하기 위해 중재 플래그를 사용하세요,

  • 심층 분석 사전 구성된 로비 또는 서버 용량을 초과하지 않고 팀을 채우기 위해,

  • 다른 앱 및 버전 프로필에 대해 더 많은 CPU 또는 메모리를 할당하세요.

이상적인 조건으로 시작하고, 제한을 확장하세요 빠른 매치를 보장하기 위해:

  • 더 많은 플레이어를 찾기 위해 시간이 지남에 따라 지연 제한을 완화하세요,

  • 필요한 플레이어 수를 줄이고 게임을 더 빨리 시작하기 위해 최소 팀 크기를 서서히 줄이세요,

    • 서버는 빈 슬롯을 AI 플레이어로 채울 수 있습니다,

    • 또는 심층 분석 나중에 플레이어를 추가하려면,

  • 큐 대기 시간 150초 후 솔로로 게임을 시작하려면 최소 팀 크기를 1로 설정하세요

마지막 업데이트

도움이 되었나요?