Amazon GameLift Servers를 사용한 호스팅 작동 방식 - Amazon GameLift Servers

Amazon GameLift Servers를 사용한 호스팅 작동 방식

Amazon GameLift Servers는 세션 기반 멀티플레이어 게임을 위한 저렴한 전용 서버, 인프라 프로비저닝, 규모 조정, 세션 관리를 제공하는 서비스입니다. 이 서비스는 게임에 맞게 사용자 지정하거나 자체 시스템과 협력하여 사용할 수 있는 유연한 도구와 기능을 제공합니다. Amazon GameLift Servers 관리형 호스팅을 활용하면 서버 작업을 관리하는 대신 게임 플레이 경험을 만드는 데 집중할 수 있습니다.

이 주제는 완전한 Amazon GameLift Servers 호스팅 솔루션의 핵심 구성 요소와 이러한 구성 요소가 함께 작동하여 플레이어에게 멀티플레이어 게임 세션을 공급하는 방법에 대해 알아봅니다.

게임 호스팅 솔루션의 핵심 구성 요소

완전한 Amazon GameLift Servers 호스팅 솔루션은 멀티플레이어 게임 경험을 제공하기 위해 함께 작동하는 몇 가지 필수 구성 요소로 구성됩니다. 이러한 구성 요소 중 일부는 사용자가 빌드하고 관리하는 반면, 구성 선택에 따라 Amazon GameLift Servers에서 제공하고 관리하는 구성 요소도 있습니다. 효과적인 게임 호스팅 솔루션을 개발하려면 이러한 구성 요소가 상호 작용하는 방식과 해당 역할을 이해하는 것이 중요합니다. 구성 요소에는 다음이 포함됩니다.

  • 게임 클라이언트는 플레이어 디바이스에서 실행됩니다.

  • 백엔드 서비스를 사용하면 게임 클라이언트가 Amazon GameLift Servers와 통신하여 게임 세션 정보를 얻고 게임에 참여할 수 있습니다.

  • 게임 서버 소프트웨어는 게임 호스팅 리소스에서 실행되며 플레이어 그룹을 위한 게임 세션을 호스팅합니다.

  • 배치 시스템은 게임 세션을 시작하고 플레이어를 게임과 일치시킵니다.

  • 게임 호스팅 플릿은 하나 이상의 지리적 위치에 게임 서버를 제공합니다.

  • 게임 호스팅 관리 시스템은 게임 호스팅 상태를 모니터링하고 용량을 관리합니다.

관리형 Amazon GameLift Servers를 사용한 게임 아키텍처.

게임 클라이언트

게임 클라이언트는 플레이어의 디바이스에서 실행되는 게임 소프트웨어입니다. 백엔드 서비스와 통신하여 게임 세션에 플레이어 배치를 시작하고 게임 서버에 직접 연결하여 게임 플레이에 참여합니다.

게임 호스팅을 위한 주요 기능
  • 백엔드 서비스에 조인 요청을 전송합니다. 조인 요청의 일부로 관련 플레이어 데이터 및 게임 세션 데이터를 포함합니다.

  • 게임 클라이언트의 지연 시간 데이터를 수집하고 해당 정보를 조인 요청에 포함합니다.

  • 백엔드 서비스에서 게임 세션 연결 정보를 수신하고 이를 사용하여 게임 서버에 연결합니다.

  • 플레이어 확인, Amazon GameLift Servers FlexMatch의 매치 수락, 세션 중단 또는 연결 해제와 같은 세션 연결 시나리오를 처리합니다.

빌드 대상

게임 클라이언트 소프트웨어에 게임 호스팅 기능을 추가하고 백엔드 서비스와의 통신을 설정합니다.

백엔드 서비스

백엔드 서비스는 게임 클라이언트와 Amazon GameLift Servers 서비스 간의 조정 계층입니다. 서비스와의 모든 통신을 제어하여 게임 세션 배치를 요청하고 게임 세션 및 플레이어 세션 정보를 검색합니다. 백엔드 서비스 사용은 게임 클라이언트를 대신하여 서비스와의 보안 통신을 유지하고 게임 클라이언트와 민감한 AWS 자격 증명 및 권한을 공유할 필요가 없는 모범 사례입니다.

백엔드 서비스는 게임 세션에 대한 플레이어 그룹화 전략을 구현합니다. 플레이어가 게임 세션에 참가하는 방식에는 상당한 유연성이 있습니다 플레이어를 위한 게임 세션 브라우저를 설정하거나 플레이어 정의 당사자를 지원할 수 있습니다. 아니면 게임 세션 요청이 들어올 때 풀링하고, 플레이어 그룹을 구성하고(사전 정렬 가능), 각 그룹에 대해 게임 세션을 시작할 수 있습니다. FlexMatch 매치메이킹을 사용하면 플레이어 매치를 구성하고 기존 매치를 채울 수 있습니다.

