Amazon GameLift Servers 관리형 컨테이너를 사용한 호스팅을 위한 개발 로드맵 - Amazon GameLift Servers

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

Amazon GameLift Servers 관리형 컨테이너를 사용한 호스팅을 위한 개발 로드맵

이 로드맵은 컨테이너화된 게임 서버를 위한 Amazon GameLift Servers 관리형 호스팅 솔루션을 개발하는 방법을 안내합니다. 관리형 컨테이너는에서 제공하는 하나의 호스팅 솔루션일 뿐입니다Amazon GameLift Servers. 호스팅 옵션에 대한 자세한 내용은 섹션을 참조하세요Amazon GameLift Servers 솔루션.

를 사용하는 관리형 컨테이너 솔루션Amazon GameLift Servers의 구성 요소는 다음과 같습니다.

  • 멀티플레이어 게임 호스팅에 최적화된 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 사용하는 하나 이상의 컨테이너 플릿입니다.

  • Amazon Elastic Container Registry(Amazon ECR) 프라이빗 리포지토리에 업로드된 게임 서버 빌드가 포함된 컨테이너 이미지입니다. 게임 서버 빌드는 용 서버 SDK와 통합Amazon GameLift Servers되며 Linux에서 실행되도록 빌드됩니다.

  • 게임 클라이언트를 대신하여 서비스와 상호 작용하는 백엔드 Amazon GameLift Servers 서비스입니다. 백엔드 서비스는 SDK의 일부Amazon GameLift Servers인 용 서비스 API의 AWS 기능을 사용합니다.

  • 새 Amazon GameLift Servers 게임 세션에 대한 요청을 처리하고, 모든 플릿에서 사용 가능한 게임 서버를 검색하고, 게임 서버에 게임 세션을 시작하라는 메시지를 표시하는 게임 세션 대기열입니다.

  • (선택 사항) 멀티플레이어 FlexMatch 매치를 생성하고 해당 매치에 대한 게임 세션을 설정하는 매치메이커입니다.

이 로드맵은 Amazon GameLift Servers 관리형 컨테이너를 사용하여 컨테이너화된 게임 서버를 성공적으로 설치하고 실행할 수 있는 간소화된 경로를 제공합니다. 필요한 구성 요소가 준비되면 게임 개발을 계속 반복하고 호스팅 솔루션을 사용자 지정할 수 있습니다. 출시일이 가까워지면 프로덕션 수준 사용을 위한 호스팅 솔루션을 준비하는 데 필요한 Amazon GameLift Servers 호스팅을 사용하여 시작을 위한 게임 준비 섹션을 참조하세요.

관리형 컨테이너를 위한 다음 도구를 사용하여 온보딩 속도를 높이세요.
  • 컨테이너 스타터 키트는 통합 및 플릿 설정을 간소화합니다. 게임 서버에 필수 게임 세션 관리 기능을 추가하고 사전 구성된 템플릿을 사용하여 게임 서버를 위한 컨테이너 플릿과 자동 배포 파이프라인을 빌드합니다. 배포 후 Amazon GameLift Servers 콘솔 및 API 도구를 사용하여 플릿 성능을 모니터링하고, 게임 세션을 관리하고, 지표를 분석합니다.

  • Unreal Engine 및 Unity 개발자의 경우 Amazon GameLift Servers 플러그인을 사용하여 게임 서버를 통합하고 게임 엔진의 개발 환경 내에서 컨테이너 플릿을 빌드합니다. 플러그인의 안내 워크플로를 사용하면 관리형 컨테이너를 사용한 클라우드 기반 호스팅으로 빠르고 간단한 솔루션을 만들 수 있습니다. 이 기반을 기반으로 게임에 대한 사용자 지정 호스팅 솔루션을 생성할 수 있습니다.

