게임 세션 대기열 설계 - 아마존 GameLift

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

게임 세션 대기열 설계

이 주제에서는 지연 시간을 최소화하면서 플레이어 경험을 제공하고 호스팅 리소스를 효율적으로 사용하는 대기열을 설계하는 방법에 대해 설명합니다. 게임 세션 대기열 및 작동 방식에 대한 자세한 내용은 게임 세션 배치에 대한 Amazon GameLift 대기열 설정 섹션을 참조하세요.

이러한 Amazon GameLift 기능에는 다음과 같은 대기열이 필요합니다.

대기열의 범위 정의

게임의 플레이어 모집단에는 함께 플레이해서는 안 되는 플레이어 그룹이 있을 수 있습니다. 예를 들어 두 가지 언어로 게임을 게시하는 경우 각 언어에 자체 게임 서버가 있어야 합니다.

플레이어 인구를 대상으로 게임 세션 배치를 설정하려면 각 플레이어 세그먼트에 대해 별도의 대기열을 생성합니다. 각 대기열의 범위를 지정하여 플레이어를 올바른 게임 서버에 배치합니다. 대기열의 범위를 지정하는 몇 가지 일반적인 방법은 다음과 같습니다.

  • 지리적 위치별. 여러 지역에 게임 서버를 배포할 때는 각 위치에 플레이어를 위한 대기열을 만들어 플레이어 지연 시간을 줄일 수 있습니다.

  • 빌드 또는 스크립트 변형별. 게임 서버의 변형이 두 개 이상이면 동일한 게임 세션에서 플레이할 수 없는 플레이어 그룹을 지원하는 것일 수 있습니다. 예를 들어 게임 서버 빌드나 스크립트는 다양한 언어 또는 디바이스 유형을 지원할 수 있습니다.

  • 이벤트 유형별. 토너먼트 또는 기타 특별 이벤트 참가자의 게임을 관리하기 위해 특별 대기열을 만들 수 있습니다.

플레이어 대기 정책 생성

배치 요청에 플레이어 지연 시간 데이터가 포함된 경우 알고리즘은 모든 플레이어의 평균 지연 시간이 가장 낮은 위치에서 게임 세션을 찾습니다. 평균 플레이어 지연 시간을 기준으로 게임 세션을 배치하면 Amazon GameLift에서 지연 시간이 긴 게임에 대부분의 플레이어를 배치하지 못합니다. 하지만 Amazon GameLift는 여전히 플레이어에게 극심한 지연 시간을 안겨줍니다. 이러한 플레이어를 수용하려면 플레이어 지연 시간 정책을 생성해야 합니다.

플레이어 지연 시간 정책을 통해 Amazon GameLift는 요청 대상 플레이어가 최대값을 초과하는 지연 시간을 경험할 수 있는 위치에 요청된 게임 세션을 배치하지 못하게 됩니다. 플레이어 지연 시간 정책은 Amazon GameLift가 게임 세션 요청을 지연 시간이 더 긴 플레이어와 매칭하지 못하게 할 수도 있습니다.

작은 정보

지연 시간 관련 규칙(예: 그룹 내 모든 플레이어에 대해 유사한 지연 시간을 요구하는 경우)을 관리하기 위해 Amazon GameLift FlexMatch를 사용하여 지연 시간 기반 매치메이킹 규칙을 생성할 수 있습니다.

제한 시간이 5분이고 플레이어 지연 시간 정책이 다음과 같은 대기열을 예로 들어 보겠습니다.

  1. 모든 플레이어 지연 시간이 50밀리초 미만인 위치를 검색하는 데 120초를 소요합니다.

  2. 모든 플레이어 지연 시간이 100밀리초 미만인 위치를 검색하는 데 120초를 소요합니다.

  3. 모든 플레이어 지연 시간이 200밀리초 미만인 위치를 검색하는 데 남은 대기열 제한 시간을 소요합니다.

앞서 설명한 대기열을 구성하는 콘솔의 예제 화면입니다.

다중 위치 대기열 빌드

모든 대기열에 다중 위치 설계를 사용하는 것이 좋습니다. 이 설계를 통해 배치 속도와 호스팅 복원성을 개선할 수 있습니다. 플레이어 지연 시간 데이터를 사용하여 플레이어를 지연 시간을 최소화하면서 게임 세션에 참여시키려면 다중 위치 설계가 필요합니다. 스팟 인스턴스 플릿을 사용하는 다중 위치 대기열을 구축하는 경우 자습서: 스팟 인스턴스용 게임 세션 대기열 설치의 지침을 따릅니다.

