Amazon GameLift Anywhere를 사용하여 로컬 테스트 설정 - Amazon GameLift

Amazon GameLift Anywhere를 사용하여 로컬 테스트 설정

참고

이 주제에서는 Amazon GameLift 서버 SDK 버전 5.x와 통합된 게임에 대한 로컬 테스트를 다룹니다. 게임에서 서버 SDK 버전 4.x 이하를 사용하는 경우 Amazon GameLift Local을 사용하여 통합 테스트 페이지를 참조하세요.

Amazon GameLift Anywhere 플릿과 자체 하드웨어를 사용하여 시뮬레이션된 호스팅 환경에서 게임 구성 요소를 반복적으로 빌드하고 테스트합니다. Anywhere 플릿을 설정하고 로컬 디바이스를 등록하여 Amazon GameLift 서비스에 대한 연결을 설정합니다. 디바이스에 게임 서버 빌드를 설치하고, 게임 서버 프로세스를 시작하고, 필요에 따라 게임 기능을 테스트합니다. 게임 서버 빌드를 필요한 만큼 자주 업데이트하여 각 새 빌드 반복을 테스트할 수 있습니다.

Anywhere 플릿을 사용하면 AWS CLI 또는 테스트 스크립트를 사용하여 테스트할 수 있습니다. Amazon GameLift와 게임 클라이언트를 통합한 경우 동일한 로컬 디바이스 또는 다른 디바이스에서 클라이언트를 실행할 수 있습니다.

Anywhere 플릿을 사용한 로컬 테스트는 Amazon GameLift와의 게임 서버 통합을 테스트하는 데 특히 유용합니다. 로컬 시스템의 모든 호스팅 활동과 이벤트 및 로깅 데이터를 완벽하게 파악할 수 있습니다.

참고

Unreal Engine 또는 Unity에 Amazon GameLift 플러그인을 사용하고 있다면 이러한 도구에 Anywhere 플릿을 사용하여 로컬 테스트를 설정하기 위한 안내 워크플로가 포함됩니다. Unity용 플러그인: Amazon GameLift Anywhere를 사용하여 로컬 테스트 설정 또는 Unreal용 플러그인: Amazon GameLift Anywhere를 사용하여 로컬 테스트 설정에 대한 설명서를 따릅니다.

로컬 Anywhere 플릿 설정

다음 단계에 따라 로컬 워크스테이션에 대한 Anywhere 플릿을 생성합니다. AWS CLI 또는 Amazon GameLift용 AWS Management Console을 사용하는 자세한 지침은 Amazon GameLift Anywhere 플릿 생성 페이지를 참조하세요.

Anywhere 플릿 생성
  1. 로컬 워크스테이션에 대한 사용자 지정 위치를 생성합니다. (AWS CLI 또는 콘솔) 사용자 지정 위치는 Anywhere 플릿에 포함할 컴퓨팅 리소스의 레이블입니다. 사용자 지정 위치 이름은 custom-으로 시작해야 합니다. 예: custom-my_laptop. 사용자 지정 위치 생성 섹션을 참조하세요.

  2. Anywhere 플릿(AWS CLI 또는 콘솔)을 생성합니다. 이 단계에서는 로컬 워크스테이션의 사용자 지정 위치로 플릿 리소스를 생성합니다. Anywhere 플릿 생성 섹션을 참조하세요.

    새 플릿의 ID 또는 ARN 값을 기록해 둡니다. 다음 단계에서 이 값을 사용합니다.

  3. 로컬 워크스테이션을 플릿 컴퓨팅으로 등록합니다(AWS CLI만 해당). 게임 서버를 호스팅하려면 Anywhere 플릿에 컴퓨팅 리소스가 하나 이상 있어야 합니다. 플릿에 컴퓨팅 추가 섹션을 참조하세요. 플릿에 컴퓨팅을 추가하려면 다음 정보가 필요합니다.

    • 컴퓨팅 이름입니다. 플릿의 컴퓨팅마다 고유한 이름이 있어야 합니다.

    • Anywhere 플릿 식별자입니다. FleetID 또는 FleetArn를 사용할 수 있습니다.

    • 컴퓨팅의 연결 정보입니다. IpAddress 또는 DnsName를 지정합니다. Amazon GameLift와 게임 클라이언트가 게임 서버에 연결하는 방법입니다.

    • Anywhere 플릿의 사용자 지정 위치입니다.

    GameLiftServiceSdkEndpoint 반환 값을 기록해 둡니다. Anywhere 플릿에서 실행되도록 게임 서버를 업데이트할 때 이 값이 필요합니다.

게임 서버 업데이트 및 설치

이 작업은 게임 서버 빌드를 Amazon GameLift 서버 SDK 5.x와 이미 통합했다고 가정합니다. 통합 프로세스에는 Amazon GameLift 서비스와 상호 작용하여 게임 세션을 시작하고 관리할 수 있도록 게임 서버에 코드를 추가하는 작업이 포함됩니다.