게임 호스팅을 위한 주요 기능
  • 게임 클라이언트의 통신을 인증합니다.

  • Amazon GameLift Servers에 새 게임 세션을 시작하거나, 게임 세션 정보를 가져오거나, 기존 게임 세션에 참여하도록 요청합니다. 필요에 따라 해당 요청에 관련 플레이어 세션 및 플레이어 데이터를 포함합니다.

  • 선택적으로 플레이어 세션에 대한 요청을 생성하여 게임 세션 가용성을 더 면밀히 모니터링할 수 있습니다. 플레이어 세션을 사용하여 게임 세션 슬롯을 예약하고, 플레이어가 연결될 때 플레이어를 검증하며, 플레이어 연결 해제를 추적할 수 있습니다.

  • 요청에 따라 게임 세션 연결 세부 정보 및 기타 정보를 사용하여 게임 클라이언트에 응답합니다.

빌드 대상

게임 요구 사항을 지원하고 플레이어가 게임에 참여하는 방식을 구현하기 위해 사용자가 관리하는 환경에서 백엔드 서비스를 빌드합니다. AWS SDK를 통합하여 Amazon GameLift Servers 서비스 API를 호출합니다. 선택적으로 AWS Lambda, Amazon Simple Storage Service(Amazon S3) 및 Amazon Cognito와 같은 서비스를 사용하여 AWS에서 백엔드 서비스를 구축합니다.

게임 서버

게임 서버는 게임 상태를 관리하고, 플레이어 작업을 처리하며, 연결된 여러 플레이어 간의 게임 플레이를 동기화해주는 사용자 지정 서버 소프트웨어입니다. 게임 서버는 Amazon GameLift Servers 서비스와의 통신을 유지하여 게임 세션 호스팅을 관리합니다.

게임 호스팅을 위한 주요 기능
  • Amazon GameLift Servers와 통신할 대상:

    • 보고서 상태(세션을 호스팅할 준비가 됨, 플레이어를 수락할 준비가 됨, 상태)입니다.

    • 서비스 호출(게임 세션 시작 또는 종료)합니다.

  • 게임 세션 수명 주기를 관리하여 프로세스당 한 번에 하나의 게임 세션을 호스팅합니다.

  • 추가 기능을 위해 다른 AWS 서비스와 조정합니다.

  • 선택적으로 새 플레이어 연결을 검증합니다.

빌드 대상

게임 서버 소프트웨어를 빌드합니다. Amazon GameLift Servers용 서버 SDK를 통합하고 기능을 추가하여 서비스와의 연결을 설정하고 게임 세션 관리를 지원합니다.

게임 호스팅 플릿

호스팅 플릿은 게임 서버를 실행하는 컴퓨팅 리소스 컬렉션입니다. 플릿 리소스를 여러 지리적 위치에 분산하여 플레이어가 어디에 있든 지연 시간이 짧은 게임 플레이를 제공할 수 있습니다. 각 플릿 리소스는 Amazon GameLift Servers와 직접 통신하는 하나 이상의 게임 서버 프로세스를 실행합니다. 각 게임 서버 프로세스는 한 번에 하나의 게임 세션을 호스팅할 수 있습니다.

플릿의 특성과 기능은 플릿의 호스팅 유형에 따라 다릅니다. 관리형 플릿은 AWS 클라우드에 리소스를 배포하고 Amazon GameLift Servers에서 관리합니다. Anywhere 플릿은 Amazon GameLift Servers 외부에서 관리되는 고객 제공 컴퓨팅 리소스입니다.

게임 호스팅을 위한 주요 기능
  • 게임 서버 호스팅 리소스를 프로비저닝합니다.

    • 관리형 플릿은 다양한 구성 설정으로 클라우드 기반 Amazon EC2 인스턴스를 배포합니다. 플릿 구성은 플릿에 있는 각 인스턴스의 컴퓨팅 성능, 인스턴스의 물리적 위치, 기타 세부 정보를 결정합니다. 관리형 플릿은 용량 조정에 대한 응답으로 EC2 인스턴스를 추가하거나 제거합니다.

    • 모든 플릿 배포는 자체 관리형입니다. 플릿은 물리적 하드웨어 또는 기타 클라우드 리소스로 구성되며 필요에 따라 구성할 수 있습니다.

  • 런타임 환경 및 게임 서버 소프트웨어를 설치합니다.

    • 관리형 Amazon EC2 Fleet 인스턴스는 게임 서버 빌드 및 호환되는 런타임 환경을 제공하는 Amazon Machine Image(AMI)와 함께 배포됩니다.

    • 관리형 컨테이너 플릿 인스턴스는 게임 서버 빌드 및 Docker 도구와 Amazon ECS 작업을 위한 다른 구성 요소들을 갖춘 컨테이너 최적화 AMI와 함께 배포됩니다

    • Anywhere 플릿은 선택한 게임 서버 소프트웨어 및 운영 체제와 함께 배포됩니다.

  • 게임 서버 프로세스 수명 주기를 관리합니다. 사전 구성된 런타임 지침을 적용하여 각 플릿 리소스에서 프로세스를 시작하고 중지합니다.

