Unity용 플러그인: 관리형 EC2플릿에 게임 배포 - Amazon GameLift

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

Unity용 플러그인: 관리형 EC2플릿에 게임 배포

이 워크플로에서는 플러그인을 사용하여 Amazon 에서 관리하는 클라우드 기반 컴퓨팅 리소스에서 호스팅할 게임을 준비합니다 GameLift. Amazon GameLift 기능에 대한 클라이언트 및 서버 게임 코드를 추가한 다음 호스팅을 위해 서버 빌드를 Amazon GameLift 서비스에 업로드합니다. 이 워크플로가 완료되면 클라우드에서 실행되는 게임 서버와 이에 연결할 수 있는 작동 중인 게임 클라이언트가 있게 됩니다.

Amazon GameLift 관리형 Amazon EC2 워크플로를 시작하려면:
  • Unity 편집기 기본 메뉴에서 Amazon GameLift을 선택하고 관리형 호스트를 EC2선택합니다. 이 워크플로는 게임 구성 요소를 통합, 빌드, 배포 및 시작하는 6단계 프로세스를 제공합니다.

프로필 설정

이 워크플로를 따를 때 사용할 프로필을 선택합니다. 선택한 프로필은 워크플로의 모든 단계에 영향을 줍니다. 생성하는 모든 리소스는 프로필의 AWS 계정과 연결되며 프로필의 기본 AWS 리전에 배치됩니다. 프로필 사용자의 권한에 따라 AWS 리소스 및 작업에 대한 액세스 권한이 결정됩니다.

  1. 사용 가능한 프로필 드롭다운 목록에서 프로필을 선택합니다. 아직 프로필이 없거나 새 프로필을 생성하려는 경우 Amazon GameLift 메뉴로 이동하여 AWS 계정 프로필 설정을 선택합니다.

  2. 부트스트랩 상태가 “활성”이 아닌 경우, 프로필 부트스트랩을 선택하고 상태가 “활성”으로 변경될 때까지 기다립니다.

Amazon과 게임 통합 GameLift

이 작업의 경우 게임 프로젝트의 클라이언트 및 서버 코드를 업데이트합니다.

  • 게임 서버는 Amazon GameLift 서비스와 통신하여 게임 세션을 시작하고, 게임 세션 연결 정보를 제공하고, 상태를 보고하는 프롬프트를 수신할 수 있어야 합니다.

  • 게임 클라이언트는 게임 세션에 대한 정보를 얻고, 게임 세션에 참여하거나 시작하고, 게임에 참여하려면 연결 정보를 얻을 수 있어야 합니다.

참고

샘플 게임을 가져온 경우 이 단계를 건너뛸 수 있습니다. 샘플 게임 자산에는 이미 필요한 서버 및 클라이언트 코드가 있습니다.

서버 코드 통합

사용자 지정 장면과 함께 자체 게임 프로젝트를 사용하는 경우 제공된 샘플 코드를 사용하여 게임 프로젝트에 필요한 서버 코드를 추가합니다. Anywhere 플릿을 사용하여 테스트할 게임 프로젝트를 통합한 경우 이 단계의 지침을 이미 완료했습니다.

  1. 게임 프로젝트 파일에서 Assets/Scripts/Server 폴더를 엽니다. 존재하지 않는 경우 생성합니다.

  2. GitHub 리포지토리 aws/amazon-gamelift-plugin-unity로 이동하여 경로 를 엽니다Samples~/SampleGame/Assets/Scripts/Server.

  3. 파일을 찾아 게임 프로젝트의 Server 폴더에 GameLiftServer.cs 복사합니다. 서버 실행 파일을 빌드할 때 이 파일을 빌드 대상으로 사용합니다.

샘플 코드에는 Amazon GameLift C# 서버SDK(버전 5)를 사용하는 다음과 같은 최소 필수 요소가 포함됩니다.

  • Amazon GameLift API 클라이언트를 초기화합니다. Amazon GameLift Anywhere 플릿에는 서버 파라미터가 있는 InitSDK() 호출이 필요합니다. 이러한 설정은 플러그인에서 사용하도록 자동으로 설정됩니다.

  • , 및 를 포함하여 Amazon GameLift 서비스의 요청에 응답하는 데 필요한 콜백 함수를 구현합니다OnStartGameSessionOnProcessTerminateonHealthCheck.

  • 서버 프로세스가 게임 세션을 호스팅할 준비가 되면 지정된 포트ProcessReady()가 있는 를 호출하여 Amazon GameLift 서비스에 알립니다.

샘플 서버 코드를 사용자 지정하려면 다음 리소스를 참조하세요.

클라이언트 코드 통합

클라우드 기반 게임 서버에 연결하는 게임 클라이언트의 경우 게임 클라이언트에서 직접 호출하는 대신 클라이언트 측 백엔드 서비스를 사용하여 Amazon GameLift 서비스에 직접 호출하는 것이 가장 좋습니다.

