Unity용 플러그인: 관리형 EC2 플릿에 게임을 배포하세요 - 아마존 GameLift

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

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

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

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

프로필 설정

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

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

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

게임을 Amazon과 통합하세요 GameLift

이 작업을 수행하려면 게임 프로젝트의 클라이언트 및 서버 코드를 업데이트합니다.

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

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

참고

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

서버 코드 통합

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

  1. 게임 프로젝트 파일에서 Assets/Scripts/Server 폴더를 엽니다. 폴더가 없으면 새로 만드세요.

  2. aws/ GitHub amazon-gamelift-plugin-unity 저장소로 가서 경로를 여세요. Samples~/SampleGame/Assets/Scripts/Server

  3. 파일을 GameLiftServer.cs 찾아 게임 프로젝트의 폴더에 복사하세요. Server 서버 실행 파일을 빌드할 때는 이 파일을 빌드 타겟으로 사용하십시오.

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

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

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

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

샘플 서버 코드를 사용자 정의하려면 다음 리소스를 참조하십시오.

클라이언트 코드 통합

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

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

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

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

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

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

  • 게임 세션에 참여하고 연결 정보를 받으세요.

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

다음 리소스를 가이드로 활용하세요.

배포 시나리오 선택

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

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

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

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

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

    • API 게이트웨이에 대한 과도한 플레이어 호출을 제한하기 위한 WebACl.

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

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

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

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

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

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

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

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

    • API 게이트웨이에 대한 과도한 플레이어 호출을 제한하기 위한 WebACl.

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

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

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

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

게임 파라미터를 설정합니다.

이 단계에서는 업로드할 AWS 게임을 설명합니다.

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

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

  • 빌드 이름: 서버 빌드에 의미 있는 이름을 제공하십시오. AWS 는 GameLift Amazon에 업로드되어 배포에 사용되는 서버 빌드의 사본을 가리키기 위해 이 이름을 사용합니다.

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

  • 게임 서버 폴더: 서버 빌드가 들어 있는 로컬 폴더의 경로를 입력합니다.

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

배포 시나리오

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

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

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

게임 클라이언트 실행

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

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

    1. 샘플 게임을 임포트하여 초기화하지 않았다면 새 GameLiftClientSettings 에셋을 생성하십시오. Unity 에디터 메인 메뉴에서 에셋, 생성 GameLift, 클라이언트 설정을 선택합니다. 프로젝트에 복사본을 여러 개 생성하면 플러그인이 이를 자동으로 감지하여 플러그인이 업데이트할 에셋을 알려줍니다. GameLiftClientSettings

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

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

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

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

  • 플레이어 로그인 컴포넌트. Anywhere 플릿의 게임 서버에 연결할 때는 플레이어 검증이 이루어지지 않습니다. 아무 값이나 입력하여 게임 세션에 참여할 수 있습니다.

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

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