

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

# Unity 게임 서버 프로젝트와 Amazon GameLift Servers 통합
<a name="integration-unity-server-sdk4"></a>

**참고**  
이 주제에서는 이전 버전의 Unity용 Amazon GameLift Servers 플러그인에 대한 정보를 제공합니다. 버전 1.x는 Amazon GameLift Servers 4.x 이하용 서버 SDK를 사용합니다. 서버 SDK 5.x를 사용하고 Amazon GameLift Servers Anywhere 및 관리형 컨테이너 호스팅과 같은 최신 기능을 지원하는 최신 플러그인 버전에 대한 설명서는 [Amazon GameLift Servers Unity용 플러그인(서버 SDK 5.x)](unity-plug-in.md) 섹션을 참조하세요.

이 주제는 Amazon GameLift Servers에서 호스팅하기 위한 사용자 지정 게임 서버를 준비하는 데 도움을 줍니다. 게임 서버가 해당 상태를 Amazon GameLift Servers에 알려, 메시지가 표시될 때 게임 세션을 시작 및 중지하고, 다른 작업을 수행할 수 있어야 합니다. 자세한 정보는 [서버 SDK를 사용하여 게임 서버에 Amazon GameLift Servers를 추가합니다.](gamelift-sdk-server-api.md)을 참조하십시오.

## 사전 조건
<a name="integration-unity-server-sdk4-prereq"></a>

게임 서버를 통합하기 전에 먼저 다음 작업을 완료합니다.
+ [Amazon GameLift Servers의 IAM 서비스 역할 설정](setting-up-role.md)
+ [플러그인 설치 및 설정](unity-plug-in-sdk4.md#unity-plug-in-sdk4-install)

## 새로운 서버 프로세스 설정
<a name="integration-unity-server-sdk4-server-process"></a>

**참고**  
이 주제에서는 서버 SDK 4.x 이하를 사용하는 Unity 버전 1.0.0용 Amazon GameLift Servers 플러그인을 설명합니다.

Amazon GameLift Servers와의 통신을 설정하고 서버 프로세스가 게임 세션을 호스팅할 준비가 되었음을 보고합니다.

1. `InitSDK()`를 호출하여 서버 SDK를 초기화합니다.

1. 서버가 게임 세션을 수락할 수 있도록 준비하려면 연결 포트 및 게임 세션 위치 세부 정보를 포함하여 `ProcessReady()`를 호출합니다. `OnGameSession()`, `OnGameSessionUpdate()`, `OnProcessTerminate()`, `OnHealthCheck()`와 같이 Amazon GameLift Servers 서비스가 간접 호출하는 콜백 함수의 이름을 포함합니다. Amazon GameLift Servers가 콜백을 제공하는 데 몇 분 정도 소요될 수 있습니다.

1. Amazon GameLift Servers는 서버 프로세스의 상태를 `ACTIVE`으로 업데이트합니다.

1. Amazon GameLift Servers는 `onHealthCheck`를 주기적으로를 호출합니다.

다음 코드 예에서는 Amazon GameLift Servers를 사용하여 간단한 서버 프로세스를 설정하는 방법에 대해 보여줍니다.

```
//initSDK
var initSDKOutcome = GameLiftServerAPI.InitSDK();
           
//processReady
// Set parameters and call ProcessReady
var processParams = new ProcessParameters(
    this.OnGameSession,
    this.OnProcessTerminate,
    this.OnHealthCheck,
    this.OnGameSessionUpdate,
    port,
    // Examples of log and error files written by the game server
    new LogParameters(new List<string>()          
        {
            "C:\\game\\logs",
            "C:\\game\\error"
        })
);
               
var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams);
               
// Implement callback functions
void OnGameSession(GameSession gameSession)
{
    // game-specific tasks when starting a new game session, such as loading map
    // When ready to receive players
    var activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession();
}
               
void OnProcessTerminate()
{
    // game-specific tasks required to gracefully shut down a game session, 
    // such as notifying players, preserving game state data, and other cleanup
    var ProcessEndingOutcome = GameLiftServerAPI.ProcessEnding();
}
               
bool OnHealthCheck()
{
    bool isHealthy;
    // complete health evaluation within 60 seconds and set health
    return isHealthy;
}
```

## 게임 세션 시작
<a name="integration-unity-server-sdk4-start-game-session"></a>

**참고**  
이 주제에서는 서버 SDK 4.x 이하를 사용하는 Unity 버전 1.0.0용 Amazon GameLift Servers 플러그인을 설명합니다.

게임 초기화가 완료된 후 게임 세션을 시작할 수 있습니다.

1. `onStartGameSession` 콜백 함수를 구현합니다. Amazon GameLift Servers는 이 메서드를 호출하여 서버 프로세스에서 새 게임 세션을 시작하고 플레이어 연결을 수신합니다.

1. 게임 세션을 활성화하려면 `ActivateGameSession()`을 호출합니다. SDK에 대한 자세한 내용은 [Amazon GameLift Servers 4.x용 C\# 서버 SDK - 작업](integration-server-sdk-csharp-ref-actions.md) 섹션을 참조하세요.

다음 코드 예에서는 Amazon GameLift Servers로 게임 세션을 시작하는 방법에 대해 보여줍니다.

```
void OnStartGameSession(GameSession gameSession)
{
    // game-specific tasks when starting a new game session, such as loading map   
    ...
    // When ready to receive players   
    var activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession();
}
```

## 게임 세션 종료
<a name="integration-unity-server-sdk4-end-game-session"></a>

**참고**  
이 주제에서는 서버 SDK 4.x 이하를 사용하는 Unity 버전 1.0.0용 Amazon GameLift Servers 플러그인을 설명합니다.

게임 세션이 종료되면 Amazon GameLift Servers에 알립니다. 호스팅 리소스를 재활용하고 새로 고치려면 게임 세션이 완료된 후 서버 프로세스를 종료하는 것이 가장 좋습니다.

1. Amazon GameLift Servers로부터 요청을 수신하도록 `onProcessTerminate`로 이름이 지정된 함수를 설정하고 `ProcessEnding()`을 호출합니다.

1. 프로세스 상태가 `TERMINATED`로 변경됩니다.

다음 예에서는 게임 세션의 프로세스 종료하는 방법에 대해 설명합니다.

```
var processEndingOutcome = GameLiftServerAPI.ProcessEnding();

if (processReadyOutcome.Success)
   Environment.Exit(0);

// otherwise, exit with error code
Environment.Exit(errorCode);
```

## 서버 빌드 생성 및 Amazon GameLift Servers에 업로드
<a name="integration-unity-server-sdk4-gamelift-connection"></a>

**참고**  
이 주제에서는 서버 SDK 4.x 이하를 사용하는 Unity 버전 1.0.0용 Amazon GameLift Servers 플러그인을 설명합니다.

게임 서버를 Amazon GameLift Servers와 통합한 후 Amazon GameLift Servers가 게임 호스팅에 배포할 수 있도록 빌드 파일을 플릿에 업로드합니다. 서버를 Amazon GameLift Servers에 업로드하는 방법에 대한 자세한 내용은 [Amazon GameLift Servers의 게임 서버 빌드 생성](gamelift-build-cli-uploading.md) 섹션을 참조하세요.