기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
매치 알고리즘 사용자 정의
FlexMatch 는 대부분의 게임에 대한 기본 알고리즘을 최적화하여 플레이어가 대기 시간을 최소화하면서 허용 가능한 일치 항목이 되도록 합니다. 알고리즘을 사용자 정의하고 게임에 맞게 매치메이킹을 조정할 수 있습니다.
다음은 기본 FlexMatch 매치메이킹 알고리즘입니다.
-
FlexMatch 는 열려 있는 모든 매치메이킹 티켓과 채우기 티켓을 티켓 풀에 배치합니다.
-
FlexMatch 는 풀의 티켓을 하나 이상의 배치로 무작위로 그룹화합니다. 티켓 풀이 커지면 는 최적의 배치 크기를 유지하기 위해 추가 배치를 FlexMatch 구성합니다.
-
FlexMatch 는 각 배치 내에서 티켓을 연령별로 정렬합니다.
-
FlexMatch 는 각 배치의 가장 오래된 티켓을 기반으로 일치 항목을 빌드합니다.
매치 알고리즘을 사용자 지정하려면 규칙 세트 스키마에 algorithm
구성 요소를 추가합니다. 전체 참조 문서에 대해서는 FlexMatch 규칙 세트 스키마 섹션을 참조하세요.
다음과 같은 선택적 사용자 지정을 사용하여 매치메이킹 프로세스의 여러 단계에 영향을 미칠 수 있습니다.
사전 배치 정렬 추가
배치를 구성하기 전에 티켓 풀을 정렬할 수 있습니다. 이러한 유형의 사용자 지정은 티켓 풀이 큰 게임에서 가장 효과적입니다. 사전 배치 정렬은 매치메이킹 프로세스를 가속화하고 정의된 특성에 대한 플레이어 균일성을 높이는 데 도움이 될 수 있습니다.
batchingPreference
알고리즘 속성을 사용하여 사전 배치 정렬 메서드를 정의합니다. 기본 설정은 random
입니다.
사전 배치 정렬을 사용자 지정하는 옵션은 다음과 같습니다.
-
플레이어 속성별로 정렬합니다. 플레이어 속성 목록을 제공하여 티켓 풀을 사전 정렬합니다.
플레이어 속성별로 정렬하려면
batchingPreference
를sorted
로 설정하고sortByAttributes
에서 플레이어 속성 목록을 정의합니다. 속성을 사용하려면 먼저 규칙 세트의playerAttributes
구성 요소에서 속성을 선언해야 합니다.다음 예제에서는 플레이어가 선호하는 게임 맵을 기반으로 티켓 풀을 정렬한 다음 플레이어 스킬별로 FlexMatch 정렬합니다. 결과 배치에는 동일한 맵을 사용하려는 비슷한 스킬을 갖춘 플레이어가 포함될 가능성이 더 큽니다.
"algorithm": { "batchingPreference": "sorted", "sortByAttributes": ["map", "player_skill"], "strategy": "exhaustiveSearch" },
-
지연 시간별로 정렬합니다. 지연 시간이 가장 낮은 매치를 생성하거나 허용 가능한 지연 시간으로 빠르게 매치를 생성합니다. 이 사용자 지정은 40명 이상의 플레이어로 구성된 라지 매치를 구성하는 규칙 세트에 유용합니다.
알고리즘 속성을
strategy
에서balanced
로 설정합니다. 밸런스 전략은 사용 가능한 규칙 문 유형을 제한합니다. 자세한 내용은 FlexMatch 대규모 일치 규칙 세트 설계 단원을 참조하십시오.FlexMatch 는 다음 방법 중 하나로 플레이어가 보고한 지연 데이터를 기반으로 티켓을 정렬합니다.
-
가장 짧은 지연 시간 위치. 티켓 풀은 플레이어가 가장 낮은 지연 시간 값을 보고하는 위치에 따라 미리 정렬됩니다. FlexMatch 그런 다음 동일한 위치에서 지연 시간이 짧은 티켓을 배치하여 더 나은 게임 플레이 경험을 만듭니다. 또한 각 배치의 티켓 수가 줄어들어 매치메이킹이 더 오래 걸릴 수 있습니다. 이 사용자 지정을 사용하려면 다음 예와 같이
batchingPreference
를fastestRegion
으로 설정합니다."algorithm": { "batchingPreference": "fastestRegion", "strategy": "balanced" },
-
허용 가능한 지연 시간과 빠르게 일치합니다. 티켓 풀은 플레이어가 가장 짧은 지연 시간 값을 보고한 위치를 기준으로 사전 정렬됩니다. 이렇게 하면 더 많은 티켓이 포함된 배치 수가 줄어듭니다. 각 배치에 더 많은 티켓이 포함되므로 적합한 매치를 더 빨리 찾을 수 있습니다. 이 사용자 지정을 사용하려면 다음 예와 같이
batchingPreference
속성을largestPopulation
으로 설정합니다."algorithm": { "batchingPreference": "largestPopulation", "strategy": "balanced" },
참고
밸런스 전략의 기본값은
largestPopulation
입니다. -
채우기 티켓의 우선 순위 지정
게임에서 자동 채우기 또는 수동 채우기를 구현하는 경우 가 요청 유형에 따라 매치메이킹 티켓을 FlexMatch 처리하는 방법을 사용자 지정할 수 있습니다. 요청 유형은 새 매치 또는 채우기 요청일 수 있습니다. 기본적으로 는 두 유형의 요청을 모두 동일하게 FlexMatch 처리합니다.
백필 우선 순위 지정은 가 티켓을 배치한 후 티켓을 FlexMatch 처리하는 방식에 영향을 미칩니다. 채우기 우선 순위를 지정하려면 철저한 검색 전략을 사용하는 규칙 세트가 필요합니다.
FlexMatch 는 여러 채우기 티켓과 일치하지 않습니다.
채우기 티켓의 우선 순위를 변경하려면 backfillPriority
속성을 설정하세요.
-
채우기 티켓을 먼저 매칭합니다. 이 옵션은 새 매치를 만들기 전에 채우기 티켓을 매칭하려고 시도합니다. 즉, 들어오는 플레이어가 기존 게임에 참여할 확률이 더 높습니다.
게임에서 자동 채우기를 사용하는 경우 이 방법을 사용하는 것이 가장 좋습니다. 자동 채우기는 게임 세션이 짧고 플레이어 교체 시간이 긴 게임에서 주로 사용됩니다. Auto-backfill은 이러한 게임이 최소 실행 가능 매치를 형성하고 더 많은 플레이어를 FlexMatch 검색하여 열린 슬롯을 채우는 동안 시작할 수 있도록 도와줍니다.
backfillPriority
을high
로 설정합니다."algorithm": { "backfillPriority": "high", "strategy": "exhaustiveSearch" },
-
채우기 티켓을 마지막에 매칭합니다. 이 옵션은 다른 모든 티켓을 평가하기 전까지는 채우기 티켓을 무시합니다. 즉, 는 새 게임과 일치시킬 수 없을 때 기존 게임에 들어오는 플레이어를 FlexMatch 채우게 됩니다.
이 옵션은 새 매치를 구성할 플레이어가 충분하지 않은 경우와 같이 플레이어를 게임에 참여시키기 위한 마지막 기회로 채우기를 사용하려는 경우에 유용합니다.
backfillPriority
를low
으로 설정합니다."algorithm": { "backfillPriority": "low", "strategy": "exhaustiveSearch" },
확장이 있는 이전 티켓 선호
확장 규칙은 매치를 완료하기 어려운 경우 매치 기준을 완화시킵니다. Amazon GameLift은 부분적으로 완료된 매치의 티켓이 특정 연령에 도달하면 확장 규칙을 적용합니다. 티켓의 생성 타임스탬프는 Amazon이 규칙을 GameLift 적용하는 시기를 결정합니다. 기본적으로 는 가장 최근에 일치하는 티켓의 타임스탬프를 FlexMatch 추적합니다.
가 확장 규칙을 FlexMatch 적용할 때 변경하려면 다음과 expansionAgeSelection
같이 속성을 설정합니다.
-
최신 티켓을 기준으로 확장합니다. 이 옵션은 잠재적 매치에 추가된 최신 티켓을 기반으로 확장 규칙을 적용합니다. 가 새 티켓 FlexMatch 과 일치할 때마다 시간 시계가 재설정됩니다. 이 옵션을 사용하면 매치의 품질이 더 높게 나오지만 매칭하는 데 시간이 더 오래 걸리는 경향이 있습니다. 매칭하는 데 시간이 너무 오래 걸리면 매치 요청이 완료되기까지 시간이 초과될 수 있습니다. 기본적으로
expansionAgeSelection
은newest
,newest
로 설정됩니다. -
가장 오래된 티켓을 기준으로 확장합니다. 이 옵션은 잠재적 매치에 가장 오래된 티켓을 기반으로 확장 규칙을 적용합니다. 이 옵션을 사용하면 확장을 더 빠르게 FlexMatch 적용하여 가장 먼저 매칭되는 플레이어의 대기 시간을 개선하지만 모든 플레이어의 매칭 품질을 낮춥니다.
expansionAgeSelection
를oldest
으로 설정합니다.
"algorithm": { "expansionAgeSelection": "oldest", "strategy": "exhaustiveSearch" },