기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon과의 게임 클라이언트/서버 상호 작용 GameLift
Amazon GameLift 호스팅 솔루션의 구성 요소는 플레이어 수요에 따라 게임 세션을 실행하는 특정 방식으로 서로 상호 작용합니다. 이 주제에서는 Amazon GameLift 관리형 EC2플릿, 자체 관리형 Amazon GameLift Anywhere 플릿 또는 하이브리드 솔루션에서 게임 서버를 호스팅할 때 구성 요소가 서로 통신하는 방법을 설명합니다.
호스팅 솔루션 구성 요소에는 게임 서버, Amazon GameLift 서비스, 클라이언트 측 백엔드 서비스 및 게임 클라이언트가 포함됩니다. 게임 서버는 Amazon GameLift 서버를 SDK 사용하여 Amazon GameLift 서비스와 상호 작용합니다. 백엔드 서비스는 Amazon GameLift 서비스API(의 일부 AWS SDK)를 사용하여 게임 클라이언트를 대신하여 서비스와 상호 작용합니다. 게임 세션에 참여할 때 게임 클라이언트는 게임 세션의 고유한 IP 주소와 포트 번호를 사용하여 게임 세션에 직접 연결합니다.
상호작용 다이어그램
다음 다이어그램은 Amazon GameLift 서비스가 게임 서버 가용성 상태를 추적하고 플레이어 수요에 대응하여 게임 세션을 시작할 수 있도록 게임 호스팅 구성 요소가 상호 작용하는 방식을 보여줍니다.
상호작용 동작
다음 섹션에서는 각 키 상호 작용의 이벤트 시퀀스를 설명합니다.
게임 서버 프로세스 초기화
시작 시 게임 서버 프로세스는 Amazon GameLift 서비스와의 통신을 설정하고 게임 세션을 호스팅할 준비가 되었다고 상태를 보고합니다.
-
게임 서버 실행 파일의 새 프로세스가 호스팅 리소스에서 실행되기 시작합니다.
-
게임 서버 프로세스는 다음 서버 SDK 작업을 순서대로 호출합니다.
-
InitSDK()
를 사용하여 서버를 초기화하고SDK, 서버 프로세스를 인증하고, Amazon GameLift 서비스와 통신을 설정합니다. -
ProcessReady()
게임 세션을 호스팅할 준비가 되었음을 알립니다. 또한 이 호출은 프로세스의 연결 정보, 게임 클라이언트가 게임 세션에 연결하는 데 사용하는 정보 및 기타 정보를 보고합니다.
그런 다음 서버 프로세스는 Amazon GameLift 서비스의 프롬프트를 기다립니다.
-
-
Amazon은 서버 프로세스의 상태를 로 GameLift 업데이트
ACTIVE
하고 새 게임 세션을 호스팅할 수 있습니다. -
Amazon은
onHealthCheck
콜백을 주기적으로 호출하여 서버 프로세스에서 상태 상태를 요청하기 GameLift 시작합니다. 이러한 호출은 서버 프로세스가 활성 상태로 유지되는 동안 계속됩니다. 서버 프로세스는 1분 이내에 정상 또는 비정상으로 응답해야 합니다. 서버 프로세스가 정상 상태가 아니거나 응답하지 않는 경우 Amazon GameLift 서비스는 서버 프로세스의 활성 상태를 변경하고 게임 세션 시작 요청 전송을 중지합니다.
게임 세션 생성
Amazon GameLift 서비스는 플레이어의 게임 플레이 요청에 따라 새 게임 세션을 시작합니다.
-
게임 클라이언트를 사용하는 플레이어가 게임 세션에 참여해 달라고 요청합니다. 게임이 플레이어 조인 프로세스를 처리하는 방식에 따라 게임 클라이언트는 백엔드 서비스에 요청을 보냅니다.
-
플레이어 조인 프로세스에서 새 게임 세션을 시작해야 하는 경우 백엔드 서비스는 Amazon GameLift 서비스에 새 게임 세션에 대한 요청을 보냅니다. 이 요청은 서비스 API 작업 을 호출합니다
StartGameSessionPlacement()
. (또는 백엔드 서비스에서 또는 를 호출할 수 있습니다StartMatchmaking()
CreateGameSession()
.) -
Amazon GameLift 서비스는 상태의 새
GameSessionPlacement
티켓을 생성하여 응답합니다PENDING
. 티켓 정보를 백엔드 서비스에 반환하여 배치 티켓 상태를 추적하고 게임 세션이 플레이어를 위해 준비된 시점을 확인할 수 있습니다. 자세한 내용은 게임 세션 배치의 이벤트 알림 설정 단원을 참조하십시오. -
Amazon GameLift 서비스는 게임 세션 배치 프로세스를 시작합니다. 어떤 플릿을 볼지 식별하고 해당 플릿에서 게임 세션을 호스팅하지 않는 활성 서버 프로세스를 검색합니다. 사용 가능한 서버 프로세스를 찾으면 Amazon GameLift 서비스가 다음을 수행합니다.
-
배치 요청에서 게임 세션 설정 및 플레이어 데이터를 사용하여
GameSession
객체를 생성하고 상태를 로 설정합니다ACTIVATING
. -
서버 프로세스에 게임 세션을 시작하라는 메시지를 표시합니다. 서비스는 서버 프로세스의
onStartGameSession
콜백을 호출하고GameSession
객체를 전달합니다. -
서버 프로세스의 게임 세션 수를
1
로 변경합니다.
-
-
서버 프로세스는
onStartGameSession
콜백 함수를 실행합니다. 서버 프로세스가 플레이어 연결을 수락할 준비가 되면 서버 SDK 작업을 호출ActivateGameSession()
하고 플레이어 연결을 기다립니다. -
Amazon GameLift 서비스는 서버 프로세스의 연결 정보로
GameSession
객체를 업데이트하고(에 대한 호출에서 보고된 대로ProcessReady()
) 게임 세션 상태를 로 설정합니다ACTIVE
. 또한GameSessionPlacement
티켓 상태를 로 업데이트합니다FULFILLED
. -
백엔드 서비스는 티켓 상태를 확인하고 게임 세션 정보를 얻기
DescribeGameSessionPlacement()
위해 호출합니다. 게임 세션이 활성화되면 백엔드 서비스는 게임 클라이언트에 알리고 게임 세션 연결 정보를 전달합니다. -
게임 클라이언트는 연결 정보를 사용하여 게임 서버 프로세스에 직접 연결하고 게임 세션에 참여합니다.
게임에 플레이어 추가
게임은 플레이어 세션을 선택적으로 사용하여 게임 세션에 대한 플레이어 연결을 추적할 수 있습니다. 플레이어 세션은 개별적으로 생성하거나 게임 세션 배치 요청의 일부로 생성할 수 있습니다.
-
백엔드 서비스는 게임 세션 ID를
CreatePlayerSession()
사용하여 서비스 API 작업을 호출합니다. -
Amazon GameLift 서비스는 게임 세션 상태(가 여야 함
ACTIVE
)를 확인하고 게임 세션에서 열린 플레이어 슬롯을 찾습니다. 슬롯을 사용할 수 있는 경우 서비스는 다음을 수행합니다.-
새로운
PlayerSession
객체를 만들고 상태를RESERVED
로 설정합니다. -
플레이어 세션 정보를 사용하여 백엔드 서비스 요청에 응답합니다.
-
-
백엔드 서비스는 플레이어 세션 정보와 게임 세션 연결 정보를 게임 클라이언트에 전달합니다.
-
게임 클라이언트는 연결 정보와 플레이어 세션 ID를 사용하여 게임 서버 프로세스에 직접 연결하고 게임 세션에 참여하도록 요청합니다.
-
게임 클라이언트 조인 시도에 대한 응답으로 게임 서버 프로세스는 서비스 API 작업을 호출
AcceptPlayerSession()
하여 플레이어 세션 ID를 검증합니다. 서버 프로세스가 연결을 수락하거나 거부합니다. -
Amazon GameLift 서비스는 다음 중 하나를 수행합니다.
-
연결이 수락되면 Amazon은
PlayerSession
상태를ACTIVE
로 GameLift 설정하고 를 게임 서버 프로세스PlayerSession
로 전달합니다. -
게임 서버 프로세스가 원래
CreatePlayerSession()
요청 후 특정 기간 내에AcceptPlayerSession()
플레이어 세션 ID를 호출하지 않는 경우 Amazon GameLift 서비스는PlayerSession
상태를 로 변경TIMEDOUT
하고 게임 세션의 플레이어 슬롯을 다시 엽니다.
-
플레이어 제거
플레이어 세션을 사용하는 게임의 경우 플레이어 연결 해제 시 게임 서버 프로세스가 Amazon GameLift 서비스에 알립니다. 서비스는 이 정보를 사용하여 게임 세션의 플레이어 슬롯 상태를 추적하고 새 플레이어가 열린 슬롯을 사용하도록 허용할 수 있습니다.
-
플레이어가 게임 세션에서 연결을 끊습니다.
-
게임 서버 프로세스는 연결 끊김을 감지하고 서버 SDK 작업 을 호출합니다
RemovePlayerSession()
. -
Amazon GameLift 서비스는 플레이어 세션 상태를 로 변경
COMPLETED
하고 게임 세션에서 플레이어 슬롯을 다시 엽니다.
게임 세션 종료
게임 세션이 종료되거나 게임 세션을 종료할 때 서버 프로세스는 Amazon GameLift 서비스에 게임 세션 상태를 알립니다.
-
게임 서버 프로세스는 게임 세션을 종료하고 서버 SDK 작업 을 호출하여 프로세스 종료를 시작합니다
ProcessEnding()
. -
Amazon GameLift 서비스는 다음을 수행합니다.
-
게임 세션 로그를 Amazon Simple Storage Service(S3)에 업로드합니다.
-
게임 세션 상태를 로 변경합니다
TERMINATED
. -
서버 프로세스 상태를
TERMINATED
로 변경합니다. -
호스팅 솔루션의 설계 방식에 따라 새로 사용 가능한 호스팅 리소스가 새 게임 서버 프로세스를 실행하도록 할당됩니다.
-