매치메이킹
Matchmaking을 빠르게 시작하고 다양한 장르에 대한 예시 시나리오를 탐색하세요.
이 비디오를 따라 Matchmaker 서비스를 시작하세요:
✔️ 준비
매치메이킹 아키텍처
이 가이드는 다음에 중점을 둡니다 Matchmaking API 및 Backfill API.

매치메이킹이 관련될 때 중요한 데이터 흐름은 네(4) 가지입니다:
Matchmaking API 는 게임 클라이언트가 Matchmaker와 통신하는 데 사용됩니다:
그룹 관리, 서버 할당 및 모니터링을 위해,
와의 핑 측정을 위해, 핑 비콘.
배포 API는 Matchmaker가 전용 서버를 배포, 확장 및 관리하는 데 사용됩니다.
Netcode 전송 는 게임 클라이언트와 전용 서버 간 통신에 사용됩니다.
심층 분석 실행 중인 서버의 플레이어를 교체하거나 추가하기 위해,
출시 후, 귀하의 매치메이커는 24시간/연중무휴로 실행되어야 합니다 전 세계 플레이어들이 서버에 접속할 수 있도록 보장하기 위해.
🍀 간단한 예시
간단한 예제부터 시작하여 기본 매치메이킹 플레이어 흐름을 테스트하세요:
1. 무료 요금제로 설정
☑️ 무료 Edgegap 계정에 등록하세요 그리고 Matchmaker 대시보드 페이지를 여세요.
☑️ 를 클릭하세요 Matchmaker 생성 먼저, 그런 다음 다음을 입력하세요:
매치메이커 이름 - 참고용 예:
quickstart-dev,간단한 예시 JSON 구성을 업로드하세요.
🍀 간단한 예시 (권장 최소 구성):
애플리케이션을 반드시 변경하세요 이름 및 버전 을(를) 귀하의 환경에 맞추기 위해 앱 및 버전.
문제 해결 및 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명의 플레이어가 있는 협동 게임을 보여줍니다.
플레이어 수 규칙 은(는) 필수이며 초기 구성 규칙에서 한 번만 정의될 수 있습니다 초기 구성 규칙에서.
지연 시간 규칙
✅ 이제 다음 단계로 진행할 수 있습니다.
3. 인스턴스 세부정보 검토
☑️ 초기화되면 대시보드에서 새 매치메이커의 세부정보를 검토하세요:

상태 는 서비스 상태를 나타내며 ONLINE, OFFLINE 또는 ERROR일 수 있습니다.
식별자 는 문제가 발생했을 때 Edgegap 직원이 귀하의 매치메이커를 빠르게 찾는 데 도움이 됩니다.
시작 시간 은 최신 업데이트 시간을 추적하는 데 유용할 수 있습니다.
크기 는 우리의 요금제 계층.
API URL 은 게임 클라이언트와 게임 서버가 귀하의 매치메이커와 통신하는 데 사용됩니다.
Swagger URL 은 API 스키마를 탐색하기 위해 제공하는 편리한 OpenAPI 명세 GUI입니다.
인증 토큰 은 게임 클라이언트와 게임 서버가 인증에 사용하는 고유한 비밀 토큰입니다.
Edgegap 직원은 귀하의 토큰을 요청하지 않습니다. 보안 위반이 의심되면 토큰을 재생성하세요.
새 매치메이커를 테스트하려면, Swagger URL, API URL 및 인증 토큰이 필요합니다.
✅ 이제 다음 단계로 진행할 수 있습니다.
개발 중 매치메이커 규칙을 업데이트하려면 구성을 편집하고 다시 시작하세요.
라이브 게임 및 무중단 업데이트에 대해서는 ⏩ 롤링 업데이트 을(를) 참조하세요.
4. 티켓 API 테스트
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와 함께각 팀은 구성된 팀 크기를 초과하지 않는 여러 그룹을 포함할 수 있습니다할당된 서버의 세부 정보를 포함합니다.

문제 해결 및 FAQ
내 티켓이 에서 멈춰 있습니다 status, 현재 티켓의 상태를 나타내며 모든 티켓은 다음 상태로 시작합니다, "SEARCHING" .
구성에 따라 겹치는 조건을 가진 충분한 티켓이 생성되었는지 확인하세요.
내 티켓이 반복해서 사이를 오가며 멈춥니다 MATCH_FOUND 및 team_id 반복적으로.
무료 요금제 계정은 한 번에 1개 배포로 제한됩니다. 업그레이드를 고려하거나 새 배포를 시작하려면 현재 배포를 중지하세요.
내 티켓이 바로 로 이동합니다 CANCELLED.
티켓의 만료에 도달했습니다. 새 티켓을 다시 생성하거나 테스트를 위해 구성에서 만료 기간을 늘리세요.
티켓을 확인할 때 HTTP 404 Not Found를 받습니다.
티켓은 DELETE 요청으로 삭제되었거나(또는 구성에 정의된 제거 기간에 도달하여) 제거되었습니다. 새 티켓을 다시 생성하거나 테스트를 위해 구성에서 만료/제거 기간을 늘리세요.
각 배포가 모든 티켓 ID와 프로필로 태그되어 추적 가능성이 향상됨을 확인하세요.