Anywhere 플릿의 경우 특정 게임 서버 설정을 수동으로 구성해야 합니다. Amazon GameLift 관리형 플릿에서는 이러한 설정이 자동으로 구성됩니다.

Anywhere 플릿을 위한 게임 서버 준비
  1. 인증 토큰을 가져옵니다. 게임 서버가 인증 토큰을 사용하여 Amazon GameLift 서비스와의 모든 통신을 인증합니다. Amazon GameLift 인증 토큰은 수명이 짧으며 정기적으로 새로 고쳐야 합니다.

    가장 좋은 방법은 스크립트를 생성하여 다음 작업을 완료하는 것입니다.

    • AWS CLI 작업 get-compute-auth-token을 호출합니다.

    • 반환된 토큰 값을 로컬 컴퓨팅의 환경 변수에서와 같이 게임 서버 프로세스가 검색할 수 있는 위치에 저장합니다.

    컴퓨팅에 게임 서버와 함께 스크립트를 설치합니다. 첫 번째 게임 서버 프로세스를 시작하기 전에 실행되도록 스크립트를 설정합니다. 게임 서버 프로세스가 활성 상태인 동안 스크립트를 정기적으로 실행하여 유효한 인증 토큰을 유지합니다. 컴퓨팅의 모든 게임 서버 프로세스는 동일한 인증 토큰을 사용할 수 있습니다.

  2. Amazon GameLift 게임 서버 코드를 업데이트합니다. 게임 서버 코드를 Amazon GameLift 서버 SDK와 통합할 때 InitSdk() 작업에 호출을 추가했습니다. 게임 서버가 Anywhere 플릿에서 실행되는 경우 이 호출에는 추가 서버 파라미터가 필요합니다. 자세한 내용은 서버 프로세스 초기화Amazon GameLift 서버 SDK 5.x에서 개발 언어를 참조하세요. 서버 파라미터는 다음과 같습니다.

    • webSocketUrl - 플릿에 컴퓨팅을 등록할 때 반환되는 GameLiftServiceSdkEndpoint 값으로 이 파라미터를 설정합니다.

    • hostId - Anywhere 플릿에 컴퓨팅을 등록할 때 지정한 컴퓨팅 이름으로 이 파라미터를 설정합니다.

    • fleetId - Anywhere 플릿의 ID로 이 파라미터를 설정합니다.

    • authToken - 컴퓨팅에 대한 인증 토큰을 검색하라는 요청에 응답하여 반환되는 토큰으로 이 파라미터를 설정합니다.

    • processId - 로컬 컴퓨팅에서 실행 중인 게임 서버 프로세스를 식별하려면 이 파라미터를 설정합니다. 각 동시 게임 서버 프로세스에는 고유한 프로세스 ID가 있어야 합니다.

    각 게임 서버 프로세스에서 사용하는 서버 파라미터 값은 프로세스가 실행 중인 Anywhere 플릿 컴퓨팅 전용이어야 합니다. 컴퓨팅에 적합한 값을 가져오는 방법에 대한 자세한 내용은 플릿에 컴퓨팅 추가 페이지를 참조하세요. 가장 좋은 방법은 webSocketUrl, hostId, fleetId, authToken을 로컬 컴퓨팅의 환경 변수로 설정하는 것입니다. 컴퓨팅에서 실행되는 모든 서버 프로세스는 이러한 값을 사용합니다.

  3. 로컬 컴퓨팅에 게임 서버 빌드를 설치합니다. 게임 서버를 실행하는 데 필요한 모든 종속 항목을 포함합니다.

  4. 로컬 컴퓨팅에서 실행되는 하나 이상의 게임 서버 프로세스를 시작합니다. 게임 서버 프로세스가 서버 SDK 작업 ProcessReady()를 호출하면 프로세스가 게임 세션을 호스팅할 준비가 된 것입니다.

게임 세션 활동 테스트

게임 세션을 사용하여 게임 서버 통합을 테스트합니다. Amazon GameLift 기능과 통합된 게임 클라이언트가 없는 경우 AWS CLI를 사용하여 게임 세션을 시작할 수 있습니다. 다음 시나리오를 사용해볼 수 있습니다.

  • 게임 세션을 생성합니다. create-game-session 명령(또는 CreateGameSession API 작업)을 호출합니다. Anywhere 플릿의 ID와 사용자 지정 위치를 지정합니다. 이 호출은 새 게임 세션의 고유 식별자를 반환합니다.

  • 게임 세션 상태를 확인합니다. describe-game-sessions 명령(또는 DescribeGameSessions API 작업)을 호출합니다. 게임 세션 ID를 지정합니다. 이 호출은 게임 세션 상태를 포함한 자세한 게임 세션 정보를 반환합니다. 활성 상태의 게임 세션이 플레이어를 연결할 준비가 됩니다. 플릿의 모든 게임 세션 목록을 가져오려면 list-game-sessions 명령(또는 ListGameSessions API 작업)을 호출합니다.

  • 게임 세션에 연결합니다. 게임 클라이언트가 게임 세션에 연결할 수 있는 경우 게임 세션 정보에 포함된 연결 정보를 사용합니다.