관리형 EC2플릿에서 호스팅하기 위한 플러그인 워크플로에서 각 배포 시나리오에는 다음 구성 요소를 포함하는 사전 구축된 백엔드 서비스가 포함됩니다.

  • 게임 세션을 요청하고 게임 세션 정보를 검색하는 데 사용되는 Lambda 함수 및 DynamoDB 테이블 세트입니다. 이러한 구성 요소는 API 게이트웨이를 프록시로 사용합니다.

  • 고유한 플레이어를 생성하고 플레이어 연결을 IDs 인증하는 Amazon Cognito 사용자 풀입니다.

이러한 구성 요소를 사용하려면 게임 클라이언트가 다음을 수행하기 위해 백엔드 서비스에 요청을 보내는 기능이 필요합니다.

  • AWS Cognito 사용자 풀에서 플레이어 사용자를 생성하고 인증합니다.

  • 게임 세션에 참여하고 연결 정보를 수신합니다.

  • 매치메이킹을 사용하여 게임에 참여하세요.

다음 리소스를 가이드로 사용합니다.

배포 시나리오 선택

이 단계에서는 지금 배포하려는 게임 호스팅 솔루션을 선택합니다. 어떤 시나리오로든 게임을 여러 번 배포할 수 있습니다.

  • 단일 리전 플릿: 활성 프로파일의 기본 AWS 리전에 있는 단일 호스팅 리소스 플릿에 게임 서버를 배포합니다. 이 시나리오는 AWS 및 서버 빌드 구성과의 서버 통합을 테스트하기 위한 좋은 출발점입니다. 다음과 같은 리소스를 배포합니다.

    • 게임 서버 빌드가 설치되어 실행 중인AWS 플릿(온디맨드).

    • 플레이어가 게임을 인증하고 시작할 수 있는 Amazon Cognito 사용자 풀 및 클라이언트.

    • API 사용자 풀을 와 연결하는 게이트웨이 권한 부여자입니다APIs.

    • API 게이트웨이ebACl 에 대한 과도한 플레이어 호출 제한을 위한 W입니다.

    • API 플레이어가 게임 슬롯을 요청할 수 있는 게이트웨이 + Lambda 함수입니다. 이 함수는 사용할 수 없는 경우 CreateGameSession()을 호출합니다.

    • API 플레이어가 게임 요청에 대한 연결 정보를 가져올 수 있는 게이트웨이 + Lambda 함수입니다.

  • FlexMatch 플릿: 게임 서버를 플릿 세트에 배포하고 플레이어 FlexMatch 매치를 생성하는 규칙을 사용하여 매치메이커를 설정합니다. 이 시나리오에서는 다중 플릿, 다중 위치 구조와 함께 저렴한 스팟 호스팅을 사용하여 내구성 있는 가용성을 제공합니다. 이 접근 방식은 호스팅 솔루션을 위한 매치메이커 구성 요소 설계를 시작할 준비가 되었을 때 유용합니다. 이 시나리오에서는 필요에 따라 나중에 사용자 지정할 수 있는 이 솔루션에 대한 기본 리소스를 생성합니다. 다음과 같은 리소스를 배포합니다.

    • FlexMatch 매치메이킹 구성 및 매치메이킹 규칙은 플레이어 요청 및 양식 매치를 수락하도록 설정됩니다.

    • 게임 서버 빌드가 여러 위치에 설치되어 실행 중인 AWS 플릿 3대. 백업용으로 스팟 플릿 2개와 온디맨드 플릿 1개가 포함됩니다.

    • AWS 게임 세션 배치 대기열은 (실행 가능성, 비용, 플레이어 지연 시간 등을) 기반으로 가능한 최상의 호스팅 리소스를 찾고 게임 세션을 시작하여 제안된 매치에 대한 요청을 충족시켜 줍니다.

    • 플레이어가 게임을 인증하고 시작할 수 있는 Amazon Cognito 사용자 풀 및 클라이언트.

    • API 사용자 풀을 와 연결하는 게이트웨이 권한 부여자입니다APIs.

    • API 게이트웨이ebACl 에 대한 과도한 플레이어 호출 제한을 위한 W입니다.

    • API 플레이어가 게임 슬롯을 요청할 수 있는 게이트웨이 + Lambda 함수입니다. StartMatchmaking() 함수를 호출합니다.

    • API 플레이어가 게임 요청에 대한 연결 정보를 가져올 수 있는 게이트웨이 + Lambda 함수입니다.

    • 플레이어용 매치메이킹 티켓과 게임 세션 정보를 저장하는 Amazon DynamoDB 테이블.

    • SNS GameSessionQueue 이벤트를 처리하기 위한 주제 + Lambda 함수.

게임 파라미터 설정

