

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# FlexMatch 규칙 유형
<a name="match-rules-reference-ruletype"></a>

## 배치 거리 규칙
<a name="match-rules-reference-ruletype-batchdistance"></a>

```
batchDistance
```

배치 거리 규칙은 두 속성값 간의 차이를 측정합니다. 라지 및 스몰 매치 항목 모두에 배치 거리 규칙 유형을 사용할 수 있습니다. 다음과 같은 두 가지 유형의 배치 거리 규칙이 있습니다.
+ *수치 속성 값을 비교합니다*. 예를 들어, 이 유형의 배치 거리 규칙을 통해 매치의 모든 플레이어들이 서로 두 스킬 레벨 내에 있어야 한다고 정할 수 있습니다. 이 유형의 경우 모든 티켓 `batchAttribute` 간의 최대 거리를 정의합니다.
+ *문자열 속성 값을 비교합니다*. 예를 들어, 이 유형의 배치 거리 규칙을 적용하면 매치에 참여하는 모든 플레이어가 동일한 게임 모드를 요청해야 할 수 있습니다. 이 유형의 경우 FlexMatch가 배치를 구성하는 데 사용하는 `batchAttribute` 값을 정의합니다.

**배치 거리 규칙 속성**
+ **`batchAttribute`** - 배치를 구성하는 데 사용되는 플레이어 속성 값입니다.
+ **`maxDistance`** - 성공적인 매치에 대한 최대 거리 값입니다. 수치 속성을 비교하는 데 사용됩니다.
+ **`partyAggregation`** - FlexMatch가 여러 플레이어(그룹)가 있는 티켓을 처리하는 방식을 결정하는 값입니다. 유효한 옵션에는 티켓 플레이어의 최소(`min`), 최대(`max`), 평균(`avg`) 값이 포함됩니다. 기본값은 `avg`입니다.

**Example**  
예제  

```
{
  "name":"SimilarSkillRatings",
  "description":"All players must have similar skill ratings",
  "type":"batchDistance",
  "batchAttribute":"SkillRating",
  "maxDistance":"500"
}
```

```
{
  "name":"SameGameMode",
  "description":"All players must have the same game mode",
  "type":"batchDistance",
  "batchAttribute":"GameMode"
}
```

## 비교 규칙
<a name="match-rules-reference-ruletype-comparison"></a>

```
comparison
```

비교 규칙은 또 다른 값과 플레이어 속성 값을 비교합니다. 다음과 같은 두 가지 유형의 비교 규칙이 있습니다.
+ *참조 값과 비교합니다*. 예를 들어, 이 유형의 비교 규칙을 적용하려면 매칭된 플레이어의 스킬 레벨이 특정 수준 이상이어야 할 수 있습니다. 이 유형의 경우 플레이어 속성, 참조 값, 비교 작업을 지정합니다.
+ *플레이어 간을 비교합니다*. 예를 들어, 이 유형의 비교 규칙을 적용하려면 매치에 참여하는 모든 플레이어가 서로 다른 캐릭터를 사용해야 할 수 있습니다. 이 유형의 경우 플레이어 속성을 지정하고 equal(`=`) 또는 not-equal(`!=`) 비교 연산을 지정합니다. 참조 값을 지정하지 마세요.

**참고**  
배치 거리 규칙은 플레이어 속성을 비교하는 데 더 효율적입니다. 매치메이킹 지연 시간을 줄이려면 가능하면 배치 거리 규칙을 사용합니다.

**비교 규칙 속성**
+ **`measurements`** - 비교할 플레이어 속성 값입니다.
+ **`referenceValue`** - 가능한 매치의 측정값과 비교할 값입니다.
+ **`operation`** - 측정값을 참조 값과 비교하는 방법을 결정하는 값입니다. 유효한 연산에는 다음이 포함됩니다. `<`, `<=`, `=`, `!=`, `>`, `>=`.
+ **`partyAggregation`** - FlexMatch가 여러 플레이어(그룹)가 있는 티켓을 처리하는 방식을 결정하는 값입니다. 유효한 옵션에는 티켓 플레이어의 최소(`min`), 최대(`max`), 평균(`avg`) 값이 포함됩니다. 기본값은 `avg`입니다.

## 거리 규칙
<a name="match-rules-reference-ruletype-distance"></a>

```
distance
```

거리 규칙은 플레이어 스킬 레벨 간의 거리와 같이 두 숫자 값 간의 차이를 측정합니다. 예를 들어 거리 규칙에 따라 모든 플레이어가 최소 30시간 이상 게임을 플레이해야 할 수 있습니다.

**참고**  
배치 거리 규칙은 플레이어 속성을 비교하는 데 더 효율적입니다. 매치메이킹 지연 시간을 줄이려면 가능하면 배치 거리 규칙을 사용합니다.