빌드 대상

이는 플릿의 호스팅 유형에 따라 다릅니다.

  • 관리형 Amazon EC2 플릿: 게임 서버 빌드를 Amazon GameLift Servers에 업로드하여 플릿 인스턴스에 배포하기 위해 저장합니다. Amazon GameLift Servers는 플릿의 AWS 클라우드 인프라를 제공합니다. 플릿을 구성하고 각 플릿 인스턴스에서 게임 서버를 실행하는 방법을 지시합니다.

  • 관리형 컨테이너 플릿: 게임 서버 빌드와 런타임 지침을 컨테이너 이미지로 패키징하여 배포를 위해 Amazon ECR에 저장합니다. Amazon GameLift Servers는 플릿의 AWS 클라우드 인프라를 제공합니다. 컨테이너 아키텍처를 제공하고 컨테이너를 호스팅하도록 플릿을 구성합니다.

  • Anywhere 플릿: 모든 인프라를 프로비저닝하고 서버 소프트웨어 배포를 관리합니다. Anywhere 플릿을 생성하여 활성 게임 호스팅 리소스를 Amazon GameLift Servers와 연결합니다.

게임 세션 배치 시스템

게임 세션 배치 시스템은 새 게임 세션을 호스팅할 수 있는 사용 가능한 게임 서버를 찾습니다. 시스템은 게임 서버 가용성에 대한 실시간 정보를 사용하여 최적의 배치 결정을 내립니다.

Amazon GameLift Servers에서 기본 게임 세션 배치 메커니즘은 대기열입니다. 게임 세션 대기열은 최상의 결과를 위해 게임 세션을 배치하도록 구성할 수 있는 알고리즘을 사용합니다. 호스팅 비용 및 플레이어 지연 시간 최소화와 같은 요인에 따라 배치의 우선순위를 정하고 여러 지리적 위치에서 검색하도록 대기열을 구성할 수 있습니다. 대기열 대신 게임 세션을 호스팅할 특정 플릿을 지정할 수 있습니다.

게임 호스팅을 위한 주요 기능
  • 백엔드 서비스에서 받은 게임 세션 배치 요청을 처리합니다.

  • 호스팅 리소스 가용성에 대한 실시간 정보를 기반으로 배치합니다.

  • 플레이어 지연 시간 데이터 및 기타 데이터를 사용하여 배치 옵션(대기열만 해당)의 우선 순위를 지정합니다.

  • 새 게임 세션을 시작하도록 게임 서버 프로세스를 유도합니다.

  • 게임 세션이 플레이어를 수락할 준비가 된 후 게임 세션 연결 정보를 업데이트합니다.

  • 선택적으로 FlexMatch 매치메이킹을 설정하여 플레이어 매치를 생성하고 매치에 대한 게임 세션 배치를 요청합니다.

빌드 대상

Amazon GameLift Servers는 배치 시스템을 제공합니다. 백엔드 서비스에서 배치 요청을 수행하는 방법과 선택적으로 게임 세션 대기열 및 FlexMatch 매치메이커를 설정하여 배치 동작을 구성합니다. Amazon GameLift Servers 콘솔, AWS SDK 또는 AWS CLI를 사용하여 게임에 대한 대기열 및 매치메이커를 생성하고 구성합니다.

게임 호스팅 관리 시스템

게임 호스팅 관리 시스템은 게임 호스팅 솔루션의 모든 측면을 조정하고 모니터링하는 운영 백본입니다. 이 시스템은 Amazon GameLift Servers의 배치 및 조정 기능을 가능하게 하는 인텔리전스와 자동화를 제공합니다.

게임 호스팅을 위한 주요 기능
  • 모든 플릿에서 게임 서버 프로세스, 게임 세션, 플레이어 세션의 실시간 상태 및 가용성을 추적하여 게임 세션 배치 및 자동 용량 조정을 지원합니다.

  • 플릿 상태 및 성능을 모니터링합니다.

  • 게임 호스팅 활동 지표를 수집하고 분석합니다.

  • 플레이어 수요 및 플릿 사용률에 따른 자동 조정을 포함한 용량 조정 도구를 제공합니다.

  • 게임 서버 소프트웨어 및 런타임 지침에 대한 업데이트를 관리합니다.