☑️ 게임 클라이언트에서 할당된 서버로의 연결을 시도하세요.
지연 시간이 높게 나타나면 네트코드 통합이 네트워크 지연을 시뮬레이션하도록 구성되어 있을 수 있습니다. 테스트 시 VPN을 비활성화하세요 보다 현실적인 환경을 위해 그리고 저지연 배포를 받으세요.
☑️ 배포에 문제없이 연결할 수 있음을 확인하고 테스트를 마쳤다면, 배포 중지 다음 빌드를 위해 계정의 용량을 확보하세요.
✅ 이제 다음 단계로 진행할 수 있습니다.
테스트용 openAPI 스펙을 다음에서 찾으세요 {matchmaker-url}/swagger/v1/swagger.json.
5. 게임 통합
Matchmaker는 다음과 통합됩니다:
게임 클라이언트, 다음을 위해 그룹, 구성원, 할당 및 티켓을 관리합니다,
전용 서버, 다음을 위해 심층 분석 플레이어가 떠난 후.
☑️ 에서 게임 클라이언트최상의 플레이어 경험을 위해 인게임 UI를 사용하여 플레이어에게 티켓 상태 업데이트를 제공하는 것을 권장합니다. 자세한 내용은 다음을 참조하세요:
☑️ 에서 게임 클라이언트, 재시도가 가능한 429 Too Many Requests 오류는 지수 백오프와 재시도로 처리하여 매치메이커가 갑작스러운 트래픽 급증 동안 회복할 시간을 가질 수 있도록 하세요.
☑️ 에서 게임 클라이언트, 재시도가 불가능한 오류를 처리하고 있는지 확인하세요:
404 Not Found- 티켓이 삭제되었습니다,500 Internal Server Error- 일시적인 서비스 중단입니다.
☑️ 에서 게임 서버, 플레이어 선호도와 초기 서버 컨텍스트를 읽어보세요:
주입된 변수(매치메이커) 초기 플레이어의 매치메이킹 데이터를 검색하기 위해.
주입된 변수(앱 버전) 버전 매개변수, 설정 및 비밀을 위해.
주입된 변수(배포) 배포 정보, IP, 위치 등...을 위해.
☑️ 플레이어가 연결되면, 게임 서버 및 게임 클라이언트가 초기화가 진행 중임을 나타내기 위해 로딩 장면(3D 장면, 로비 같은 소셜 UI 또는 진행 표시 막대가 있는 로딩 화면)을 시작하세요.
☑️ 다음을 보장하세요 매치가 종료된 후 배포가 제대로 중지될 것입니다. 적절히
🙌 축하합니다, 매치메이킹 통합을 완료했습니다! 더 배우려면 계속 읽으세요.
🏁 고급 예시
다음 등을 포함한 모든 매치메이킹 기능을 활용한 완전한 구성은 ⚙️ 구성, 플레이어 기반을 여러 프로필로 분할하면 플레이어의 대기 시간이 길어질 수 있습니다., 및 심층 분석 다음과 같을 수 있습니다:
🎾 커스텀 로비
커스텀 로비(비공개 로비, 샌드박스 레벨)는 소파 멀티플레이 및 게임의 새로운 기능을 메인 모드에 도입하기 전에 테스트하는 데 매우 인기 있는 옵션입니다. 일반적으로 가장 적은 제한을 필요로 하지만, 플레이어가 심층 분석.
공개 접근 없이 비공개 로비의 경우, 를 설정하세요 "team_size": 1 그리고 그룹 소유자가 혼자 게임을 시작하도록 하세요. 소유자는 그룹 및 호스트 할당 세부 정보를 여러 멤버와 공유하여 함께 참여할 수 있습니다.
추가하세요 custom-lobby-example - 이렇게 설정하면 Matchmaker가 요청에 자동으로 추가된 IP 주소를 사용합니다 (대체 방법은 기존 매치메이커에 커스텀 로비를 지원하도록.
🥛 백필 쇼케이스
를 기반으로 구축된 이 구성은 매치메이킹백필을 보여줍니다 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)을 사용하세요,
플레이어 수가 적기 때문에 지연 요구 사항을 완화하기 전에 더 오래 기다리세요.
여러 프로필을 사용하여 캐주얼 게임 모드, 경쟁 게임 모드 및 최상위 챌린저 플레이어를 분리하면 각 유형의 플레이어에 대해 규칙과 확장을 별도로 맞춤 설정할 수 있습니다.
🤝 협동 게임
협동 게임은 플레이어가 공통의 목표나 AI 상대를 향해 팀으로 함께 작업해야 합니다. 유사한 선호도와 게임 습관을 가진 플레이어를 정렬하세요. 떠난 플레이어를 교체하고 핑 비콘 반응성 있는 플레이어 경험을 제공하기 위해 개선하세요.
팀 수가 1이고 최대 팀 크기가 4인 경우, 매치당 최대 4명의 플레이어가 필요합니다.
다수를 정의하세요 ⚙️ 구성 게임 모드별 규칙 및 설정을 위해:
큐에 플레이어를 유지하고 매치 충원율을 극대화하기 위해 최소 4명의 플레이어로 시작하세요,
을(를) 제한하세요 매치메이킹 지연 시간 멀리 떨어진 플레이어의 매칭을 방지하기 위해,
모두의 실력 수준에 맞게 플레이어가 특정 게임 난이도를 선택하도록 하세요,
모두에게 적합한 지도를 찾기 위해 플레이어가 지도 선호도를 제공하도록 하세요,
유사한 게임 진행도를 요구하기 위해 플레이어 레벨 차이를 제한하세요,
서버 용량을 초과하지 않고 이탈자를 대체하기 위해 백필 그룹 크기를 지정하세요,
저평가된 플레이어와 치터를 일반 플레이어와 분리하기 위해 중재 플래그를 사용하세요,
심층 분석 사전 구성된 파티 및 서버 용량을 초과하지 않고 팀을 채우기 위해,
다른 앱 및 버전 프로필에 대해 더 많은 CPU 또는 메모리를 할당하세요.
이상적인 조건으로 시작하고, 제한을 확장하세요 빠른 매치를 보장하기 위해:
더 많은 플레이어를 찾기 위해 시간이 지남에 따라 지연 제한을 완화하세요,
더 많은 플레이어를 찾기 위해 허용되는 플레이어 레벨 차이를 증가시키세요,
필요한 플레이어 수를 줄이고 게임을 더 빨리 시작하기 위해 최소 팀 크기를 줄이세요,
서버는 빈 슬롯을 AI 팀원으로 채울 수 있습니다,
또는 심층 분석 나중에 플레이어를 추가하려면,
큐 대기 시간 150초 후 솔로로 게임을 시작하려면 최소 팀 크기를 1로 설정하세요
🎈 소셜 게임
소셜 게임은 협력, 소통 및 공유 경험을 통해 플레이어 간의 연결과 관계를 구축하는 데 중점을 둡니다. 많은 수의 플레이어를 지원하고 매치 충원율을 극대화하며 플레이어 선호도와 게임 습관을 맞추세요. 떠난 플레이어를 교체하고 높은 핑 비콘 반응성 있는 플레이어 경험을 제공하기 위해 개선하세요.
팀 수가 1(개인전)이고 최대 팀 크기가 50인 경우, 매치당 최대 50명의 플레이어가 필요합니다.
정의하세요 ⚙️ 구성 게임 모드별 규칙 및 설정을 위해:
을(를) 제한하세요 매치메이킹 지연 시간 멀리 떨어진 플레이어의 매칭을 방지하기 위해,
플레이어가 게임 모드 선호도를 제공하여 모두에게 적합한 모드를 찾도록 하세요,
서버 용량을 초과하지 않고 이탈자를 대체하기 위해 백필 그룹 크기를 지정하세요,
저평가된 플레이어와 치터를 일반 플레이어와 분리하기 위해 중재 플래그를 사용하세요,
심층 분석 사전 구성된 로비 또는 서버 용량을 초과하지 않고 팀을 채우기 위해,
다른 앱 및 버전 프로필에 대해 더 많은 CPU 또는 메모리를 할당하세요.
이상적인 조건으로 시작하고, 제한을 확장하세요 빠른 매치를 보장하기 위해:
더 많은 플레이어를 찾기 위해 시간이 지남에 따라 지연 제한을 완화하세요,
필요한 플레이어 수를 줄이고 게임을 더 빨리 시작하기 위해 최소 팀 크기를 서서히 줄이세요,
서버는 빈 슬롯을 AI 플레이어로 채울 수 있습니다,
또는 심층 분석 나중에 플레이어를 추가하려면,
큐 대기 시간 150초 후 솔로로 게임을 시작하려면 최소 팀 크기를 1로 설정하세요
마지막 업데이트
도움이 되었나요?