**거리 규칙 속성**
+ **`measurements`** - 거리를 측정할 플레이어 속성값입니다. 이 속성은 숫자 값이 있는 속성이어야 합니다.
+ **`referenceValue`** - 가능한 매치에 대한 거리를 측정하는 숫자 값입니다.
+ **`minDistance`/`maxDistance`** - 성공적인 매치에 대한 최소 또는 최대 거리 값입니다.
+ **`partyAggregation`** - FlexMatch가 여러 플레이어(그룹)가 있는 티켓을 처리하는 방식을 결정하는 값입니다. 유효한 옵션에는 티켓 플레이어의 최소(`min`), 최대(`max`), 평균(`avg`) 값이 포함됩니다. 기본값은 `avg`입니다.

## 수집 규칙
<a name="match-rules-reference-ruletype-collection"></a>

```
collection
```

수집 규칙은 플레이어 속성 값 그룹을 배치에 있는 다른 플레이어의 속성 값 또는 참조 값과 비교합니다. 속성 모음에는 여러 플레이어에 대한 속성 값, 한 플레이어에 대한 속성 값(문자열 목록), 또는 둘 모두가 포함될 수 있습니다. 예를 들어, 수집 규칙은 팀 내 플레이어가 선택한 캐릭터를 살펴볼 수 있습니다. 그러면 규칙에 따라 팀에 특정 캐릭터 중 한 명 이상이 있어야 할 수도 있습니다.

**수집 규칙 속성**
+ **`measurements`** - 비교할 플레이어 속성 값의 모음입니다. 속성 값은 반드시 문자열 목록이어야 합니다.
+ **`referenceValue`** - 가능한 매치에 대한 측정치를 비교하는 데 사용하는 값 (또는 값 모음)입니다.
+ **`operation`** - 측정값 모음을 비교하는 방법을 결정하는 값입니다. 유효한 작업에는 다음이 포함됩니다.
  + `intersection` - 이 작업을 통해 모든 플레이어의 모음에서 동일한 값의 수를 측정합니다. 교차 작업을 사용하는 규칙의 예는 [예제: 최선의 매치 검색을 위한 명시적 정렬 사용](match-examples-4.md) 섹션을 참조하세요.
  + `contains` - 이 작업을 통해 특정 참조 값을 포함하는 플레이어 속성 모음의 수를 측정합니다. 작업을 사용하는 규칙의 예는 [예제: 팀 레벨 요구 사항 및 지연 시간 제한 설정](match-examples-3.md) 섹션을 참조하세요.
  + `reference_intersection_count` - 이 작업을 통해 참조 값 모음에 항목을 매칭하는 플레이어 속성 모음의 항목 수를 측정합니다. 이 작업을 사용하여 다른 여러 플레이어 속성을 비교할 수 있습니다. 여러 플레이어 속성 모음을 비교하는 규칙의 예는 [예제: 복수 플레이어 속성 간의 교집합 찾기](match-examples-5.md) 섹션을 참조하세요.
+ **`minCount`/`maxCount`** - 성공적인 매치에 대한 최소 또는 최대 개수 값입니다.
+ **`partyAggregation`** - FlexMatch가 여러 플레이어(그룹)가 있는 티켓을 처리하는 방식을 결정하는 값입니다. 이 값의 경우 `union`을 사용하여 그룹에 있는 모든 플레이어의 플레이어 속성을 조합할 수 있습니다. 또는 `intersection`을 사용하여 그룹이 공통으로 가지고 있는 플레이어 속성을 사용할 수도 있습니다. 기본값은 `union`입니다.

## 복합 규칙
<a name="match-rules-reference-ruletype-compound"></a>

```
compound
```

복합 규칙은 논리적 문을 사용하여 40명 이하의 플레이어로 구성된 매치를 구성합니다. 단일 규칙 세트에 여러 복합 규칙을 사용할 수 있습니다. 여러 복합 규칙을 사용하는 경우 모든 복합 규칙이 true여야 매치를 구성할 수 있습니다.

