기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
플레이어 게이트웨이를 게임에 통합
플레이어 게이트웨이 지원 플릿을 생성한 후 플레이어 게이트웨이와 통합되도록 게임 클라이언트 및 게임 백엔드를 업데이트해야 합니다. 게임 백엔드는 릴레이 엔드포인트와 플레이어 게이트웨이 토큰을 검색한 다음 게임 클라이언트에 제공합니다. 게임 클라이언트는 모든 UDP 트래픽을 이러한 릴레이 엔드포인트로 전송합니다.
통합은 다음 호출 경로를 따릅니다.
-
게임 백엔드는
GetPlayerConnectionDetailsAPI를 호출하여 게임 세션의 각 플레이어에 대한 릴레이 엔드포인트 및 플레이어 게이트웨이 토큰을 검색합니다. -
게임 백엔드는 릴레이 엔드포인트와 플레이어 게이트웨이 토큰을 게임 클라이언트로 전송합니다.
-
게임 클라이언트는 플레이어 게이트웨이 토큰을 모든 발신 UDP 패킷에 우선 적용하고 패킷을 릴레이 엔드포인트로 전송합니다.
-
릴레이 네트워크는 플레이어 게이트웨이 토큰을 검증하고 트래픽을 게임 서버로 라우팅합니다.
-
게임 서버는 동일한 릴레이 경로를 통해 트래픽을 게임 클라이언트로 다시 전송합니다.
백엔드 통합
게임 백엔드는 GetPlayerConnectionDetails API를 호출하여 플레이어에 대한 릴레이 엔드포인트 및 플레이어 게이트웨이 토큰을 검색해야 합니다. 그러면 백엔드가 게임 클라이언트에이 정보를 제공합니다.
GetPlayerConnectionDetails API
GetPlayerConnectionDetails API는 게임 세션의 플레이어에 대한 연결 세부 정보를 반환합니다.
- 릴레이 엔드포인트 및 토큰
-
위치에서 플레이어 게이트웨이가 활성화되고 지원되는 경우는 다음을 반환합니다.
-
릴레이 엔드포인트 - 플레이어마다 다른 여러 릴레이 엔드포인트(IP 주소 및 포트)
-
플레이어 게이트웨이 토큰 - 클라이언트가 모든 UDP 패킷 앞에 추가해야 하는 토큰(최소 3분 동안 유효)
-
만료 - 플레이어 게이트웨이 토큰 만료 타임스탬프
-
- 직접 연결
-
플레이어 게이트웨이가 활성화되지 않았거나 위치에서 지원되지 않는 경우는 게임 서버의 IP 주소 및 포트를 반환합니다.
게임 클라이언트는 두 연결 유형을 모두 처리하도록 설계되어야 합니다.
API 호출 예제:
// C++ example using AWS SDK Aws::GameLift::GameLiftClient client; Aws::GameLift::Model::GetPlayerConnectionDetailsRequest request; request.SetGameSessionId(gameSessionId); request.SetPlayerIds(playerIds); // Vector of player IDs auto outcome = client.GetPlayerConnectionDetails(request); if (outcome.IsSuccess()) { auto result = outcome.GetResult(); auto connectionDetails = result.GetPlayerConnectionDetails(); // Process each player's connection details for (const auto& detail : connectionDetails) { std::string playerId = detail.GetPlayerId(); // Get relay endpoints (IP address and port) auto endpoints = detail.GetEndpoints(); for (const auto& endpoint : endpoints) { std::string ipAddress = endpoint.GetIpAddress(); int port = endpoint.GetPort(); } // Get player gateway token auto token = detail.GetPlayerGatewayToken(); // Get expiration time auto expiration = detail.GetExpiration(); // Send endpoints and token to game client } }
API 참조의 GetPlayerConnectionDetails를 참조하세요. Amazon GameLift Servers
릴레이 엔드포인트 새로 고침
릴레이 엔드포인트가 비정상이 되면를 GetPlayerConnectionDetails 주기적으로 호출하여 플레이어에게 업데이트된 엔드포인트를 제공합니다. 게임 세션의 모든 플레이어에 대해 60초마다 API를 호출하는 것이 좋습니다. API 사용을 최적화하려면 단일 API 호출에서 여러 플레이어 IDs를 일괄 처리합니다.
중요
정기적인 새로 고침 호출은 업데이트된 엔드포인트를 플레이어에게 전달하는 기본 메커니즘입니다. 플레이어 게이트웨이 토큰은 최소 3분 동안 유효하지만 60초마다 새로 고치면 플레이어가 업데이트된 엔드포인트를 정기적으로 수신할 수 있습니다.
클라이언트 통합
게임 클라이언트는 모든 발신 UDP 패킷에 플레이어 게이트웨이 토큰을 추가하고 제공된 릴레이 엔드포인트로 패킷을 전송해야 합니다. Amazon GameLift Servers 클라이언트 SDK for C++ 및 Unreal Engine은 이러한 통합을 간소화하는 유틸리티를 제공합니다.
클라이언트 요구 사항
플레이어 게이트웨이를 통해 트래픽을 라우팅하려면 게임 클라이언트가 다음을 수행해야 합니다.
-
플레이어 게이트웨이 토큰 준비 - 모든 발신 UDP 패킷에 플레이어 게이트웨이 토큰을 준비합니다. 플레이어 게이트웨이 토큰은 암호화해서는 안 되며 각 패킷의 시작 부분에 나타나야 합니다. 유효한 플레이어 게이트웨이 토큰이 없는 패킷은 삭제됩니다.
-
릴레이 엔드포인트로 전송 - 제공된 릴레이 엔드포인트로 모든 UDP 패킷을 전송합니다.
-
연결 활동 유지 - 게임 클라이언트가 게임 서버로 패킷을 전송하거나 게임 서버가 플레이어로 패킷을 전송하는지 최소 30초에 한 번씩 확인합니다. 이 활동은 릴레이 네트워크를 통해 연결을 유지합니다.
-
엔드포인트 업데이트 처리 - 백엔드에서 업데이트된 릴레이 엔드포인트 및 플레이어 게이트웨이 토큰을 수락하고(60초마다 권장) 연결을 끊지 않고 새 엔드포인트로 전환합니다.
클라이언트 SDK
C++ 및 Unreal Engine용 Amazon GameLift Servers 클라이언트 SDK는 플레이어 게이트웨이 통합을 간소화하는 유틸리티를 제공합니다.
-
토큰 관리 - 모든 발신 UDP 패킷에 플레이어 게이트웨이 토큰을 준비합니다.
-
엔드포인트 선택 - 구성 가능한 알고리즘을 사용하여 트래픽을 릴레이 엔드포인트로 라우팅합니다.
-
엔드포인트 새로 고침 - 정기적인 콜백을 예약하여 백엔드에서 업데이트된 릴레이 엔드포인트 및 플레이어 게이트웨이 토큰을 검색합니다.
엔드포인트 선택 알고리즘
클라이언트 SDK는 사용할 릴레이 엔드포인트를 선택하기 위한 두 가지 기본 제공 알고리즘을 제공합니다.
- 폴백 알고리즘
-
비정상 상태가 될 때까지 하나의 엔드포인트를 사용한 다음 다른 엔드포인트로 전환합니다. 짧은 중단이 허용되는 메뉴, 로비 및 턴 기반 게임에 가장 적합합니다. 엔드포인트 장애 조치 중에 구성된 제한 시간(기본값: 2초) 동안 패킷이 손실될 수 있습니다.
- 예측 회전 알고리즘
-
사용 가능한 모든 엔드포인트를 지속적으로 교체하고 장애가 발생하기 전에 예측합니다. 일관된 패킷 전송이 중요한 1인칭 슈팅 게임 및 레이싱 게임과 같은 실시간 게임 플레이에 가장 적합합니다. 게임 서버가 일관된 빈도로 메시지를 전송해야 합니다.
SDK의 기본 알고리즘 클래스를 확장하여 사용자 지정 알고리즘을 구현할 수도 있습니다.
클라이언트 SDK 리소스
전체 통합 지침 및 샘플 코드는 다음 리소스를 참조하세요.
- C++
-
클라이언트 SDK for C++는 Amazon GameLift Servers 클라이언트 SDK for C++
에서 사용할 수 있습니다. - Unreal Engine
-
Unreal Engine용 플러그인은 Amazon GameLift Servers Unreal Engine용 클라이언트 SDK
에서 사용할 수 있습니다. 액세스하려면 GitHub의 Epic Games 조직에 가입해야 합니다. 자세한 내용은 GitHub의 Unreal Engine 을 참조하세요.
통합 테스트
플릿에 배포하기 전에 플레이어 게이트웨이 테스트 도구를 사용하여 플레이어 게이트웨이 통합을 로컬에서 테스트합니다. 이 도구는 플레이어 게이트웨이 UDP 프록시 인프라를 시뮬레이션하고 게임 클라이언트가 플레이어 게이트웨이 토큰을 올바르게 우선시하고, 여러 엔드포인트를 통해 트래픽을 라우팅하고, 네트워크 성능 저하를 처리하는지 확인하는 데 도움이 됩니다.
설정 및 사용 지침은 GitHub의 플레이어 게이트웨이 테스트 앱을
모범 사례
플레이어 게이트웨이를 통합할 때 다음 모범 사례를 따르세요.
-
60초마다 엔드포인트 새로 고침 - 플레이어가 업데이트된 엔드포인트를 정기적으로 수신하도록 60초
GetPlayerConnectionDetails마다를 호출합니다. -
배치 API 호출 - 동일한 게임 세션에서 여러 플레이어
GetPlayerConnectionDetails를 호출할 때 호출을 함께 배치 처리하여 API 오버헤드를 줄입니다. -
연결 활동 유지 - 최소 30초에 한 번씩 게임 클라이언트와 게임 서버 간에 트래픽이 흐르는지 확인합니다. 이는 client-to-server 또는 server-to-client 트래픽일 수 있습니다.
-
엔드포인트 업데이트 정상 처리 - 게임 클라이언트가 백엔드에서 업데이트된 엔드포인트를 수신하면 플레이어의 연결을 끊지 않고 새 엔드포인트로 전환합니다.
-
올바른 알고리즘 선택 - 게임 요구 사항에 가장 적합한 엔드포인트 선택 알고리즘을 선택합니다. 턴 기반 게임에는 폴백 알고리즘을 사용하고 실시간 게임에는 예측 회전 알고리즘을 사용합니다.