기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
C# 및 Unity용 Amazon GameLift Server SDK 5.x: 작업
Amazon GameLift C# 서버 SDK 5.x 참조를 사용하여 호스팅을 위한 멀티플레이어 게임을 Amazon 와 통합합니다 GameLift. 통합 프로세스에 대한 지침은 섹션을 참조하세요 GameLift 게임 서버에 Amazon 추가. Amazon GameLift 플러그인 for Unity를 사용하는 경우 를 참조하세요Unity용 Amazon GameLift 플러그인(서버 SDK 5.x).
C# 및 Unity용 Amazon GameLift Server SDK 5.x: 데이터 유형
주제
- GetSdkVersion()
- 초기화SDK()
- 초기화SDK()
- ProcessReady()
- ProcessEnding()
- ActivateGameSession()
- UpdatePlayerSessionCreationPolicy()
- GetGameSessionId()
- GetTerminationTime()
- AcceptPlayerSession()
- RemovePlayerSession()
- DescribePlayerSessions()
- StartMatchBackfill()
- StopMatchBackfill()
- GetComputeCertificate()
- GetFleetRoleCredentials()
- Destroy()
GetSdkVersion()
서버 프로세스에 SDK 내장된 의 현재 버전 번호를 반환합니다.
구문
AwsStringOutcome GetSdkVersion();
반환 값
성공하면 는 현재 SDK 버전을 AwsStringOutcome 객체로 반환합니다. 반환된 문자열에는 버전 번호(예: 5.0.0
)가 포함됩니다. 실패하면 오류 메시지를 반환합니다.
예
var getSdkVersionOutcome = GameLiftServerAPI.GetSdkVersion();
초기화SDK()
관리형 EC2플릿에 대해 Amazon GameLift SDK을 초기화합니다. Amazon과 관련된 다른 초기화가 GameLift 발생하기 전에 시작 시 이 메서드를 호출합니다. 이 메서드는 호스트 환경에서 서버 파라미터를 읽고 서버와 Amazon GameLift 서비스 간의 통신을 설정합니다.
구문
GenericOutcome InitSDK();
반환 값
성공하면 는 서버 프로세스가 를 호출할 준비가 되었음을 나타내는 InitSdkOutcome 객체를 반환합니다ProcessReady().
예
//Call InitSDK to establish a local connection with the GameLift agent to enable further communication. GenericOutcome initSDKOutcome = GameLiftServerAPI.InitSDK();
초기화SDK()
에 대한 Amazon GameLift SDK을 초기화합니다.Anywhere 플릿. Amazon과 관련된 다른 초기화가 GameLift 발생하기 전에 시작 시 이 메서드를 호출합니다. 이 메서드에서는 서버와 Amazon GameLift 서비스 간의 통신을 설정하기 위해 명시적 서버 파라미터가 필요합니다.
구문
GenericOutcome InitSDK(ServerParameters serverParameters);
파라미터
- ServerParameters
-
Amazon에서 게임 서버를 초기화하려면 GameLift Anywhere 플릿에서 다음 정보를 사용하여
ServerParameters
객체를 구성합니다.-
게임 서버에 연결하는 데 WebSocket 사용되는 URL의 .
-
게임 서버를 호스팅하는 데 사용되는 프로세스의 ID입니다.
-
게임 서버 프로세스를 호스팅하는 컴퓨팅의 ID입니다.
-
Amazon이 포함된 Amazon GameLift 플릿의 ID GameLift Anywhere 컴퓨팅.
-
Amazon GameLift 작업에서 생성된 권한 부여 토큰입니다.
-
반환 값
성공하면 는 서버 프로세스가 를 호출할 준비가 되었음을 나타내는 InitSdkOutcome 객체를 반환합니다ProcessReady().
참고
Anywhere 플릿에 배포된 게임 빌드에 대한 InitSDK()
로의 호출이 실패하는 경우 빌드 리소스를 생성할 때 사용된 ServerSdkVersion
파라미터를 확인합니다. 이 값을 사용 중인 서버 SDK 버전으로 명시적으로 설정해야 합니다. 이 파라미터의 기본값은 4.x이며 호환되지 않습니다. 이 문제를 해결하려면 새 빌드를 생성하여 새 플릿에 배포해야 합니다.
예
//Define the server parameters string websocketUrl = "
wss://us-west-1.api.amazongamelift.com
"; string processId = "PID1234
"; string fleetId = "aarn:aws:gamelift:us-west-1:111122223333:fleet/fleet-9999ffff-88ee-77dd-66cc-5555bbbb44aa
"; string hostId = "HardwareAnywhere
"; string authToken = "1111aaaa-22bb-33cc-44dd-5555eeee66ff
"; ServerParameters serverParameters = new ServerParameters(webSocketUrl, processId, hostId, fleetId, authToken); //Call InitSDK to establish a local connection with the GameLift agent to enable further communication. GenericOutcome initSDKOutcome = GameLiftServerAPI.InitSDK(serverParameters);
ProcessReady()
서버 프로세스가 게임 세션을 호스팅할 준비가 GameLift 되었음을 Amazon에 알립니다. 초기화SDK() 호출 후 이 메서드를 호출합니다. 이 메서드는 프로세스당 한 번만 호출해야 합니다.
구문
GenericOutcome ProcessReady(ProcessParameters processParameters)
파라미터
- ProcessParameters
-
ProcessParameters
객체에는 서버 프로세스에 대한 정보가 들어 있습니다.
반환 값
성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.
예
이 예에서는 메서드 및 위임 함수 구현을 모두 보여줍니다.
// Set parameters and call ProcessReady ProcessParameters processParams = new ProcessParameters( this.OnStartGameSession, this.OnProcessTerminate, this.OnHealthCheck, this.OnUpdateGameSession, port, new LogParameters(new List<string>() // Examples of log and error files written by the game server { "
C:\\game\\logs
", "C:\\game\\error
" }) ); GenericOutcome processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams);
ProcessEnding()
서버 프로세스가 종료되고 GameLift 있음을 Amazon에 알립니다. 다른 모든 정리 작업(활성 게임 세션 종료 포함) 후 프로세스를 종료하기 전에 이 방법을 호출합니다. ProcessEnding()
의 결과에 따라 프로세스가 성공(0) 또는 오류(-1)로 종료되고 플릿 이벤트가 생성됩니다. 프로세스가 오류로 종료되면 생성된 플릿 이벤트는 입니다SERVER_PROCESS_TERMINATED_UNHEALTHY
.
구문
GenericOutcome ProcessEnding()
반환 값
성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.
예
이 예제에서는 성공 또는 오류 발생 시 서버 프로세스를 종료하기 전에 ProcessEnding()
및 Destroy()
를 호출합니다.
GenericOutcome processEndingOutcome = GameLiftServerAPI.ProcessEnding(); GameLiftServerAPI.Destroy(); if (processEndingOutcome.Success) { Environment.Exit(0); } else { Console.WriteLine("ProcessEnding() failed. Error: " + processEndingOutcome.Error.ToString()); Environment.Exit(-1); }
ActivateGameSession()
서버 프로세스가 게임 세션을 활성화했으며 이제 플레이어 연결을 수신할 준비가 GameLift 되었음을 Amazon에 알립니다. 이 작업은 모든 게임 세션 초기화 후 onStartGameSession()
콜백 함수의 일부로 호출되어야 합니다.
구문
GenericOutcome ActivateGameSession()
반환 값
성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.
예
이 예에서는 onStartGameSession()
위임 함수의 일부로 ActivateGameSession()
이 호출되는 것을 보여줍니다.
void OnStartGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // When ready to receive players GenericOutcome activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); }
UpdatePlayerSessionCreationPolicy()
현재 게임 세션의 새 플레이어 세션 수락 가능성을 업데이트합니다. 모든 새 플레이어 세션을 수락하거나 거부하도록 게임 세션을 설정할 수 있습니다.
구문
GenericOutcome UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy playerSessionPolicy)
파라미터
- playerSessionPolicy
-
게임 세션이 새 플레이어를 수락하는지 여부를 나타내는 문자열 값입니다.
유효한 값으로는 다음이 포함됩니다.
-
ACCEPT_ALL – 모든 새 플레이어 세션을 수락합니다.
-
DENY_ALL – 모든 새 플레이어 세션을 거부합니다.
-
반환 값
성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.
예
이 예는 모든 플레이어를 수락하도록 현재 게임 세션의 참여 정책을 설정합니다.
GenericOutcome updatePlayerSessionPolicyOutcome = GameLiftServerAPI.UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy.
ACCEPT_ALL
);
GetGameSessionId()
활성 서버 프로세스가 호스팅된 게임 세션의 ID를 가져옵니다.
게임 세션으로 활성화되지 않은 유휴 프로세스의 경우 호출은 GameLiftError를 반환합니다.
구문
AwsStringOutcome GetGameSessionId()
반환 값
성공하면 게임 세션 ID를 AwsStringOutcome 객체로 반환합니다. 실패하면 오류 메시지를 반환합니다.
예
AwsStringOutcome getGameSessionIdOutcome = GameLiftServerAPI.GetGameSessionId();
GetTerminationTime()
종료 시간을 사용할 수 있는 경우 서버 프로세스가 종료되도록 예약된 시간을 반환합니다. 서버 프로세스는 Amazon 에서 onProcessTerminate()
콜백을 수신한 후 이 작업을 수행합니다 GameLift. Amazon은 다음과 같은 이유로 onProcessTerminate()
를 GameLift 호출합니다.
-
서버 프로세스가 불량 상태를 보고했거나 Amazon 에 응답하지 않은 경우 GameLift.
-
스케일 다운 이벤트 중에 인스턴스를 종료하는 경우
-
스팟 인스턴스 중단으로 인해 인스턴스가 종료되는 경우
구문
AwsDateTimeOutcome GetTerminationTime()
반환 값
성공하면 종료 시간을 AwsDateTimeOutcome 객체로 반환합니다. 값은 종료 시간이며, 0001 00:00:00
이후 경과된 틱 수로 표시됩니다. 예를 들어, 날짜 시간 값 2020-09-13
12:26:40 -000Z
는 637355968000000000
틱 수와 같습니다. 사용 가능한 종료 시간이 없는 경우 오류 메시지를 반환합니다.
예
AwsDateTimeOutcome getTerminationTimeOutcome = GameLiftServerAPI.GetTerminationTime();
AcceptPlayerSession()
지정된 플레이어 세션 ID를 가진 플레이어 GameLift 가 서버 프로세스에 연결되었으며 검증이 필요함을 Amazon에 알립니다. Amazon은 플레이어 세션 ID가 유효한지 GameLift 확인합니다. 플레이어 세션이 검증되면 Amazon은 플레이어 슬롯의 상태를 에서 RESERVED로 GameLift 변경합니다ACTIVE.
구문
GenericOutcome AcceptPlayerSession(String playerSessionId)
파라미터
- playerSessionId
-
새 플레이어 세션이 생성될 GameLift 때 에서 발급한 고유 ID입니다.
반환 값
성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.
예
이 예제에서는 잘못된 플레이어 세션 검증 및 거부를 포함하여 연결 요청을 처리하는 함수를 보여줍니다IDs.
void ReceiveConnectingPlayerSessionID (Connection connection, String playerSessionId) { GenericOutcome acceptPlayerSessionOutcome = GameLiftServerAPI.AcceptPlayerSession(playerSessionId); if(acceptPlayerSessionOutcome.Success) { connectionToSessionMap.emplace(connection, playerSessionId); connection.Accept(); } else { connection.Reject(acceptPlayerSessionOutcome.Error.ErrorMessage); } }
RemovePlayerSession()
플레이어 GameLift 가 서버 프로세스에서 연결 해제되었음을 Amazon에 알립니다. 이에 대한 응답으로 Amazon은 플레이어 슬롯을 사용 가능으로 GameLift 변경합니다.
구문
GenericOutcome RemovePlayerSession(String playerSessionId)
파라미터
- playerSessionId
-
새 플레이어 세션이 생성될 GameLift 때 Amazon에서 발급한 고유 ID입니다.
반환 값
성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.
예
GenericOutcome removePlayerSessionOutcome = GameLiftServerAPI.RemovePlayerSession(playerSessionId);
DescribePlayerSessions()
설정, 세션 메타데이터 및 플레이어 데이터 등의 플레이어 세션 데이터를 가져옵니다. 이 작업을 사용하면 단일 플레이어 세션 정보, 게임 세션에 있는 모든 플레이어 세션 정보 또는 단일 플레이어 ID와 관련된 모든 플레이어 세션 정보를 가져올 수 있습니다.
구문
DescribePlayerSessionsOutcome DescribePlayerSessions(DescribePlayerSessionsRequest describePlayerSessionsRequest)
파라미터
- DescribePlayerSessionsRequest
-
검색할 플레이어 세션을 설명하는 DescribePlayerSessionsRequest 객체입니다.
반환 값
성공하는 경우, 요청 파라미터에 적합한 플레이어 세션 객체 집합이 들어 있는 DescribePlayerSessionsOutcome 객체를 반환합니다.
예
다음은 지정된 게임 세션에 활성 상태로 연결되어 있는 모든 플레이어 세션을 검색하는 요청을 보여주는 예입니다. 제한 값을 생략NextToken하고 10으로 설정하면 Amazon GameLift 은 요청과 일치하는 처음 10개의 플레이어 세션 레코드를 반환합니다.
// Set request parameters DescribePlayerSessionsRequest describePlayerSessionsRequest = new DescribePlayerSessionsRequest() { GameSessionId = GameLiftServerAPI.GetGameSessionId().Result, //gets the ID for the current game session Limit =
10
, PlayerSessionStatusFilter = PlayerSessionStatusMapper.GetNameForPlayerSessionStatus(PlayerSessionStatus.ACTIVE
) }; // Call DescribePlayerSessions DescribePlayerSessionsOutcome describePlayerSessionsOutcome = GameLiftServerAPI.DescribePlayerSessions(describePlayerSessionsRequest);
StartMatchBackfill()
로 생성된 게임 세션에서 열린 슬롯의 새 플레이어를 찾으라는 요청을 보냅니다 FlexMatch. 자세한 내용은 FlexMatch 채우기 기능 을 참조하세요.
이 작업은 비동기식입니다. 새 플레이어가 일치하면 Amazon은 콜백 함수 를 사용하여 업데이트된 매치메이커 데이터를 GameLift 제공합니다OnUpdateGameSession()
.
서버 프로세스는 한 번에 하나의 활성 매치 채우기 요청만 할 수 있습니다. 새 요청을 보내려면 먼저 StopMatchBackfill()을 호출하여 원본 요청을 취소해야 합니다.
구문
StartMatchBackfillOutcome StartMatchBackfill (StartMatchBackfillRequest startBackfillRequest);
파라미터
- StartMatchBackfillRequest
-
StartMatchBackfillRequest
객체에는 채우기 요청에 대한 정보가 들어 있습니다.
반환 값
매치 채우기 티켓 ID와 함께 StartMatchBackfillOutcome 객체나 오류 메시지를 포함한 결함을 반환합니다.
예
// Build a backfill request StartMatchBackfillRequest startBackfillRequest = new StartMatchBackfillRequest() { TicketId = "
1111aaaa-22bb-33cc-44dd-5555eeee66ff
", //optional MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig
", GameSessionId = GameLiftServerAPI.GetGameSessionId().Result, // gets ID for current game session MatchmakerData matchmakerData = MatchmakerData.FromJson(gameSession.MatchmakerData), // gets matchmaker data for current players // get matchmakerData.Players // remove data for players who are no longer connected Players = ListOfPlayersRemainingInTheGame }; // Send backfill request StartMatchBackfillOutcome startBackfillOutcome = GameLiftServerAPI.StartMatchBackfill(startBackfillRequest); // Implement callback function for backfill void OnUpdateGameSession(GameSession myGameSession) { // game-specific tasks to prepare for the newly matched players and update matchmaker data as needed }
StopMatchBackfill()
활성 매치 채우기 요청을 취소합니다. 자세한 내용은 FlexMatch 채우기 기능 을 참조하세요.
구문
GenericOutcome StopMatchBackfill (StopMatchBackfillRequest stopBackfillRequest);
파라미터
- StopMatchBackfillRequest
-
중단하려는 매치메이킹 티켓에 대한 세부 정보를 제공하는
StopMatchBackfillRequest
객체입니다.
반환 값
성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.
예
// Set backfill stop request parameters StopMatchBackfillRequest stopBackfillRequest = new StopMatchBackfillRequest(){ TicketId = "
1111aaaa-22bb-33cc-44dd-5555eeee66ff
", //optional, if not provided one is autogenerated MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig
", GameSessionId = GameLiftServerAPI.GetGameSessionId().Result //gets the ID for the current game session }; GenericOutcome stopBackfillOutcome = GameLiftServerAPI.StopMatchBackfillRequest(stopBackfillRequest);
GetComputeCertificate()
게임 서버와 게임 클라이언트 간의 네트워크 연결을 암호화하는 데 사용되는 TLS 인증서 경로를 검색합니다. Amazon에 컴퓨팅 디바이스를 등록할 때 인증서 경로를 사용할 수 있습니다. GameLift Anywhere 플릿. 자세한 내용은 섹션을 참조하세요RegisterCompute.
구문
GetComputeCertificateOutcome GetComputeCertificate();
반환 값
다음을 포함하는 GetComputeCertificateResponse 객체를 반환합니다.
-
CertificatePath: 컴퓨팅 리소스의 TLS 인증서 경로입니다. Amazon GameLift 관리형 플릿을 사용하는 경우 이 경로에는 다음이 포함됩니다.
-
certificate.pem
: 최종 사용자 인증서입니다. 전체 인증서 체인은 이 인증서에 추가된certificateChain.pem
의 조합입니다. -
certificateChain.pem
: 루트 인증서와 중간 인증서를 포함하는 인증서 체인입니다. -
rootCertificate.pem
: 루트 인증서입니다. -
privateKey.pem
: 최종 사용자 인증서의 프라이빗 키입니다.
-
-
ComputeName: 컴퓨팅 리소스의 이름입니다.
예
GetComputeCertificateOutcome getComputeCertificateOutcome = GameLiftServerAPI.GetComputeCertificate();
GetFleetRoleCredentials()
Amazon이 다른 와 상호 작용 GameLift 할 수 있는 권한을 부여하는 IAM 역할 자격 증명을 검색합니다 AWS 서비스. 자세한 내용은 플릿의 다른 AWS 리소스와 통신 단원을 참조하십시오.
구문
GetFleetRoleCredentialsOutcome GetFleetRoleCredentials(GetFleetRoleCredentialsRequest request);
파라미터
- GetFleetRoleCredentialsRequest
-
AWS 리소스에 대한 제한된 액세스를 게임 서버로 확장하는 역할 자격 증명입니다.
반환 값
GetFleetRoleCredentialsOutcome 객체를 반환합니다.
예
// form the fleet credentials request GetFleetRoleCredentialsRequest getFleetRoleCredentialsRequest = new GetFleetRoleCredentialsRequest(){ RoleArn = "
arn:aws:iam::123456789012:role/service-role/exampleGameLiftAction
" }; GetFleetRoleCredentialsOutcome GetFleetRoleCredentialsOutcome credentials = GetFleetRoleCredentials(getFleetRoleCredentialsRequest);
Destroy()
Amazon GameLift 게임 서버를 메모리SDK에서 해제합니다. ProcessEnding()
이후 및 프로세스를 종료하기 전에 이 메서드를 호출하는 것이 가장 좋습니다. Anywhere 플릿을 사용하고 있고 모든 게임 세션 후 서버 프로세스를 종료하지 않는 경우 InitSDK()
를 호출Destroy()
한 다음 다시 초기화한 다음 Amazon에 프로세스가 로 게임 세션을 호스팅할 준비가 GameLift 되었음을 알립니다ProcessReady()
.
구문
GenericOutcome Destroy()
반환 값
성공 또는 실패와 함께 오류 메시지로 구성된 일반적인 결과를 반환합니다.
예
// Operations to end game sessions and the server process GenericOutcome processEndingOutcome = GameLiftServerAPI.ProcessEnding(); // Shut down and destroy the instance of the GameLift Game Server SDK GenericOutcome destroyOutcome = GameLiftServerAPI.Destroy(); // Exit the process with success or failure if (processEndingOutcome.Success) { Environment.Exit(0); } else { Console.WriteLine("ProcessEnding() failed. Error: " + processEndingOutcome.Error.ToString()); Environment.Exit(-1); }