빌드 대상
  • 관리형 플릿: Amazon GameLift Servers는 가용성 추적, 게임 호스팅 활동과 하드웨어 성능에 대한 지표, 용량 조정 도구를 제공합니다. 사용 가능한 AWS 도구를 사용하여 게임 서버 소프트웨어 업데이트를 관리하고, 런타임 지침을 수정하며, 지표 사용(예: 모니터링을 위한 CloudWatch 설정)을 사용자 지정합니다. 사용자 지정 조정 정책을 구성하고 필요에 따라 수정합니다.

  • Anywhere 플릿: Amazon GameLift Servers는 가용성 추적 및 게임 호스팅 활동 지표를 제공합니다. 게임 서버 소프트웨어 업데이트 및 런타임 지침을 포함하여 플릿 구성 변경을 관리합니다. 플릿 성능을 모니터링하고 플릿 용량 조정을 관리하는 시스템을 생성합니다.

구성 요소가 함께 작동하는 방식

게임 호스팅 컴퓨팅이 배포된 경우
  • 게임 서버 소프트웨어 설치됨: 컴퓨팅이 런타임 환경 및 게임 서버 빌드와 함께 설치되었습니다.

  • 게임 서버 시작: 컴퓨팅에서 선택적 시작 파라미터와 함께 게임 서버 실행 파일의 인스턴스가 하나 이상 시작됩니다.

  • 게임 서버를 Amazon GameLift Servers에 연결: 게임 서버 프로세스는 시작 작업의 일부로 서버 SDK를 호출하여 서비스에 대한 연결을 초기화합니다.

  • 게임 서버가 게임 세션을 호스팅할 준비가 되었음을 보고: 게임 서버 프로세스는 시작 작업을 완료한 다음 서버 SDK를 호출하여 준비 상태를 보고합니다. 구성에 따라 상태 보고를 시작합니다.

  • Amazon GameLift Servers가 가용성 추적: 해당 서비스는 게임 세션 배치를 위한 게임 서버 프로세스의 가용성을 기록합니다. 또한 플릿, 인스턴스, 게임 세션에 대한 지표를 업데이트하여 사용량과 용량을 추적합니다.

  • 게임 서버가 게임 세션 할당 대기: 게임 서버 프로세스는 게임 세션을 시작하라는 프롬프트를 기다리는 동안 유휴 상태를 유지합니다.

플레이어가 게임에 참여하려는 경우
  • 플레이어가 게임 시작: 플레이어가 게임 클라이언트를 시작하고, 백엔드 서비스로 인증하며, 게임에 참여하도록 요청합니다.

  • 백엔드 서비스가 게임 세션 요청: 백엔드 서비스는 플레이어 그룹화 전략에 따라 적절한 게임 세션을 찾거나 생성하기 위해 Amazon GameLift Servers를 호출합니다. 요청에는 게임 세션에 사용할 플레이어 또는 게임 데이터가 포함될 수 있습니다.

  • Amazon GameLift Servers가 게임 세션 배치: 새 게임 세션을 시작할 때 배치 시스템은 세션을 호스팅할 최적의 위치를 식별하고 사용 가능한 게임 서버 프로세스를 선택합니다. 서비스는 선택한 프로세스에 새 게임 세션을 시작하라는 프롬프트를 표시하고 모든 플레이어 또는 게임 데이터를 전달합니다. FlexMatch 매치메이킹을 사용하는 경우 매치메이커는 먼저 매치를 생성한 다음 매치에 대한 배치를 요청합니다.

  • 게임 서버가 게임 세션 시작: 게임 서버가 게임 세션을 시작하는 단계를 시작합니다. 완료되면 플레이어 연결을 수락할 준비가 되었음을 Amazon GameLift Servers에 보고합니다.

  • 게임 클라이언트에 전달된 연결 정보: 게임 서버가 상태를 업데이트한 후 Amazon GameLift Servers는 게임 세션 연결 정보를 제공합니다. 백엔드 서비스는 이 정보를 수신하여 게임 클라이언트에 전달합니다.

  • 게임 클라이언트에 플레이어 연결: 게임 클라이언트는 연결 정보를 사용하여 게임 서버에 직접 연결하고 게임 플레이를 시작합니다.

  • Amazon GameLift Servers가 게임 세션 상태 모니터링: 게임 서버 프로세스는 상태, 선택적 플레이어 연결 상태, 게임 세션 상태를 보고하여 지속적인 게임 세션 가용성을 추적합니다.

  • 게임 서버 프로세스 종료: 게임 서버 프로세스가 게임 세션을 종료하고, 상태를 보고하며, 자체적으로 종료합니다.