호스팅용으로 배포할 때 Amazon GameLift Servers 서비스와 통신할 수 있도록 게임 서버에 기능을 추가합니다.

  • 게임 프로젝트의 서버 SDK for Amazon GameLift Servers (버전 5.2 이상)를 가져옵니다. 서버 SDK는 C++, C# 및 Go로 지원됩니다. 용 서버 SDK를 다운로드합니다Amazon GameLift Servers. 서버 SDK는 C++, C# 및 Go에서 사용할 수 있습니다.

  • 게임 서버 코드를 수정하여 서버 SDK 기능을 추가합니다. 자세한 지침은 사용자 지정 게임 서버와 게임 통합을 참조하세요. 최소한 다음 작업을 수행해야 합니다.

    • 코드를 추가하여 Amazon GameLift Servers SDK를 초기화하고 Amazon GameLift Servers 서비스와 WebSocket 연결을 설정합니다. 서버 SDK 작업 InitSdk()을 사용합니다.

    • 서버 프로세스가 게임 세션을 호스팅할 준비가 되면 Amazon GameLift Servers 서비스에 보고할 코드를 추가합니다. 서버 SDK 작업 ProcessReady()을 사용합니다.

    • 필요한 콜백 함수 OnStartGameSession(), 및를 구현합니다OnProcessTerminate(). 이러한 함수를 사용하면 게임 서버 프로세스가 Amazon GameLift Servers 서비스와의 연결을 유지하고,에서 메시지가 표시되면 게임 세션을 시작하고Amazon GameLift Servers, 게임 서버 프로세스 종료 요청에 응답할 수 있습니다.

    • 서버 프로세스가 게임 세션을 종료할 때 Amazon GameLift Servers 서비스에 보고할 코드를 추가합니다. 서버 SDK 작업 ProcessEnding()을 사용합니다.

  • 게임 서버 빌드를 패키징합니다. Linux에서 실행할 게임 서버를 빌드합니다. 게임 서버를 실행하는 데 필요한 빌드 및 기타 파일을 준비합니다. Windows에서 개발하는 경우이 단계에서는 별도의 Linux 워크스페이스를 설정하거나 Linux용 Windows 하위 시스템(WSL)과 같은 도구를 사용할 수 있습니다. 게임 서버 빌드를 테스트하고 컨테이너 이미지를 빌드 및 테스트하려면 Linux 환경이 필요합니다.

  • 게임 서버 통합을 테스트합니다. 통합 게임 서버가 Amazon GameLift Servers 서비스에 연결하고 프롬프트에 응답할 수 있는지 확인합니다. 에 설명된 대로 로컬 워크스테이션을 테스트 호스트로 사용하여 간단한 Amazon GameLift ServersAnywhere 플릿을 설정하는 것이 좋습니다Amazon GameLift ServersAnywhere를 사용하여 로컬 테스트 설정. 게임 서버 빌드를 테스트 호스트에 설치하고 서버 프로세스를 시작합니다. AWS CLI를 사용하여 새 게임 세션을 요청하고 Amazon GameLift Servers 서비스가 서버 프로세스에 게임 세션을 시작하라는 메시지를 성공적으로 표시하는지 확인합니다.

게임 클라이언트가 게임 세션에 연결하도록 요청하고 연결 정보를 얻은 다음 호스팅된 게임 세션에 직접 연결할 수 있는 방법을 생성합니다. 가장 일반적인 접근 방식은 게임 클라이언트와 서비스 간의 미들맨 역할을 하는 백엔드 Amazon GameLift Servers 서비스 기능을 설정하는 것입니다. 이 접근 방식은 호스팅 리소스를 보호하고 플레이어가 게임 세션에 배치되는 방식을 더 잘 제어할 수 있도록 합니다.

  • 호스팅을 위한 백엔드 서비스 기능을 구축합니다. 백엔드 서비스는 Amazon GameLift Servers 서비스와 통신하고 연결 정보를 게임 클라이언트에 전달합니다. 이 기능에는 게임 세션 시작, 플레이어를 게임에 배치, 게임 세션 정보 검색이 포함됩니다. 자세한 지침은 사용자 지정 게임 서버와 게임 통합을 참조하세요. 최소한 다음 작업을 수행해야 합니다.

  • 플레이어가 호스팅된 게임 세션에 연결할 수 있도록 게임 클라이언트에 기능을 추가합니다. 게임 클라이언트는가 아닌 백엔드 서비스에 직접 요청합니다Amazon GameLift Servers. 백엔드 서비스가 게임 세션 연결 정보를 제공한 후 게임 클라이언트는 게임 세션과 직접 연결하여 게임을 플레이합니다.

  • 게임 클라이언트 통합을 테스트합니다. 테스트를 위해 기존 Amazon GameLift ServersAnywhere 플릿을 로컬 워크스테이션과 함께 사용할 수 있습니다. 새 백엔드 서비스를 사용하여 새 게임 세션을 요청하고 (1) Amazon GameLift Servers 서비스가 서버 프로세스에 게임 세션을 시작하라는 메시지를 성공적으로 표시하고 (2) 게임 클라이언트가 게임 세션에 연결할 수 있는지 확인합니다.

