Amazon GameLift 및 게임 클라이언트 서버 상호 작용 - Amazon GameLift

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

Amazon GameLift 및 게임 클라이언트 서버 상호 작용

이 주제에서는 게임 클라이언트, 백엔드 서비스, 게임 서버 및 Amazon GameLift 간의 상호 작용을 설명합니다.

다음 다이어그램은 게임 클라이언트, 백엔드 서비스, Amazon GameLift SDK, 관리형 EC2 게임 서버, Amazon GameLift Server SDK, Amazon GameLift 간의 상호 작용을 보여줍니다. 표시된 상호 작용에 대한 자세한 설명은 이 페이지의 다음 섹션을 참조하세요.

다음 섹션에 나와 있는 사용 사례의 게임 클라이언트/서버 상호 작용

게임 서버 초기화

다음 단계에서는 게임 세션을 호스팅하기 위해 게임 서버를 준비할 때 발생하는 상호 작용을 설명합니다.

  1. Amazon GameLift는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스에서 실행 가능한 서버를 시작합니다.

  2. 게임 서버는 다음을 호출합니다.

    1. InitSDK() 서버 SDK를 초기화합니다.

    2. ProcessReady() 게임 세션 준비, 연결 정보 및 게임 세션 로그 파일의 위치를 통신합니다.

    그런 다음 서버 프로세스는 Amazon GameLift의 콜백을 기다립니다.

  3. Amazon GameLift는 게임 세션 배치가 가능하도록 서버 프로세스의 상태를 ACTIVE로 업데이트합니다.

  4. Amazon GameLift는 onHealthCheck 콜백 호출을 시작하고 서버 프로세스가 활성화되어 있는 동안 주기적으로 콜백을 계속 호출합니다. 서버 프로세스는 1분 내에 정상 또는 비정상을 보고할 수 있습니다.

게임 세션을 생성

게임 서버를 초기화한 후 플레이어를 호스팅할 게임 세션을 생성할 때 다음과 같은 상호 작용이 발생합니다.

  1. 백엔드 서비스는 SDK 작업 StartGameSessionPlacement()를 호출합니다.

  2. Amazon GameLift는 PENDING 상태가 포함된 GameSessionPlacement 새 티켓을 생성하여 백엔드 서비스에 반환합니다.

  3. 백엔드 서비스는 대기열에서 배치 티켓 상태를 가져옵니다. 자세한 내용은 게임 세션 배치의 이벤트 알림 설정 섹션을 참조하세요.

  4. Amazon GameLift는 적절한 플릿을 선택하고 0 게임 세션이 있는 플릿에서 활성 서버 프로세스를 검색하여 게임 세션 배치를 시작합니다. Amazon GameLift가 서버 프로세스를 찾으면 Amazon GameLift는 다음을 수행합니다.

    1. 게임 세션 설정과 배치 요청의 플레이어 데이터(ACTIVATING 상태 포함)를 사용하여 GameSession 객체를 생성합니다.

    2. 서버 프로세스의 onStartGameSession 콜백을 호출합니다. Amazon GameLift는 서버 프로세스가 게임 세션을 설정할 수 있음을 나타내는 정보를 GameSession 객체에 전달합니다.

    3. 서버 프로세스의 게임 세션 수를 1로 변경합니다.

  5. 서버 프로세스가 onStartGameSession 콜백 함수를 실행합니다. 서버 프로세스가 플레이어 연결을 수락할 준비가 되면 ActivateGameSession()을 호출하고 플레이어 연결을 기다립니다.

  6. Amazon GameLift는 서버 프로세스에 대한 연결 정보로 GameSession 객체를 업데이트합니다. (이 정보에는 ProcessReady()로 보고된 포트 설정이 포함됩니다.) 또한 Amazon GameLift는 상태를 ACTIVE로 변경합니다.

  7. 백엔드 서비스는 업데이트된 티켓 상태를 감지하기 위해 DescribeGameSessionPlacement()를 호출합니다. 그런 다음 백엔드 서비스는 연결 정보를 사용하여 게임 클라이언트를 서버 프로세스에 연결하고 게임 세션에 참여합니다.

게임에 플레이어 추가

이 시퀀스는 기존 게임 세션에 플레이어를 추가하는 프로세스를 설명합니다. 플레이어 세션은 게임 세션 배치 요청의 일부로 요청할 수도 있습니다.

  1. 백엔드 서비스는 게임 세션 ID를 사용하여 클라이언트 API 작업 CreatePlayerSession()을 호출합니다.

  2. Amazon GameLift가 게임 세션 상태(ACTIVE여야 함)를 확인하고 게임 세션에서 열린 플레이어 슬롯을 찾습니다. 슬롯이 발견되면 Amazon GameLift는 다음을 수행합니다.

    1. 새로운 PlayerSession 객체를 만들고 상태를 RESERVED로 설정합니다.

    2. PlayerSession 객체를 사용하여 백엔드 서비스 요청에 응답합니다.

  3. 백엔드 서비스는 플레이어 세션 ID로 서버 프로세스에 직접 게임 클라이언트를 연결합니다.

  4. 서버가 서버 API 작업 AcceptPlayerSession()을 호출하여 플레이어 세션 ID를 확인합니다. 확인되면 Amazon GameLift가 PlayerSession 객체를 서버 프로세스에 전달합니다. 서버 프로세스가 연결을 수락하거나 거부합니다.

  5. Amazon GameLift는 다음 중 하나를 수행합니다.

    1. 연결이 수락되면 Amazon GameLift는 PlayerSession 상태를 ACTIVE로 설정합니다.

    2. 백엔드 서버의 원래 CreatePlayerSession() 호출 후 60초 내에 응답이 수신되지 않으면, Amazon GameLift는 PlayerSession 상태를 TIMEDOUT으로 변경하고 게임 세션에서 플레이어 슬롯을 다시 엽니다.

플레이어 제거

새 플레이어가 참여할 공간을 만들기 위해 게임 세션에서 플레이어를 제거하면 다음과 같은 상호 작용이 발생합니다.

  1. 플레이어가 게임 연결을 끊습니다.

  2. 서버가 끊어진 연결을 찾아내고 서버 API 작업 RemovePlayerSession()을 호출합니다.

  3. Amazon GameLift는 PlayerSession 상태를 COMPLETED로 변경하고 게임 세션에서 플레이어 슬롯을 다시 엽니다.

게임 세션 종료

이 상호 작용 시퀀스는 서버 프로세스가 현재 게임 세션을 종료할 때 발생합니다.

  1. 서버가 게임 세션과 서버를 종료합니다.

  2. 서버가 Amazon GameLift로 ProcessEnding()을 호출합니다.

  3. Amazon GameLift는 다음을 수행합니다.

    1. 게임 세션 로그를 Amazon Simple Storage Service(S3)에 업로드합니다.

    2. GameSession 상태가 TERMINATED로 변경됩니다.

    3. 서버 프로세스 상태를 TERMINATED로 변경합니다.

    4. 인스턴스 리소스를 재활용합니다.