게임 서버의 반복

동일한 Anywhere 플릿과 컴퓨팅을 사용하여 게임 서버 빌드의 다른 버전을 테스트할 수 있습니다.

  1. 기존 GameSession을 정리합니다. 게임 서버 프로세스가 충돌하거나 ProcessEnding()을 호출하지 않는 경우, Amazon GameLift는 게임 서버의 상태 확인 전송을 중단한 후 GameSession을 정리합니다.

  2. 새 게임 서버 빌드를 생성합니다. 게임 서버를 변경하고 수정된 빌드를 패키징합니다.

  3. 로컬 컴퓨팅에서 게임 서버 빌드를 업데이트합니다. 이전 Anywhere 플릿은 활성 상태이고 랩톱은 플릿의 컴퓨팅 리소스로 등록되어 있습니다.

  4. 업데이트된 권한 부여 토큰을 가져옵니다. get-compute-auth-token CLI 명령을 호출하고 토큰을 로컬 컴퓨팅에 저장합니다.

  5. 로컬 컴퓨팅에서 실행되는 하나 이상의 게임 서버 프로세스를 시작합니다. 게임 서버 프로세스가 ProcessReady()를 호출하면 테스트에 사용할 준비가 된 것입니다.

게임을 Amazon GameLift 관리형 플릿으로 전환

개발 테스트를 완료하고 시작할 준비가 되면 Amazon GameLift 관리형 플릿으로 전환할 수 있는 좋은 시점입니다. 관리형 플릿을 사용하여 게임 호스팅 리소스를 미세 조정하고 테스트합니다. 게임 세션 배치 솔루션(대기열 및 매치메이커)을 구현하고, 최적의 호스팅 하드웨어(스팟 플릿 포함) 및 위치를 선택하고, 용량 조정 전략을 선택합니다. AWS CloudFormation을 사용하여 플릿, 대기열, 매치메이커를 포함한 모든 게임 호스팅 리소스의 수명 주기를 더 효율적으로 관리할 수도 있습니다.

로컬 Anywhere 테스트 플릿에서 Amazon GameLift 관리형 플릿으로 전환하려면 간단하게 몇 가지를 수정해야 합니다. 동일한 대기열과 매치메이커를 재사용할 수 있습니다. 다음 작업을 수행합니다.

  • 게임 서버 코드 호출을 InitSdk()로 변경합니다. 서버 파라미터를 제거합니다. 관리형 플릿의 경우 Amazon GameLift는 이 정보를 자동으로 추적합니다.

  • Amazon GameLift 빌드 리소스를 생성합니다. Anywhere 테스트 플릿을 사용하면 게임 서버 빌드와 종속 항목을 각 플릿 컴퓨팅에 수동으로 배포해야 합니다. 관리형 플릿을 사용하여 게임 빌드 패키지를 생성한 후 Amazon GameLift 에 업로드하고 모든 플릿 컴퓨팅에 자동으로 배포합니다. 게임 빌드 파일을 패키징하고 Amazon S3 버킷의 파일을 사용하여 빌드 리소스를 생성하는 방법에 대한 자세한 내용은 Amazon GameLift 호스팅을 위한 사용자 지정 서버 빌드 배포 페이지를 참조하세요. Amazon GameLift는 관리형 플릿으로 이러한 작업을 자동으로 처리하기 때문에 컴퓨팅을 등록하고 인증 토큰을 가져오는 스크립트는 포함하지 마세요.

  • 관리형 플릿을 생성합니다. 콘솔 또는 AWS CLI를 사용하여 플릿을 생성하고 EC2 관리형 플릿을 지정합니다. 이 유형의 플릿에는 빌드 리소스 및 인스턴스 유형 지정을 포함하여 추가 구성 설정이 필요합니다. 동일한 런타임 구성을 사용하여 각 플릿 컴퓨팅에서 게임 서버 수명 주기를 관리할 수 있도록 런타임 구성도 필요합니다. 관리형 플릿 생성에 대한 자세한 내용은 Amazon GameLift 관리형 EC2 플릿 생성 페이지를 참조하세요.

  • 플릿 별칭을 리디렉션합니다(선택 사항). Anywhere 플릿에 사용할 별칭을 설정한 경우 관리형 플릿에 동일한 별칭을 재사용할 수 있습니다. 별칭 생성 또는 업데이트에 대한 자세한 내용은 Amazon GameLift 별칭 생성 페이지를 참조하세요.