새 게임 세션에 대한 요청을 처리하고 호스팅Amazon GameLift Servers할 사용 가능한 게임 서버를 찾는 방법을 사용자 지정합니다.는 모든 플릿에서 모든 게임 서버의 가용성을 Amazon GameLift Servers 자동으로 추적합니다. 게임 클라이언트가 게임 세션에 참여하라는 요청을 보내면는 최소 지연 시간, 비용 및 가용성과 같은 정의된 우선 순위 집합을 기반으로 '가장 좋은' 배치를 Amazon GameLift Servers 찾습니다.

  • 사용 가능한 게임 서버가 있는 새 게임 세션을 배치하기 위한 게임 세션 대기열을 생성합니다. 대기열은 게임 세션 배치의 기본 메커니즘입니다. 자세한 지침은 게임 세션 대기열 생성을 참조하세요.

    • 최소한 Anywhere 플릿을 대기열의 대상으로 추가합니다. 다른 모든 설정은 선택 사항입니다.

  • 백엔드 서비스 코드에서 CreateGameSession() 호출을 StartGameSessionPlacement()로 변환합니다. 다중 위치 대기열에서 게임 세션 생성 페이지를 참조하세요.

  • 게임 세션에 연결할 준비가 되면 게임 클라이언트에 알리는 메커니즘을 생성합니다. 개발 중에에 대한 호출을 사용하여 게임 세션 상태를 폴링할 수 있습니다DescribeGameSessionPlacement. 그러나 대기열을 사용하여 대용량을 처리하기 전에 이벤트 알림을 활성화해야 합니다. 게임 세션 배치의 이벤트 알림 설정을(를) 참조하세요.

  • FlexMatch 매치메이킹을 추가합니다(선택 사항). 매치메이킹 규칙 세트를 빌드하고 게임 세션 대기열과 함께 작동하도록 매치메이킹 구성을 생성합니다. 매치메이킹 시스템 설정에 대한 지침은 Amazon GameLift ServersFlexMatch 개발자 안내서를 참조하세요.

  • 배치 시스템을 테스트합니다. 테스트를 위해 기존 Amazon GameLift ServersAnywhere 플릿을 로컬 워크스테이션과 함께 사용할 수 있습니다. 백엔드 서비스를 사용하여 새 게임 세션을 요청하고 Amazon GameLift Servers 서비스가 서버 프로세스에 게임 세션을 시작하라는 메시지를 성공적으로 표시하는지 확인합니다.

게임 서버를 성공적으로 통합한 후 게임 서버 실행 파일과 함께 컨테이너 이미지를 생성합니다. 에서 사용할 수 있도록 Amazon Elastic Container Registry(Amazon ECR) 리포지토리에 저장합니다Amazon GameLift Servers. 자세한 지침은 용 컨테이너 이미지 빌드 Amazon GameLift Servers 섹션을 참조하세요.

  • 게임 서버 컨테이너(에서 제공)에 대한 Dockerfile 템플릿을 가져옵니다Amazon GameLift Servers. 게임 서버 빌드 파일의 파일을 수정합니다.

  • 게임 서버 컨테이너 이미지를 빌드합니다. Linux 환경에서 작업할 때는 Docker 도구를 사용하여 이미지를 생성합니다.

  • 컨테이너 이미지를 Amazon ECR에 푸시합니다. 컨테이너 플릿을 배포하려는 동일한 AWS 계정 및 AWS 리전 를 사용하여 Amazon ECR에서 퍼블릭 또는 프라이빗 리포지토리를 생성합니다. 컨테이너 이미지를 푸시합니다.

  • Anywhere 플릿을 사용하여 컨테이너 이미지를 테스트합니다(선택 사항). 컨테이너 이미지를 클라우드 호스팅 컨테이너 플릿에 배포하기 전에 로컬에서 테스트할 수 있습니다. 테스트를 위해 기존 Amazon GameLift ServersAnywhere 플릿을 로컬 워크스테이션과 함께 사용할 수 있습니다. 게임 서버 컨테이너를 설치 및 실행하고 (1) Amazon GameLift Servers 서비스가 서버 프로세스에 게임 세션을 시작하라는 메시지를 성공적으로 표시하고 (2) 게임 클라이언트가 게임 세션에 연결할 수 있는지 확인합니다.

