

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

# Unity용 플러그인: Amazon GameLift Servers Anywhere를 사용하여 로컬 테스트 설정
<a name="unity-plug-in-anywhere"></a>

이 워크플로에서는 Amazon GameLift Servers 기능을 위한 클라이언트 및 서버 게임 코드를 추가하고 플러그인을 사용하여 로컬 워크스테이션을 테스트 게임 서버 호스트로 지정합니다. 통합 작업을 완료하면 플러그인을 사용하여 게임 클라이언트 및 서버 구성 요소를 빌드합니다.

**Amazon GameLift Servers Anywhere 워크플로를 시작하려면:**
+ Unity 편집기 기본 도구 모음에서 **Amazon GameLift Servers** > **Anywhere와 호스트**를 선택합니다. 이 작업을 수행하면 @Anywhere 플릿으로 게임을 설정할 수 있는 플러그인 페이지가 열립니다. 이 페이지에는 게임 구성 요소를 통합, 빌드 및 시작하는 5단계 프로세스가 나와 있습니다.

## 프로필 설정
<a name="unity-plug-in-anywhere-profile"></a>

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

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

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

## C\# 서버 SDK를 게임 코드에 통합
<a name="unity-plug-in-anywhere-integrate"></a>

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

워크플로의 이 단계에서는 게임 프로젝트의 클라이언트 및 서버 코드를 업데이트합니다.
+ 게임 서버는 Amazon GameLift Servers 서비스와 통신하여 게임 세션을 시작하고, 게임 세션 연결 정보를 제공하고, 상태를 보고하라는 프롬프트를 받을 수 있어야 합니다.
+ 게임 클라이언트는 게임 세션에 대한 정보를 얻고, 게임 세션에 연결하거나 시작하고, 게임에 연결하기 위한 연결 정보를 얻을 수 있어야 합니다.

### 서버 코드 통합
<a name="unity-plug-in-anywhere-integrate-server"></a>

사용자 지정 씬에서 자체 게임 프로젝트를 사용하는 경우 제공된 샘플 코드를 사용하여 게임 프로젝트에 필요한 서버 코드를 추가합니다.

1. 게임 프로젝트 파일에서 `Assets/Scripts/Server` 폴더를 엽니다. 파일이 없으면 새로 생성합니다.