다중 위치 대기열을 생성하는 한 가지 방법은 대기열에 다중 위치 플릿을 추가하는 것입니다. 이렇게 하면 대기열에서 플릿의 어느 위치에나 게임 세션을 배치할 수 있습니다. 중복성을 위해 구성이나 홈 위치가 다른 플릿을 추가할 수도 있습니다. 다중 위치 스팟 인스턴스 플릿을 사용하는 경우 모범 사례를 따르고 동일한 위치의 온디맨드 인스턴스 플릿을 포함합니다.

다음 예는 기본 다중 위치 대기열을 설계하는 프로세스에 대해 간략하게 설명합니다. 이 예에서는 스팟 인스턴스 플릿 하나와 온디맨드 인스턴스 플릿 하나, 이렇게 두 플릿을 사용합니다. 각 플릿에는 다음 AWS 리전의 배치 위치가 있습니다. us-east-1, us-east-2, ca-central-1, us-west-2.

다중 위치 플릿이 포함된 기본 다중 위치 대기열을 생성하려면
  1. 대기열을 생성할 위치를 선택합니다. 클라이언트 서비스를 배포한 위치 근처에 대기열을 배치하여 요청 지연 시간을 최소화할 수 있습니다. 이 예제에서는 us-east-1에서 대기열을 만듭니다.

  2. 새 대기열을 생성하고 대기열 대상으로 다중 위치 플릿을 추가합니다. 대상 순서는 Amazon GameLift가 게임 세션을 배치하는 방법에 대해 결정합니다. 이 예에서는 스팟 인스턴스 플릿을 먼저 나열하고 온디맨드 인스턴스 플릿을 두 번째로 나열합니다.

  3. 대기열의 게임 세션 배치 우선 순위를 정의합니다. 이 순서는 대기열이 사용 가능한 게임 서버를 가장 먼저 검색하는 위치를 결정합니다. 이 예제에서는 기본 우선 순위 순서를 사용합니다.

  4. 위치 순서를 정의합니다. 위치 순서를 정의하지 않는 경우 Amazon GameLift는 위치를 알파벳 순서대로 사용합니다.

이전 절차에서 설명한 대로 대기열 배치 위치 및 대상을 구성하는 콘솔의 예제 화면입니다.
이전 절차에서 설명한 대로 게임 세션 배치 우선순위 및 위치 순서를 구성하는 콘솔의 예제 화면입니다.

게임 세션 배치 우선순위

Amazon GameLift는 FleetIQ 알고리즘을 사용하여 정렬된 기준 세트를 기반으로 새 게임 세션을 배치할 위치를 결정합니다. 기본 우선 순위 순서를 사용하거나 순서를 사용자 지정할 수 있습니다.

기본 우선 순위 순서

플레이어 지연 시간 데이터가 포함된 배치 요청의 경우 FleetIQ는 다음과 같은 기본 순서로 게임 세션 배치 기준의 우선 순위를 지정합니다.

  1. 지연 시간 - 요청에 포함된 모든 플레이어의 가장 짧은 평균 지연 시간입니다.

  2. 비용 - 다중 위치에서 지연 시간이 같을 경우 가장 저렴한 호스팅 비용입니다. 호스팅 비용은 주로 인스턴스 유형과 위치의 조합을 기준으로 합니다.

  3. 대상 - 다중 위치에서 지연 시간과 비용이 동일한 경우 대상 순서입니다. FleetIQ는 대기열 구성에 나열되는 순서에 따라 대상의 우선 순위를 지정합니다.

  4. 대상 - 다중 위치에서 지연 시간, 비용, 대상이 동일한 경우 위치 순서입니다. FleetIQ는 대기열 구성에 나열되는 순서에 따라 위치의 우선 순위를 지정합니다.

사용자 지정 우선 순위 순서

Amazon GameLift 콘솔에서 대기열의 우선 순위 순서를 사용자 지정하려면 우선 순위 값을 원하는 위치로 드래그합니다. AWS Command Line Interface(AWS CLI)를 사용하여 대기열의 우선 순위 순서를 사용자 지정하려면 create-game-session-queue 명령을 --priority-configuration 옵션과 함께 사용합니다. 이 명령을 사용하여 새 대기열을 만들거나 기존 대기열을 업데이트할 수 있습니다.

FleetIQ 알고리즘은 명시적으로 언급되지 않은 모든 기준을 기본 순서에 따라 목록 끝에 추가합니다. 우선 순위 구성에 위치 기준을 포함하는 경우 순서가 지정된 위치 목록도 제공해야 합니다.

필요에 따라 여러 대기열 설계