지금까지 자체 관리형 Anywhere 플릿을 사용하여 게임 구성 요소를 테스트하고 반복했습니다. 솔루션의 마지막 부분은 프로덕션 시스템에 필요한 클라우드 기반 호스팅 리소스를 설정하는 것입니다. 프로덕션을 위한 계획 및 구성을 시작하려면 Amazon GameLift Servers 관리형 컨테이너 플릿을 설정하고 프로덕션을 위해 사용자 지정해야 합니다.

  • 컨테이너 그룹 정의를 생성합니다. 컨테이너 그룹 정의는 플릿의 컨테이너 아키텍처를 설명합니다. 및는 배포할 컨테이너 이미지를 식별합니다. 컨테이너 플릿에 대한 Amazon GameLift Servers 컨테이너 그룹 정의 생성을(를) 참조하세요. 컨테이너 이미지가 저장 AWS 리전 되는 동일한에서 컨테이너 그룹 정의를 생성합니다. 플릿 위치 선택에 대한 자세한 내용은 플릿 위치 페이지를 참조하세요. 최소한 다음 작업을 수행해야 합니다.

    • 게임 서버 컨테이너 그룹 정의를 생성합니다.

    • 게임 서버 빌드와 함께 컨테이너 이미지가 포함된 컨테이너 정의를 추가합니다.

    • 컨테이너의 게임 서버 프로세스에 대한 포트 범위를 구성합니다.

  • 관리형 컨테이너 플릿을 생성합니다. 플릿을 생성하면는 호스팅을 위해 게임 서버 빌드 배포를 Amazon GameLift Servers 즉시 시작합니다. 관리형 플릿의 여러 부분을 구성할 수 있습니다. 자세한 지침은 Amazon GameLift Servers 관리형 컨테이너 플릿 생성을 참조하세요. 최소한 다음 작업을 수행해야 합니다.

    • 컨테이너 플릿에 대한 AWS Identity and Access Management (IAM) 서비스 역할을 설정합니다. 에 대한 IAM 서비스 역할 설정 Amazon GameLift Servers을(를) 참조하세요.

    • 플릿 인스턴스에 배포할 게임 서버 컨테이너 그룹 정의를 지정합니다.

    • 다른 모든 파라미터에 사용할 수 있는 경우 기본값을 사용합니다.는 최적의 구성을 위해 일부 파라미터를 Amazon GameLift Servers 계산합니다.

  • 컨테이너 플릿을 대기열에 추가합니다. 게임 세션 대기열에서 Anywhere 테스트 플릿을 관리형 컨테이너 플릿으로 바꿉니다.

  • 컨테이너 플릿으로 게임 호스팅을 테스트합니다. 이때 전체 솔루션을 테스트할 수 있어야 합니다. 게임 클라이언트를 시작하고 백엔드 서비스를 통해 게임 세션을 요청합니다. 연결 정보를 가져오고 컨테이너 플릿의 게임 세션에 연결합니다.

  • 플릿 배포를 반복합니다. 컨테이너 그룹 정의 및 플릿 구성을 업데이트한 다음 기존 플릿에 업데이트를 배포할 수 있습니다.

게임 출시를 준비할 때 관리형 호스팅 리소스를 미세 조정해야 합니다. 고려해야 할 몇 가지 결정 사항은 다음과 같습니다.