1. GitHub 리포지토리 [aws/amazon-gamelift-plugin-unity](https://github.com/aws/amazon-gamelift-plugin-unity)로 이동하여 `Samples~/SampleGame/Assets/Scripts/Server` 경로를 엽니다.

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

샘플 코드에는 Amazon GameLift Servers C\# 서버 SDK(버전 5)를 사용하는 다음과 같은 최소 필수 요소가 포함됩니다.
+ Amazon GameLift Servers API 클라이언트를 초기화합니다. Amazon GameLift Servers Anywhere 플릿에는 서버 파라미터를 사용한 `InitSDK()` 호출이 필요합니다. 이러한 설정은 플러그인에서 사용하도록 자동으로 설정됩니다.
+ `OnStartGameSession`, `OnProcessTerminate`, `onHealthCheck`를 포함한 Amazon GameLift Servers 서비스의 요청에 응답하는 필수 콜백 함수를 구현합니다.
+ 지정된 포트와 함께 `ProcessReady()`를 호출하여 서버 프로세스가 게임 세션을 호스팅할 준비가 되면 Amazon GameLift Servers 서비스에 알립니다.

샘플 서버 코드를 사용자 지정하려면 다음 리소스를 참조하세요.
+ [서버 SDK를 사용하여 게임 서버에 Amazon GameLift Servers를 추가합니다.](gamelift-sdk-server-api.md)
+ [Amazon GameLift Servers용 C\# 서버 SDK 5.x - 작업](integration-server-sdk5-csharp-actions.md)

### 클라이언트 코드 통합
<a name="unity-plug-in-anywhere-integrate-client"></a>

사용자 지정 씬과 함께 자체 게임 프로젝트를 사용하는 경우 기본 기능을 게임 클라이언트에 통합해야 합니다. 또한 플레이어가 게임 세션에 로그인하고 연결할 수 있도록 UI 요소를 추가해야 합니다. Amazon GameLift Servers ( AWS SDK에서)용 서비스 API를 사용하여 게임 세션 정보를 가져오거나, 새 게임 세션을 생성하거나, 기존 게임 세션에 참여합니다.

Anywhere 플릿을 사용하여 로컬 테스트를 위한 클라이언트를 구축할 때 Amazon GameLift Servers 서비스에 직접 호출을 추가할 수 있습니다. 클라우드 호스팅을 위한 게임을 개발할 때 또는 프로덕션 호스팅을 위해 Anywhere 플릿을 사용할 계획인 경우 게임 클라이언트와 Amazon GameLift Servers 서비스 간의 모든 통신을 처리하기 위해 클라이언트 측 백엔드 서비스를 생성해야 합니다.

Amazon GameLift Servers를 클라이언트 코드에 통합하려면 다음 리소스를 가이드로 사용하세요.
+ GitHub 리포지토리 aws/amazon-gamelift-plugin-unity에서 클라이언트를 GameLiftCoreApi 클래스와 통합합니다. 이 클래스는 플레이어 인증 및 게임 세션 정보 검색에 대한 제어를 제공합니다.
+ GitHub 리포지토리 aws/amazon-gamelift-plugin-unity, `Samples~/SampleGame/Assets/Scripts/Client/GameLiftClient.cs`에서 사용할 수 있는 샘플 게임 통합을 봅니다.
+ Unity 게임 클라이언트에 Amazon GameLift Servers 추가의 지침을 따릅니다.

Anywhere 플릿에 연결하는 게임 클라이언트의 경우 게임 클라이언트에 다음 정보가 필요합니다. 플러그인은 플러그인에서 생성한 리소스를 사용하도록 게임 프로젝트를 자동으로 업데이트합니다.
+ FleetId - Anywhere 플릿의 고유 식별자입니다.
+ FleetLocation - Anywhere 플릿의 사용자 지정 위치입니다.
+ AwsRegion - Anywhere 플릿이 호스팅되는 AWS 리전입니다. 사용자 프로필에 설정한 리전입니다.
+ ProfileName - 용 AWS SDK에 대한 액세스를 허용하는 로컬 시스템의 AWS 자격 증명 프로파일Amazon GameLift Servers입니다. 게임 클라이언트는 이러한 자격 증명을 사용하여 Amazon GameLift Servers 서비스에 대한 요청을 인증합니다.

**참고**  
자격 증명 프로필은 플러그인에서 생성되어 로컬 시스템에 저장됩니다. 따라서 로컬 시스템(또는 프로필이 동일한 시스템)에서 클라이언트를 실행해야 합니다.

## Anywhere 플릿 연결
<a name="unity-plug-in-anywhere-fleet"></a>

이 단계에서는 사용할 Anywhere 플릿을 지정합니다. Anywhere 플릿은 게임 서버 호스팅을 위해 어디에서나 배치할 수 있는 컴퓨팅 리소스 모음을 정의합니다.
+ 현재 사용 중인 AWS 계정에 기존 Anywhere 플릿이 있는 경우 **플릿 이름** 드롭다운 필드를 열고 플릿을 선택합니다. 이 드롭다운에는 현재 활성 사용자 프로필에 대한 AWS 리전의 Anywhere 플릿만 표시됩니다.
+ 기존 플릿이 없거나 새 플릿을 생성하려는 경우 **새 Anywhere 플릿 생성**을 선택하고 플릿 이름을 입력합니다.

프로젝트에 Anywhere 플릿을 선택하면 Amazon GameLift Servers는 플릿 상태가 활성 상태인지 확인하고 플릿 ID를 표시합니다. Unity 편집기의 출력 로그에서 이 요청의 진행 상황을 추적할 수 있습니다.

## 컴퓨팅 등록
<a name="unity-plug-in-anywhere-register"></a>

이 단계에서는 로컬 워크스테이션을 새로운 Anywhere 플릿의 컴퓨팅 리소스로 등록합니다.

1. 로컬 시스템의 컴퓨팅 이름을 입력합니다. 플릿에 두 개 이상의 컴퓨팅을 추가하는 경우 이름은 고유해야 합니다.

1. **컴퓨팅 등록**을 선택합니다. Unity 편집기의 출력 로그에서 이 요청의 진행 상황을 추적할 수 있습니다.

플러그인이 IP 주소가 localhost(127.0.0.1)로 설정된 로컬 워크스테이션을 등록합니다. 이 설정은 동일한 시스템에서 게임 클라이언트와 서버를 실행한다고 가정합니다.

이 작업에 대한 응답으로 Amazon GameLift Servers는 컴퓨팅에 연결할 수 있는지 확인하고 새로 등록된 컴퓨팅에 대한 정보를 반환합니다.

## 게임 시작
<a name="unity-plug-in-anywhere-launch"></a>

이 단계에서는 게임 구성 요소를 빌드하고 시작하여 게임을 플레이합니다. 다음 단계를 완료합니다.

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

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

   1. **게임 시작**에서 **클라이언트 구성: Anywhere 설정 적용**을 선택합니다. 이 작업은 방금 설정한 Anywhere 플릿을 사용하도록 게임 클라이언트 설정을 업데이트합니다.

1. 게임 클라이언트를 빌드하고 실행합니다.

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

   1. 새로 빌드된 게임 클라이언트 실행 파일의 인스턴스를 하나 이상 시작합니다.

1. Anywhere 플릿에서 게임 서버를 시작합니다. Editor에서 **서버: 서버 시작**을 선택합니다. 이 작업은 Unity 편집기가 열려 있는 한 클라이언트가 연결할 수 있는 라이브 서버를 시작합니다.

1. 게임 세션을 시작하거나 연결합니다. 게임 클라이언트 인스턴스에서 UI를 사용하여 각 클라이언트가 게임 세션에 연결합니다. 클라이언트에 기능을 추가한 방법에 따라 작동 방식은 달라집니다.

샘플 게임 클라이언트를 사용하는 경우 다음과 같은 특성이 있습니다.
+ 플레이어 로그인 구성 요소 Anywhere 플릿의 게임 서버에 연결할 때는 플레이어 검증이 없습니다. 아무 값이나 입력하여 게임 세션에 연결할 수 있습니다.
+ 간단한 게임 연결 UI 클라이언트가 게임에 연결하려고 하면 클라이언트가 사용 가능한 플레이어 슬롯이 있는 활성 게임 세션을 자동으로 찾습니다. 게임 세션을 사용할 수 없는 경우 클라이언트가 새 게임 세션을 요청합니다. 게임 세션을 사용할 수 있는 경우 클라이언트가 사용 가능한 게임 세션에 연결하도록 요청합니다. 동시에 여러 클라이언트로 게임을 테스트할 때 첫 번째 클라이언트는 게임 세션을 시작하고 나머지 클라이언트는 자동으로 기존 게임 세션에 연결합니다.
+ 플레이어 슬롯 4개가 있는 게임 세션 최대 4개의 게임 클라이언트 인스턴스를 동시에 시작할 수 있으며 동일한 게임 세션에 연결합니다.

**서버 실행 파일에서 시작(선택 사항)**

Anywhere 플릿에서 테스트할 게임 서버 실행 파일을 빌드하고 시작할 수 있습니다.

1. 표준 Unity 빌드 프로세스를 사용하여 서버 실행 파일을 빌드합니다. **파일, 빌드 설정**에서 플랫폼을 **전용 서버**로 전환하고 빌드합니다.

1. Anywhere 플릿 ID 및 AWS 리전을 사용하여 AWS CLI 명령 [get-compute-auth-token](https://docs.aws.amazon.com/cli/latest/reference/gamelift/get-compute-auth-token.html)을 호출하여 단기 인증 토큰을 가져옵니다. 플릿을 생성할 때 플릿 ID가 **Connect to a Anywhere Fleet**에 표시됩니다. 활성 프로필을 선택하면 AWS 리전이 프로필 설정에 표시됩니다. **** 

   ```
   aws gamelift get-compute-auth-token --fleet-id [your anywhere fleet ID] --region [your AWS region]
   ```

1. 명령줄에서 새로 빌드된 게임 서버 실행 파일을 시작하고 유효한 인증 토큰을 전달합니다.

   ```
   my_project.exe --authToken [token]
   ```