게임과 플레이어에 따라 게임 세션 대기열을 두 개 이상 만들어야 할 수도 있습니다. 게임 클라이언트 서비스가 새로운 게임 세션을 요청하면 어떤 게임 세션 대기열을 사용하는지 지정합니다. 대기열을 여러 개 사용할지 여부를 결정하는 데 도움이 되려면 다음을 고려합니다.

  • 게임 서버의 변형. 게임 서버의 각 변형에 대해 별도의 대기열을 만들 수 있습니다. 대기열에 있는 모든 플릿은 호환 가능한 게임 서버를 배포해야 합니다. 대기열을 사용하여 게임에 참가하는 플레이어는 해당 대기열의 모든 게임 서버에서 플레이할 수 있어야 하기 때문입니다.

  • 다양한 플레이어 그룹. Amazon GameLift가 플레이어 그룹을 기반으로 게임 세션을 배치하는 방법을 사용자 지정할 수 있습니다. 예를 들어 특별한 인스턴스 유형이나 런타임 구성이 필요한 특정 게임 모드에 맞게 사용자 지정된 대기열이 필요할 수 있습니다. 또는 토너먼트나 기타 이벤트의 배치를 관리하기 위한 특수 대기열을 원할 수도 있습니다.

  • 게임 세션 대기열 지표. 게임 세션 배치 지표를 수집하려는 방식에 따라 대기열을 설정할 수 있습니다. 자세한 내용은 Amazon GameLift 대기열 지표 섹션을 참조하세요.

대기열 지표 평가

자체 대기열이 잘 수행되고 있는지 지표를 통해 평가하십시오. Amazon GameLift 콘솔 또는 Amazon CloudWatch에서 대기열과 관련된 지표를 볼 수 있습니다. 대기열 지표의 목록 및 설명은 Amazon GameLift 대기열 지표 섹션을 참조하세요.

대기열 지표는 다음에 대한 인사이트를 제공할 수 있습니다.

  • 전체 대기열 성능 - 대기열 지표는 대기열이 배치 요청에 얼마나 성공적으로 응답하는지를 나타냅니다. 또한 이러한 지표는 배치가 실패하는 시기와 이유를 식별하는 데도 도움이 될 수 있습니다. 플릿을 수동으로 크기 조정한 대기열의 경우 AverageWaitTimeQueueDepth 지표를 통해 대기열 용량을 조정해야 하는 시기를 표시할 수 있습니다.

  • FleetIQ 알고리즘 성능 - FleetIQ 알고리즘을 사용하는 배치 요청의 경우, 지표는 알고리즘이 이상적인 게임 세션 배치를 찾는 빈도를 보여줍니다. 플레이어 지연 시간이 가장 짧은 리소스 또는 비용이 가장 저렴한 리소스를 우선적으로 사용하여 배치할 수 있습니다. Amazon GameLift가 이상적인 배치를 찾지 못하는 일반적인 이유를 식별하는 오류 지표도 있습니다. 지표에 대한 자세한 정보는 Amazon CloudWatch를 사용한 Amazon GameLift 모니터링 섹션을 참조하세요.

  • 위치 관련 배치 - 다중 위치 대기열의 경우 지표는 위치별 성공적인 배치를 보여줍니다. FleetIQ 알고리즘을 사용하는 대기열의 경우, 이 데이터는 플레이어 활동이 발생하는 곳에 대한 유용한 인사이트를 제공합니다.

FleetIQ 알고리즘 성능의 지표를 평가할 때는 다음 팁을 고려합니다.

  • 대기열이 이상적인 배치를 찾는 속도를 추적하려면 가장 짧은 지연 시간과 최저 비용을 위해 PlacementsSucceeded 지표를 FleetIQ 지표와 함께 사용합니다.

  • 대기열이 이상적인 배치를 찾는 속도를 높이려면 다음 오류 지표를 검토합니다.

    • FirstChoiceOutOfCapacity값이 높으면 대기열 플릿에 맞게 용량 크기를 조정합니다.

    • FirstChoiceNotViable 오류 지표가 높으면 스팟 인스턴스 플릿을 살펴봅니다. 특정 인스턴스 유형의 간섭 속도가 매우 높을 경우 스팟 인스턴스 플릿은 사용 가능하지 않은 상태로 여겨집니다. 이 문제를 해결하려면 대기열을 바꿔 다른 인스턴스 유형을 통해 스팟 인스턴스 플릿을 사용합니다. 위치마다 인스턴스 유형이 다른 스팟 인스턴스 플릿을 포함하는 것이 좋습니다.