

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

# Amazon GameLift Servers 호스팅 게임 서버에 FlexMatch 추가
<a name="match-server"></a>

Amazon GameLift Servers가 매치를 생성하면 팀 할당을 포함한 주요 매치메이킹 세부 정보를 설명하는 매치 결과 데이터 세트가 생성됩니다. 게임 서버는 매치를 호스팅하기 위해 새 게임 세션을 시작할 때 이 데이터와 기타 게임 세션 정보를 사용합니다.

**Amazon GameLift Servers로 호스팅되는 게임 서버의 경우**  
Amazon GameLift Servers가 서버 프로세스에 게임 세션을 시작하라는 메시지를 표시합니다. 생성할 게임 세션 유형을 설명하고 매치 데이터를 포함한 플레이어별 정보를 포함하는 [GameSession](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_GameSession.html) 객체를 제공합니다.

**다른 솔루션에서 호스팅되는 게임 서버의 경우**  
매치메이킹 요청을 성공적으로 이행한 후 Amazon GameLift Servers는 매치 결과가 포함된 이벤트를 내보냅니다. 이 데이터를 자체 호스팅 솔루션과 함께 사용하여 매치를 위한 게임 세션을 시작할 수 있습니다.



## 매치메이커 데이터 정보
<a name="match-server-data"></a>

매치 데이터에 포함되는 정보는 다음과 같습니다.
+ 고유한 매치 ID
+ 매치를 생성하는 데 사용된 매치메이킹 구성의 ID입니다.
+ 매치에 선택된 플레이어
+ 팀 이름 및 팀 할당
+ 매치를 구성하는 데 사용된 플레이어 속성 값입니다. 속성은 게임 세션 설정 방법을 지시하는 정보도 제공할 수 있습니다. 예를 들어 게임 서버는 플레이어 속성에 따라 플레이어에게 캐릭터를 할당하거나 모든 플레이어에게 공통적인 게임 맵 기본 설정을 선택할 수 있습니다. 또는 게임이 평균 플레이어 스킬 레벨을 기반으로 특정 기능 또는 수준을 잠금 해제할 수 있습니다.

매치 데이터에는 플레이어 지연 시간이 포함되지 않습니다. 매치 채우기에 필요한 경우처럼 현재 플레이어의 지연 시간 데이터가 필요한 경우 새로운 데이터를 가져오는 것이 좋습니다.

**참고**  
매치메이커 데이터는 전체 매치메이킹 구성 ARN을 지정하며, 이 ARN은 구성 이름, AWS 계정, 리전을 식별합니다. Amazon GameLift Servers로 호스팅하는 게임의 경우 매치 채우기를 사용하는 경우 구성 이름만 필요합니다. 구성 이름은 ‘:matchmakingconfiguration/’ 다음의 문자열입니다. 다음 예제에서 매치메이킹 구성 이름은 ‘MyMatchmakerConfig’입니다.

이 JSON 예제는 일반적인 매치메이커 데이터 세트를 보여줍니다. 두 명의 플레이어를 대상으로 하는 게임을 설명하며, 여기서 플레이어는 스킬 등급과 획득한 최고 레벨에 따라 매치됩니다.

```
{
	"matchId":"1111aaaa-22bb-33cc-44dd-5555eeee66ff",
	"matchmakingConfigurationArn":"arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig",
	"teams":[
	   {"name":"attacker",
		"players":[
           {"playerId":"4444dddd-55ee-66ff-77aa-8888bbbb99cc",
			"attributes":{
				"skills":{
					"attributeType":"STRING_DOUBLE_MAP",
					"valueAttribute":{"Body":10.0,"Mind":12.0,"Heart":15.0,"Soul":33.0}}
			}
		}]
	},{
		"name":"defender",
		"players":[{
			"playerId":"3333cccc-44dd-55ee-66ff-7777aaaa88bb",
			"attributes":{
				"skills":{
					"attributeType":"STRING_DOUBLE_MAP",
					"valueAttribute":{"Body":11.0,"Mind":12.0,"Heart":11.0,"Soul":40.0}}
			}
		}]
	}]
}
```