이 단계에서는 에 업로드하기 위한 게임을 설명합니다 AWS .

  • 게임 이름: 게임 프로젝트에 의미 있는 이름을 제공합니다. 이 이름은 플러그인 내에서 사용됩니다.

  • 플릿 이름: 관리형 EC2플릿에 의미 있는 이름을 제공합니다. Amazon은 콘솔에 리소스를 나열할 때 이 이름(플릿 ID와 함께)을 GameLift AWS 사용합니다.

  • 빌드 이름: 서버 빌드에 의미 있는 이름을 제공합니다. 이 이름을 AWS 사용하여 Amazon에 업로드 GameLift 되고 배포에 사용되는 서버 빌드의 사본을 참조합니다.

  • 시작 파라미터: 관리형 EC2플릿 인스턴스에서 서버 실행 파일을 시작할 때 실행할 선택적 지침을 입력합니다. 최대 길이는 1024자입니다.

  • 게임 서버 폴더: 서버 빌드가 포함된 로컬 폴더의 경로를 제공합니다.

  • 게임 서버 파일: 서버 실행 파일 이름을 지정합니다.

배포 시나리오

이 단계에서는 선택한 배포 시나리오에 따라 게임을 클라우드 호스팅 솔루션에 배포합니다. 이 프로세스는 서버 빌드를 검증하고, 호스팅 리소스를 프로비저닝하고, 게임 서버를 설치하고, 서버 프로세스를 시작하고, 게임 세션을 호스팅할 준비가 되는 동안 AWS 몇 분 정도 걸릴 수 있습니다.

배포를 시작하려면 배포를 CloudFormation 선택합니다. 여기에서 게임 호스팅 상태를 추적할 수 있습니다. 자세한 내용을 알아보려면 에 대한 AWS AWS 관리 콘솔에 로그인하고 이벤트 알림을 볼 수 있습니다. 플러그인의 활성 사용자 프로필과 동일한 계정, 사용자 및 AWS 리전을 사용하여 로그인해야 합니다.

배포가 완료되면 EC2 인스턴스에 게임 서버가 AWS 설치됩니다. 하나 이상의 서버 프로세스가 실행 중이며 게임 세션을 시작할 준비가 되었습니다.

게임 클라이언트 시작

플릿이 성공적으로 배포되면 이제 게임 서버를 실행하고 게임 세션을 호스팅할 수 있습니다. 이제 클라이언트를 빌드하고, 시작하고, 연결하여 게임 세션에 참여할 수 있습니다.

  1. 게임 클라이언트를 구성합니다. 이 단계에서는 플러그인에 게임 프로젝트의 GameLiftClientSettings 자산을 업데이트하라는 메시지를 표시합니다. 플러그인은 이 자산을 사용하여 게임 클라이언트가 Amazon GameLift 서비스에 연결하는 데 필요한 특정 정보를 저장합니다.

    1. 샘플 게임을 가져오고 초기화하지 않은 경우 새 GameLiftClientSettings 자산을 생성합니다. Unity 편집기 기본 메뉴에서 자산, 생성, GameLift, 클라이언트 설정 을 선택합니다. 프로젝트 GameLiftClientSettings 에서 의 사본을 여러 개 생성하면 플러그인이 이를 자동으로 감지하고 플러그인이 업데이트할 자산을 알려줍니다.

    2. 게임 시작에서 클라이언트 구성: 관리형 EC2 설정 적용을 선택합니다. 이 작업은 방금 배포한 관리형 EC2플릿을 사용하도록 게임 클라이언트 설정을 업데이트합니다.

  2. 게임 클라이언트를 빌드합니다. 표준 Unity 빌드 프로세스를 사용하여 클라이언트 실행 파일을 빌드합니다. 파일, 빌드 설정에서 플랫폼을 Windows, Mac, Linux로 전환합니다. 샘플 게임을 가져와 설정을 초기화하면 빌드 목록과 빌드 대상이 자동으로 업데이트됩니다.

  3. 새로 빌드된 게임 클라이언트 실행 파일을 시작합니다. 게임 플레이를 시작하려면 2~4개의 클라이언트 인스턴스를 시작하고 각각 UI를 사용하여 게임 세션에 참여하세요.

샘플 게임 클라이언트를 사용하는 경우 다음과 같은 특성이 있습니다.

  • 플레이어 로그인 구성 요소입니다. Anywhere 플릿의 게임 서버에 연결할 때는 플레이어 검증이 없습니다. 값을 입력하여 게임 세션에 참여할 수 있습니다.

  • 간단한 조인 게임 UI. 클라이언트가 게임에 참여하려고 하면 클라이언트는 사용 가능한 플레이어 슬롯이 있는 활성 게임 세션을 자동으로 찾습니다. 사용할 수 있는 게임 세션이 없는 경우 클라이언트는 새 게임 세션을 요청합니다. 게임 세션을 사용할 수 있는 경우 클라이언트는 사용 가능한 게임 세션에 참여하도록 요청합니다. 여러 동시 클라이언트로 게임을 테스트할 때 첫 번째 클라이언트는 게임 세션을 시작하고 나머지 클라이언트는 자동으로 기존 게임 세션에 참여합니다.

  • 플레이어 슬롯 4개가 있는 게임 세션. 최대 4개의 게임 클라이언트 인스턴스를 동시에 시작할 수 있으며 동일한 게임 세션에 참여합니다.