기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
서버리스 백엔드를 사용한 세션 기반 게임 서버 호스팅
게임용 아키텍처를 개발할 때는 필요한 기능과 소유할 준비가 된 운영 관리 오버헤드 수준을 고려하세요. 운영 편의성과 유연성 간에 최상의 균형을 맞추기 위해 클라우드 공급자의 관리형 서비스를 사용하여 게임을 빌드할 수 있습니다. 관리형 서비스를 사용하면 자체 사용자 지정 게임 기능을 개발하고 사용자 지정하는 동시에 인프라 배포 및 관리 부담을 줄일 수 있습니다.
세션 기반 멀티플레이어 게임을 호스팅하려면 게임 서버 프로세스를 호스팅하기 위한 서버 인프라와 매치메이킹 및 세션 관리를 위한 확장 가능한 백엔드가 있어야 합니다. 다음 참조 아키텍처는 Amazon GameLift 관리형 호스팅과 서버리스 백엔드를 사용하여 세션 기반 게임을 관리하는 방법을 보여줍니다.
세션 기반 게임을 위한 Amazon GameLift 관리형 호스팅
다이어그램은 플레이어를 GameLift 관리형 게임 호스팅에서 실행되는 게임에 참여시키는 프로세스를 설명합니다. 여기에는 다음 단계가 포함됩니다.
-
게임 클라이언트는 Amazon Cognito 자격 증명 풀에서 Amazon Cognito 자격 증명을 요청합니다. 선택적으로 외부 자격 증명 공급자에 연결할 수 있습니다.
-
게임 클라이언트는 임시 액세스 자격 증명을 수신하고 Amazon Cognito 자격 증명으로 요청에 서명하여 Amazon API Gateway를 통해 게임 세션을 요청합니다. Amazon Cognito
-
API Gateway는 AWS Lambda 함수를 호출합니다.
-
Lambda 함수는 Amazon DynamoDB 테이블에서 플레이어 데이터를 요청합니다. Amazon Cognito 자격 증명은 요청 컨텍스트 데이터에 인증된 자격 증명이 제공되므로 올바른 플레이어 데이터를 안전하게 요청하는 데 사용됩니다.
-
Lambda 함수는 추가 정보(예: 플레이어 스킬 레벨)를 위해 올바른 플레이어 데이터를 사용하여 GameLift FlexMatch 매치메이킹을 통해 매치를 요청합니다. JSON 기반 구성 문서를 사용하여 FlexMatch 매치메이킹 구성을 정의할 수 있습니다. 게임 클라이언트는 다양한 리전에서 서버 엔드포인트를 ping하여 지연 시간 지표를 생성할 수 있으며 지연 시간 데이터를 사용하여 지연 시간 기반 매치메이킹을 지원할 수 있습니다.
-
FlexMatch는 리전에 적절한 지연 시간을 가진 적절한 플레이어 그룹을 매칭한 후 GameLift 대기열을 통해 게임 세션 배치를 요청합니다. 대기열에는 등록된 리전 위치가 하나 이상인 플릿이 포함되어 있습니다.
-
세션이 플릿 위치 중 하나에 배치되면 이벤트 알림이 Amazon SNS 주제로 전송됩니다.
-
Lambda 함수는 Amazon SNS 이벤트를 수신하고 처리합니다.
-
Amazon SNS 메시지가 MatchmakingSucceeded 이벤트인 경우 Lambda 함수는 서버 포트 및 IP 주소를 사용하여 DynamoDB에 결과를 기록합니다. TTL(time-to-live) 값은 더 이상 필요하지 않을 때 매치메이킹 티켓이 DynamoDB에서 삭제되도록 하는 데 사용됩니다.
-
게임 클라이언트는 API Gateway에 서명된 요청을 보내 특정 간격으로 매치메이킹 티켓의 상태를 확인합니다.
-
API Gateway는 매치메이킹 티켓 상태를 확인하는 Lambda 함수를 호출합니다.
-
Lambda 함수는 DynamoDB를 확인하여 티켓이 성공했는지 확인합니다. 성공하면 Lambda 함수는 IP 주소, 포트 및 플레이어 세션 ID를 클라이언트로 다시 전송합니다. 티켓이 실패하면 Lambda 함수는 매치가 준비되지 않았음을 선언하는 응답을 보냅니다.
-
게임 클라이언트는 백엔드에서 제공하는 포트 및 IP 주소를 사용하여 TCP 또는 UDP를 사용하여 게임 서버에 연결합니다. 플레이어 세션 ID를 게임 서버로 전송하고 게임 서버는 Amazon GameLift Server SDK를 사용하여 이를 검증합니다.
또는 Amazon GameLift와 함께 API Gateway WebSockets를 사용하도록 이전 아키텍처를 수정할 수 있습니다. 이 접근 방식에서는 WebSocket 기반 구현을 사용하여 게임 클라이언트와 게임 백엔드 서비스 간의 통신이 이루어집니다. 이 구현을 사용하면 게임 백엔드 Lambda 함수가 폴링 모델을 구현하는 대신 WebSocket을 통해 게임 클라이언트에 대한 서버 측 메시지를 시작할 수 있습니다.