[확장 규칙](match-rulesets-components-algorithm.md#match-rulesets-components-algorithm-expansion)을 사용하여 복합 규칙을 확장할 수는 없지만 기본 규칙 또는 지원 규칙을 확장할 수 있습니다.

**복합 규칙 속성**
+ **`statement`** - 개별 규칙을 결합하여 복합 규칙을 구성하는 데 사용되는 로직입니다. 이 속성에서 지정한 규칙은 규칙 세트에서 이전에 정의되어 있어야 합니다. 복합 규칙에는 `batchDistance` 규칙을 사용할 수 없습니다.

  이 속성은 다음과 같은 논리 연산자를 지원합니다.
  + `and` - 제공된 두 인수가 true인 경우 표현식은 true입니다.
  + `or` - 제공된 두 인수 중 하나가 true인 경우 표현식은 true입니다.
  + `not` - 표현식에서 인수 결과를 반대로 바꿉니다.
  + `xor` - 인수 중 하나만 true인 경우 표현식은 true입니다.

**Example 예제**  
다음 예제에서는 선택한 게임 모드에 따라 다양한 스킬 레벨의 플레이어를 매칭합니다.  

```
{
    "name": "CompoundRuleExample",
    "type": "compound",
    "statement": "or(and(SeriousPlayers, VeryCloseSkill), and(CasualPlayers, SomewhatCloseSkill))"
}
```

## 지연 규칙
<a name="match-rules-reference-ruletype-latency"></a>

```
latency
```

지연 규칙은 위치별 플레이어 지연 시간을 측정합니다. 지연 규칙은 지연 시간이 최대값보다 더 높은 모든 위치를 무시합니다. 지연 규칙이 허용되려면 플레이어의 최소 한 위치에서 지연 시간 값이 최대값보다 낮아야 합니다. `maxLatency` 속성을 지정하여 라지 매치에 이 규칙 유형을 사용할 수 있습니다.

**지연 시간 규칙 속성**
+ **`maxLatency`** - 위치에 허용 가능한 최대 지연 시간 값입니다. 티켓에 지연 시간이 최대값 미만인 위치가 없는 경우 티켓은 지연 시간 규칙과 일치하지 않습니다.
+ **`maxDistance`** - 각 티켓의 지연 시간과 거리 참조 값 사이의 최대값입니다.
+ **`distanceReference`** - 티켓 지연 시간을 비교할 지연 시간 값입니다. 거리 참조 값의 최대 거리 내에 있는 티켓은 매칭에 성공합니다. 유효한 옵션은 최소(`min`) 및 평균(`avg`) 플레이어 지연 시간 값을 포함합니다.
+ **`partyAggregation`** - FlexMatch가 여러 플레이어(그룹)가 있는 티켓을 처리하는 방식을 결정하는 값입니다. 유효한 옵션에는 티켓 플레이어의 최소(`min`), 최대(`max`), 평균(`avg`) 값이 포함됩니다. 기본값은 `avg`입니다.

**참고**  
대기열을 사용하면 지연 시간 규칙과 일치하지 않는 리전에 게임 세션을 배치할 수 있습니다. 대기열의 지연 시간 정책에 대한 자세한 내용은 [플레이어 지연 시간 정책 생성](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/queues-design.html#queues-design-latency)을 참조하세요.

## 절대 정렬 규칙
<a name="match-rules-reference-ruletype-absolute"></a>

```
absoluteSort
```

절대 정렬 규칙은 배치에 추가된 첫 번째 티켓과 비교하여 지정된 플레이어 속성을 기준으로 매치메이킹 티켓 배치를 정렬합니다.

**절대 정렬 규칙 속성**
+ **`sortDirection`** - 매치메이킹 티켓을 정렬하는 순서입니다. 유효한 옵션은 다음과 같습니다. `ascending`, `descending`.
+ **`sortAttribute`** - 티켓 정렬 기준으로 사용할 플레이어 속성입니다.
+ **`mapKey`** - 맵인 경우 플레이어 속성을 정렬하는 옵션입니다. 유효한 옵션은 다음과 같습니다.
  + `minValue` - 값이 가장 낮은 키가 첫 번째입니다.
  + `maxValue` - 값이 가장 높은 키가 첫 번째입니다.
+ **`partyAggregation`** - FlexMatch가 여러 플레이어(그룹)가 있는 티켓을 처리하는 방식을 결정하는 값입니다. 유효한 옵션에는 최소(`min`) 플레이어 속성, 최대(`max`) 플레이어 속성, 그룹 내 플레이어에 대한 모든 플레이어 속성의 평균(`avg`)을 포함합니다. 기본값은 `avg`입니다.

**Example**  
예제  
다음 예제 규칙은 플레이어를 스킬 레벨별로 정렬하고 그룹의 스킬 레벨의 평균을 계산합니다.  

```
{
    "name":"AbsoluteSortExample",
    "type":"absoluteSort",
    "sortDirection":"ascending",
    "sortAttribute":"skill",
    "partyAggregation":"avg"
}
```

## 거리 정렬 규칙
<a name="match-rules-reference-ruletype-distancesort"></a>

```
distanceSort
```

거리 정렬 규칙은 배치에 추가된 첫 번째 티켓에서 지정된 플레이어 속성 거리를 기준으로 매치메이킹 티켓 배치를 정렬합니다.

**거리 정렬 규칙 속성**
+ **`sortDirection`** - 매치메이킹 티켓을 정렬하는 방향입니다. 유효한 옵션은 다음과 같습니다. `ascending`, `descending`.
+ **`sortAttribute`** - 티켓 정렬 기준으로 사용할 플레이어 속성입니다.
+ **`mapKey`** - 맵인 경우 플레이어 속성을 정렬하는 옵션입니다. 유효한 옵션은 다음과 같습니다.
  + `minValue` - 배치에 추가된 첫 번째 티켓의 경우 값이 가장 낮은 키를 찾습니다.
  + `maxValue` - 배치에 추가된 첫 번째 티켓의 경우 값이 가장 높은 키를 찾습니다.
+ **`partyAggregation`** - FlexMatch가 여러 플레이어(그룹)가 있는 티켓을 처리하는 방식을 결정하는 값입니다. 유효한 옵션에는 티켓 플레이어의 최소(`min`), 최대(`max`), 평균(`avg`) 값이 포함됩니다. 기본값은 `avg`입니다.