# FlexMatch용 게임 서버 설정
<a name="match-server-setup"></a>

Amazon GameLift Servers로 호스팅되는 게임 서버는 Amazon GameLift Servers 서버 SDK와 통합되어야 하며 [게임 서버에 Amazon GameLift Servers 추가](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html)에 설명된 대로 핵심 기능이 있어야 합니다. 이 기능을 사용하면 게임 서버가 Amazon GameLift Servers 호스팅 리소스에서 실행되고 Amazon GameLift Servers 서비스와 통신할 수 있습니다. 다음 지침에서는 FlexMatch 기능을 추가하기 위해 수행해야 하는 추가 작업에 대해 설명합니다.

**게임 서버에 FlexMatch를 추가하려면**

1. **게임 세션을 시작할 때 매치메이킹 데이터를 사용합니다.** 게임 서버는 `onStartGameSession()` 콜백 함수를 구현합니다. 매치를 생성한 후 Amazon GameLift Servers는 사용 가능한 게임 서버 프로세스를 찾고 이 함수를 호출하여 매치를 위한 게임 세션을 시작하라는 메시지를 표시합니다. 이 호출에는 게임 세션 객체([GameSession](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_GameSession.html))가 포함됩니다. 게임 서버는 매치메이커 데이터를 비롯한 게임 세션 정보를 사용하여 게임 세션을 시작합니다. 게임 세션을 시작하는 자세한 내용은 [게임 세션 시작](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-startsession) 섹션을 참조하세요. 매치메이커 데이터에 대한 자세한 내용은 [매치메이커 데이터 정보](match-server.md#match-server-data) 섹션을 참조하세요.

1. **플레이어 연결 처리.** 매칭된 게임에 연결할 때 게임 클라이언트는 플레이어 ID 및 플레이어 세션 ID를 참조합니다([새 플레이어 확인](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api.html#gamelift-sdk-server-validateplayer) 참조). 들어오는 플레이어를 매치메이커 데이터의 플레이어 정보과 연결하기 위해 플레이어 ID를 사용할 게임 서버를 설정합니다. 매치메이커 데이터는 플레이어의 팀 배정 및 게임에서 플레이어를 나타내는 데 필요한 기타 정보를 식별할 수 있습니다.

1. **플레이어가 게임을 중단할 때 보고합니다.** 게임 서버가 서버 SDK [RemovePlayerSession](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/integration-server-sdk5-cpp-actions.html#integration-server-sdk5-cpp-removeplayersession)을 호출하여 삭제된 플레이어를 보고하는지 확인합니다. 이 단계는 FlexMatch 채우기를 사용하여 기존 게임에서 빈 슬롯을 채우는 경우 특히 중요합니다. [FlexMatch를 사용하여 기존 게임 다시 채우기](match-backfill.md)에서 FlexMatch 채우기를 구현하는 방법에 대해 자세히 알아보세요.

1. **새 플레이어에게 기존 매치를 채우도록 요청합니다(선택 사항).** 라이브 매치를 채울 방법을 결정합니다. 매치메이커가 채우기 모드가 ‘수동’으로 설정된 경우 게임에 채우기 지원을 추가해야 할 수도 있습니다. 채우기 모드가 ‘자동’으로 설정된 경우 개별 게임 세션에 대해 채우기 모드를 해제하는 방법이 필요할 수 있습니다. 예를 들어 게임 세션이 게임의 특정 지점에 도달한 후 채우기를 중지하고 싶을 수도 있습니다. [FlexMatch를 사용하여 기존 게임 다시 채우기](match-backfill.md)에서 매치 채우기를 구현하는 방법에 대해 자세히 알아보세요.