GameLift Amazon을 게임 서버에 추가 - 아마존 GameLift

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

GameLift Amazon을 게임 서버에 추가

각 게임 서버 프로세스가 GameLift Amazon이 GameLift 시작하는 이벤트에 응답할 수 있어야 하므로 사용자 지정 게임 서버는 Amazon과 통신해야 합니다. 또한 게임 서버는 Amazon에 서버 프로세스 상태 및 플레이어 연결에 대한 GameLift 정보를 지속적으로 제공해야 합니다. 게임 서버, 백엔드 서비스, 게임 클라이언트, Amazon이 GameLift 협력하여 게임 호스팅을 관리하는 방법에 대한 자세한 내용은 을 참조하십시오Amazon GameLift 및 게임 클라이언트 서버 상호 작용.

게임 서버가 GameLift Amazon과 상호 작용할 수 있도록 준비하려면 Amazon GameLift Server SDK를 게임 서버 프로젝트에 추가하고 이 주제에 설명된 기능을 구축하십시오. Server SDK는 여러 언어로 제공됩니다. Amazon GameLift Server SDK에 대한 자세한 내용은 을 참조하십시오Amazon을 통한 개발 지원 GameLift.

Server SDK API 참조:

서버 프로세스 초기화

GameLift Amazon과의 통신을 설정하고 서버 프로세스가 게임 세션을 호스팅할 준비가 되었음을 보고하는 코드를 추가합니다. 이 GameLift 코드는 Amazon 코드보다 먼저 실행되어야 합니다.

  1. InitSdk() 호출하여 Amazon GameLift API 클라이언트를 초기화합니다. Amazon GameLift Anywhere 컴퓨팅 리소스에서 서버 프로세스를 초기화하려면 다음을 InitSdk() ServerParameters 사용하여 호출하십시오.

    • 게임 서버에 연결하는 데 사용되는 WebSocket의 URL입니다.

    • 게임 서버를 호스팅하는 데 사용되는 프로세스의 ID입니다.

    • 게임 서버 프로세스를 호스팅하는 컴퓨팅의 ID입니다.

    • Amazon GameLift Anywhere 컴퓨팅을 포함하는 GameLift 플릿의 ID입니다.

    • Amazon GameLift 작업에서 생성된 인증 토큰GetComputeAuthToken.

  2. 서버 프로세스가 게임 세션을 호스팅할 준비가 GameLift 되었음을 Amazon에 알립니다. 다음 정보와 함께 ProcessReady()(C++) (C#) (Unreal) 를 호출합니다. (서버 프로세스당 한 번만 ProcessReady()를 호출해야 한다는 점에 유의하세요.)

    • 서버 프로세스에서 사용하는 포트 번호입니다. 백엔드 서비스는 서버 프로세스에 연결하고 게임 세션에 참여할 수 있도록 게임 클라이언트에 포트 번호와 IP 주소를 제공합니다.

    • Amazon에서 GameLift 보관하려는 파일 (예: 게임 세션 로그) 의 위치. 서버 프로세스는 게임 세션 중에 이러한 파일을 생성합니다. 파일은 서버 프로세스가 실행 중인 인스턴스에 임시로 저장되며 인스턴스가 종료되면 손실됩니다. 목록에 있는 모든 파일은 Amazon에 업로드됩니다 GameLift. Amazon GameLift 콘솔을 통해 또는 Amazon GameLift API 작업 GetGameSessionLogUrl() 을 호출하여 이러한 파일에 액세스할 수 있습니다.

    • Amazon이 서버 프로세스로 GameLift 호출할 수 있는 콜백 함수의 이름. 게임 서버는 이러한 함수를 구현해야 합니다. 자세한 내용은 (C++) (C#) (Unreal) 을 참조하세요.

      • (선택 사항) onHealthCheck — Amazon은 이 함수를 정기적으로 GameLift 호출하여 서버에 상태 보고서를 요청합니다.

      • onStartGameSession— Amazon은 클라이언트 요청 CreateGameSession() 에 대한 응답으로 이 함수를 GameLift 호출합니다.

      • onProcessTerminate— Amazon은 서버 프로세스를 GameLift 강제로 중지하여 정상적으로 종료합니다.

      • (선택 사항) onUpdateGameSession — GameLift Amazon은 업데이트된 게임 세션 객체를 게임 서버에 전송하거나 매치 백필 요청에 대한 상태 업데이트를 제공합니다. FlexMatch 채우기 기능을 사용하려면 이 콜백이 필요합니다.

    소유하거나 제어하는 AWS 리소스에 안전하게 액세스하도록 게임 서버를 설정할 수도 있습니다. 자세한 정보는 플릿에서 다른 AWS 리소스와 통신을 참조하세요.

(선택 사항) 서버 프로세스 상태 보고

코드를 게임 서버에 추가하여 콜백 함수 onHealthCheck()를 구현합니다. Amazon은 정기적으로 이 콜백 메서드를 GameLift 호출하여 상태 지표를 수집합니다. 이 콜백 함수를 구현하려면 다음을 수행합니다.

  • 서버 프로세스의 상태를 평가합니다. 예를 들어, 외부 종속성에 오류가 있는 경우 서버 프로세스의 상태를 비정상으로 보고할 수 있습니다.

  • 상태 평가를 완료하고 60초 내에 콜백에 응답합니다. GameLift Amazon은 해당 시간 내에 응답을 받지 못하면 자동으로 서버 프로세스를 비정상으로 간주합니다.

  • 정상에 대해 true, 비정상에 대해 false 부울 값을 반환합니다.

상태 확인 콜백을 구현하지 않으면 GameLift Amazon은 서버가 응답하지 않는 한 서버 프로세스를 정상으로 간주합니다.

GameLift Amazon은 서버 프로세스 상태를 사용하여 비정상 프로세스를 종료하고 리소스를 정리합니다. 서버 프로세스가 계속해서 비정상으로 보고되거나 3회 연속 상태 확인에 응답하지 않는 경우 Amazon은 프로세스를 종료하고 새 프로세스를 시작할 GameLift 수 있습니다. Amazon은 플릿의 서버 프로세스 상태에 대한 지표를 GameLift 수집합니다.

(선택 사항) TLS 인증서 받기

TLS 인증서 생성이 활성화된 플릿에서 서버 프로세스가 실행 중인 경우 TLS 인증서를 검색하여 게임 클라이언트와 보안 연결을 설정하고 클라이언트 서버 통신을 암호화할 수 있습니다. 인증서 복사본이 인스턴스에 저장됩니다. 파일 위치를 확인하려면 GetComputeCertificate()(C++) (C#) (Unreal) 을 호출합니다.

게임 세션 시작

코드를 추가하여 콜백 함수 onStartGameSession을 구현합니다. GameLiftAmazon은 이 콜백을 호출하여 서버에서 게임 세션을 시작합니다.

onStartGameSession함수는 GameSession객체를 입력 파라미터로 사용합니다. 이 객체에는 최대 플레이어 수와 같은 주요 게임 세션 정보가 포함됩니다. 게임 데이터 및 플레이어 데이터도 포함될 수 있습니다. 함수 구현은 다음 작업을 수행해야 합니다.

  • GameSession 속성을 기반으로 새 게임 세션을 생성하는 작업을 시작합니다. 최소한 게임 서버는 게임 클라이언트가 서버 프로세스에 연결할 때 참조하는 게임 세션 ID에 연결해야 합니다.

  • 필요에 따라 게임 데이터와 플레이어 데이터를 처리합니다. 이 데이터는 GameSession 객체에 있습니다.

  • 새 게임 세션이 플레이어를 받아들일 준비가 GameLift 되면 Amazon에 알리십시오. 서버 API 작업 ActivateGameSession()(C++) (C#) (Unreal) 을 호출합니다. 성공적인 호출에 대한 응답으로 Amazon은 게임 세션 상태를 로 GameLift 변경합니다ACTIVE.

(선택 사항) 새 플레이어 확인

플레이어 세션 상태를 추적하는 경우 새 플레이어가 게임 서버에 연결될 때 해당 플레이어를 확인하는 코드를 추가합니다. Amazon은 현재 플레이어와 사용 가능한 게임 세션 슬롯을 GameLift 추적합니다.

검증을 위해 게임 세션에 대한 액세스를 요청하는 게임 클라이언트는 플레이어 세션 ID를 포함해야 합니다. Amazon은 플레이어가 StartGameSessionPlacement() 또는 StartMatchmaking() 를 사용하여 게임에 참여하도록 요청하면 이 ID를 GameLift 자동으로 생성합니다. 그러면 플레이어 세션이 게임 세션에서 열린 슬롯을 예약합니다.

게임 서버 프로세스가 게임 클라이언트 연결 요청을 받으면 플레이어 세션 ID로 AcceptPlayerSession()(C++) (C#) (Unreal) 을 호출합니다. 이에 대해 Amazon은 플레이어 세션 ID가 게임 세션에 예약된 오픈 슬롯과 일치하는지 GameLift 확인합니다. GameLift Amazon이 플레이어 세션 ID를 확인한 후 서버 프로세스가 연결을 수락합니다. 그러면 플레이어가 게임 세션에 참여할 수 있습니다. Amazon이 플레이어 세션 ID를 확인하지 GameLift 않으면 서버 프로세스가 연결을 거부합니다.

(선택 사항) 플레이어 세션 종료 보고

플레이어 세션의 상태를 추적하는 경우 플레이어가 게임 세션을 GameLift 떠나면 Amazon에 알리는 코드를 추가하십시오. 이 코드는 서버 프로세스가 끊어진 연결을 감지할 때마다 실행되어야 합니다. GameLift Amazon은 이 알림을 사용하여 게임 세션에서 현재 플레이어와 사용 가능한 슬롯을 추적합니다.

코드에서 끊긴 연결을 처리하려면 Server API 작업 RemovePlayerSession()(C++) (C#) (Unreal) 에 대한 호출을 해당 플레이어 세션 ID와 함께 추가합니다.

게임 세션 종료

서버 프로세스 종료 시퀀스에 코드를 추가하여 게임 세션이 GameLift 종료될 때 Amazon에 알립니다. 호스팅 리소스를 재활용하고 새로 고치기 위해 Amazon은 게임 세션이 완료된 후 서버 프로세스를 GameLift 종료합니다.

서버 프로세스 종료 코드를 시작할 때 서버 API 작업 ProcessEnding()(C++) (C#) (Unreal) 을 호출합니다. 이 호출은 GameLift Amazon에 서버 프로세스가 종료되었음을 알립니다. Amazon은 게임 세션 상태 및 서버 프로세스 상태를 로 GameLift 변경합니다TERMINATED. ProcessEnding()을 호출한 후에는 프로세스를 안전하게 종료할 수 있습니다.

서버 프로세스 종료 알림에 응답

Amazon의 알림에 대한 응답으로 서버 프로세스를 종료하는 코드를 추가합니다 GameLift. Amazon은 서버 프로세스가 지속적으로 비정상이라고 보고하거나 서버 프로세스가 실행 중인 인스턴스가 종료되는 경우 이 알림을 GameLift 보냅니다. GameLift Amazon은 용량 축소 이벤트의 일부로 또는 스팟 인스턴스 중단에 대한 응답으로 인스턴스를 중지할 수 있습니다.

종료 알림을 처리하려면 게임 서버 코드를 다음과 같이 변경합니다.

  • 콜백 함수 onProcessTerminate()을 구현합니다. 이 함수는 게임 프로세스를 종료하는 코드를 호출해야 합니다. Amazon에서 이 작업을 GameLift 호출하면 스팟 인스턴스 중단이 발생하여 2분 내에 알림을 보냅니다. 이 알림으로 서버 프로세스 시간을 제공하여 안전하게 플레이어 연결을 해제하고, 게임 상태 데이터를 보존하며, 기타 정리 작업을 수행할 수 있습니다.

  • 게임 서버 종료 코드에서 서버 API 작업 GetTerminationTime()(C++) (C#) (Unreal) 을 호출합니다. GameLift Amazon에서 서버 프로세스를 중지하라는 요청을 보낸 경우 예상 종료 시간을 GetTerminationTime() 반환합니다.

  • 게임 서버 종료 코드를 시작할 때 서버 API 작업 ProcessEnding()(C++) (C#) (Unreal) 을 호출합니다. 이 호출은 GameLift Amazon에 서버 프로세스가 종료되었음을 알리고 GameLift Amazon은 서버 프로세스 상태를 로 변경합니다. TERMINATED ProcessEnding()을 호출한 후에는 프로세스를 안전하게 종료할 수 있습니다.