

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 適用於 -- 動作的 C\# 伺服器 SDK Amazon GameLift Servers 5.x
<a name="integration-server-sdk5-csharp-actions"></a>

使用伺服器 SDK 5.x 參考整合多玩家遊戲，以便與 進行託管。 Amazon GameLift Servers如需整合程序的指引，請參閱 [使用伺服器 SDK 將 Amazon GameLift Servers新增至您的遊戲伺服器](gamelift-sdk-server-api.md)。如果您使用的是 Unity 的 Amazon GameLift Servers 外掛程式，另請參閱 [Amazon GameLift Servers Unity 的外掛程式 （伺服器 SDK 5.x)](unity-plug-in.md)。

[適用於 -- 資料類型的 C\# 伺服器 SDK Amazon GameLift Servers 5.x](integration-server-sdk5-csharp-datatypes.md)

**Topics**
+ [適用於 -- 資料類型的 C\# 伺服器 SDK Amazon GameLift Servers 5.x](integration-server-sdk5-csharp-datatypes.md)
+ [GetSdkVersion()](#integration-server-sdk5-csharp-getsdkversion)
+ [InitMetrics()](#integration-server-sdk5-csharp-initmetrics)
+ [InitSDK()](#integration-server-sdk5-csharp-initsdk)
+ [InitSDK()](#integration-server-sdk5-csharp-initsdk-anywhere)
+ [ProcessReady()](#integration-server-sdk5-csharp-processready)
+ [ProcessEnding()](#integration-server-sdk5-csharp-processending)
+ [ActivateGameSession()](#integration-server-sdk5-csharp-activategamesession)
+ [UpdatePlayerSessionCreationPolicy()](#integration-server-sdk5-csharp-updateplayersessioncreationpolicy)
+ [GetGameSessionId()](#integration-server-sdk5-csharp-getgamesessionid)
+ [GetTerminationTime()](#integration-server-sdk5-csharp-getterm)
+ [AcceptPlayerSession()](#integration-server-sdk5-csharp-acceptplayersession)
+ [RemovePlayerSession()](#integration-server-sdk5-csharp-removeplayersession)
+ [DescribePlayerSessions()](#integration-server-sdk5-csharp-describeplayersessions)
+ [StartMatchBackfill()](#integration-server-sdk5-csharp-startmatchbackfill)
+ [StopMatchBackfill()](#integration-server-sdk5-csharp-stopmatchbackfill)
+ [GetComputeCertificate()](#integration-server-sdk5-csharp-getcomputecertificate)
+ [GetFleetRoleCredentials()](#integration-server-sdk5-csharp-getfleetrolecredentials)
+ [Destroy()](#integration-server-sdk5-csharp-destroy)

## GetSdkVersion()
<a name="integration-server-sdk5-csharp-getsdkversion"></a>

傳回內建至伺服器程序的目前開發套件版本編號。

### 語法
<a name="integration-server-sdk5-csharp-getsdkversion-syntax"></a>

```
AwsStringOutcome GetSdkVersion();
```

### 傳回值
<a name="integration-server-sdk5-csharp-getsdkversion-return"></a>

如果成功，將目前開發套件版本以 [AwsStringOutcome](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-datatypes-awsstringoutcome) 物件傳回。傳回的字串包含版本號碼 （範例 `5.0.0`)。如果不成功，則會傳回錯誤訊息。

### 範例
<a name="integration-server-sdk5-csharp-getsdkversion-example"></a>

```
var getSdkVersionOutcome = GameLiftServerAPI.GetSdkVersion();
```

## InitMetrics()
<a name="integration-server-sdk5-csharp-initmetrics"></a>

初始化指標系統，以收集和報告伺服器效能資料。為了獲得最佳結果，請在 之前呼叫此方法[InitSDK()](#integration-server-sdk5-csharp-initsdk)，以在 SDK 初始化期間啟用指標收集。

### 語法
<a name="integration-server-sdk5-csharp-initmetrics-syntax"></a>

```
MetricsManagerOutcome InitMetrics();
MetricsManagerOutcome InitMetrics(MetricsParameters metricsParameters);
```

### Parameters
<a name="integration-server-sdk5-csharp-initmetrics-parameter"></a>

[MetricsParameters](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-datatypes-metricsparameters) (選用)  
指標集合的組態參數。如果未提供， 會使用可由環境變數覆寫的預設值。

### 傳回值
<a name="integration-server-sdk5-csharp-initmetrics-return"></a>

如果成功， 會傳回包含 MetricsManager 執行個體的[MetricsManagerOutcome](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-datatypes-metricsmanageroutcome)物件。如果不成功，則會傳回錯誤訊息。

### 範例
<a name="integration-server-sdk5-csharp-initmetrics-example"></a>

```
// Initialize with default parameters (uses environment variables if available)
var outcome = GameLiftServerAPI.InitMetrics();
if (outcome.Success) {
    var metricsManager = outcome.Result;
} else {
    Console.WriteLine("Failed to initialize metrics: " + outcome.Error.ErrorMessage);
}

// Initialize with custom parameters
var metricsParams = new MetricsParameters("localhost", 8125, "crash-host", 9999, 1000, 1024);
var customOutcome = GameLiftServerAPI.InitMetrics(metricsParams);
if (customOutcome.Success) {
    var metricsManager = customOutcome.Result;
}
```

## InitSDK()
<a name="integration-server-sdk5-csharp-initsdk"></a>

初始化受管 EC2 機群的 Amazon GameLift Servers SDK。在與 相關的任何其他初始化Amazon GameLift Servers發生之前，請在啟動時呼叫此方法。此方法會從主機環境讀取伺服器參數，以設定伺服器與服務之間的通訊Amazon GameLift Servers。它使用等冪符記，因此您可以在失敗時安全地重試此呼叫。

### 語法
<a name="integration-server-sdk5-csharp-initsdk-syntax"></a>

```
GenericOutcome InitSDK();
```

### 傳回值
<a name="integration-server-sdk5-csharp-initsdk-return"></a>

如果成功， 會傳回 InitSdkOutcome 物件，表示伺服器程序已準備好呼叫 [ProcessReady()](#integration-server-sdk5-csharp-processready)。

### 範例
<a name="integration-server-sdk5-csharp-initsdk-example"></a>

```
//Call InitSDK to establish a local connection with the GameLift agent to enable further communication.
GenericOutcome initSDKOutcome = GameLiftServerAPI.InitSDK();
```

## InitSDK()
<a name="integration-server-sdk5-csharp-initsdk-anywhere"></a>

初始化 Anywhere 機群的 Amazon GameLift Servers SDK。在與 相關的任何其他初始化Amazon GameLift Servers發生之前，請在啟動時呼叫此方法。此方法需要明確的伺服器參數，才能設定伺服器和服務之間的通訊Amazon GameLift Servers。它使用等冪符記，因此您可以在失敗時安全地重試此呼叫。

### 語法
<a name="integration-server-sdk5-csharp-initsdk-anywhere-syntax"></a>

```
GenericOutcome InitSDK(ServerParameters serverParameters);
```

### Parameters
<a name="integration-server-sdk5-csharp-initsdk-anywhere-parameter"></a>

[ServerParameters](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-dataypes-serverparameters)  
若要在 Amazon GameLift Servers Anywhere 機群上初始化遊戲伺服器，請使用下列資訊建構`ServerParameters`物件：  
+ 用來連線至遊戲伺服器的 WebSocket URL。
+ 用於託管遊戲伺服器的程序 ID。
+ 託管遊戲伺服器程序的運算 ID。
+ 包含 Amazon GameLift Servers Anywhere 運算的Amazon GameLift Servers機群 ID。
+ Amazon GameLift Servers 操作產生的授權字符。

### 傳回值
<a name="integration-server-sdk5-csharp-initsdk-anywhere-return"></a>

如果成功， 會傳回 InitSdkOutcome 物件，表示伺服器程序已準備好呼叫 [ProcessReady()](#integration-server-sdk5-csharp-processready)。

**注意**  
如果針對部署到 Anywhere 機群的遊戲組建呼叫`InitSDK()`失敗，請檢查建立組建資源時使用的`ServerSdkVersion`參數。您必須將此值明確設定為正在使用的伺服器 SDK 版本。此參數的預設值為 4.x，不相容。若要解決此問題，請建立新的組建，並將其部署到新的機群。

### 範例
<a name="integration-server-sdk5-csharp-initsdk-anywhere-example"></a>

```
//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()
<a name="integration-server-sdk5-csharp-processready"></a>

Amazon GameLift Servers 通知伺服器程序已準備好託管遊戲工作階段。叫用 後呼叫此方法[InitSDK()](#integration-server-sdk5-csharp-initsdk)。每個程序只能呼叫此方法一次。

### 語法
<a name="integration-server-sdk5-csharp-processready-syntax"></a>

```
GenericOutcome ProcessReady(ProcessParameters processParameters)
```

### Parameters
<a name="integration-server-sdk5-csharp-processready-parameter"></a>

**[ProcessParameters](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-dataypes-process)**  
`ProcessParameters` 物件會保留伺服器程序的相關資訊。

### 傳回值
<a name="integration-server-sdk5-csharp-processready-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-csharp-processready-example"></a>

此範例說明 方法和委派函數實作。

```
// 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()
<a name="integration-server-sdk5-csharp-processending"></a>

Amazon GameLift Servers 通知伺服器程序正在終止。在所有其他清除任務 （包括關閉作用中的遊戲工作階段） 之後，以及在終止程序之前，呼叫此方法。根據 的結果`ProcessEnding()`，程序會以成功 (0) 或錯誤 (-1) 結束並產生機群事件。如果程序因錯誤而終止，產生的機群事件為 `SERVER_PROCESS_TERMINATED_UNHEALTHY`。

### 語法
<a name="integration-server-sdk5-csharp-processending-syntax"></a>

```
GenericOutcome ProcessEnding()
```

### 傳回值
<a name="integration-server-sdk5-csharp-processending-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-csharp-processending-example"></a>

此範例會先呼叫 `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()
<a name="integration-server-sdk5-csharp-activategamesession"></a>

Amazon GameLift Servers 通知伺服器程序已啟用遊戲工作階段，現在已準備好接收玩家連線。在所有遊戲工作階段初始化之後，應該呼叫此動作做為回`onStartGameSession()`呼函數的一部分。

### 語法
<a name="integration-server-sdk5-csharp-activategamesession-syntax"></a>

```
GenericOutcome ActivateGameSession()
```

### 傳回值
<a name="integration-server-sdk5-csharp-activategamesession-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-csharp-activategamesession-example"></a>

此範例顯示的是做為 `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()
<a name="integration-server-sdk5-csharp-updateplayersessioncreationpolicy"></a>

更新目前遊戲工作階段的能力，以接受新的玩家工作階段。遊戲工作階段可設定為接受或拒絕所有新的玩家工作階段。

### 語法
<a name="integration-server-sdk5-csharp-updateplayersessioncreationpolicy-syntax"></a>

```
GenericOutcome UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy playerSessionPolicy)
```

### Parameters
<a name="integration-server-sdk5-csharp-updateplayersessioncreationpolicy-parameter"></a>

**playerSessionPolicy**  
指出遊戲工作階段是否接受新玩家的字串值。  
有效值包含：  
+ **ACCEPT\_ALL** – 接受所有新玩家工作階段。
+ **DENY\_ALL** – 拒絕所有新玩家工作階段。

### 傳回值
<a name="integration-server-sdk5-csharp-updateplayersessioncreationpolicy-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-csharp-updateplayersessioncreationpolicy-example"></a>

此範例設定目前遊戲工作階段的加入政策為可接受所有玩家。

```
GenericOutcome updatePlayerSessionPolicyOutcome = 
  GameLiftServerAPI.UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy.ACCEPT_ALL);
```

## GetGameSessionId()
<a name="integration-server-sdk5-csharp-getgamesessionid"></a>

擷取作用中伺服器程序託管的遊戲工作階段 ID。

對於未使用遊戲工作階段啟用的閒置程序，呼叫會傳回 [GameLiftError](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-datatypes-gamelifterror)。

### 語法
<a name="integration-server-sdk5-csharp-getgamesessionid-syntax"></a>

```
AwsStringOutcome GetGameSessionId()
```

### 傳回值
<a name="integration-server-sdk5-csharp-getgamesessionid-return"></a>

如果成功，則會把遊戲工作階段 ID 當成 [AwsStringOutcome](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-datatypes-awsstringoutcome) 物件傳回。如果不成功， 會傳回錯誤訊息。」

### 範例
<a name="integration-server-sdk5-csharp-getgamesessionid-example"></a>

```
AwsStringOutcome getGameSessionIdOutcome = GameLiftServerAPI.GetGameSessionId();
```

## GetTerminationTime()
<a name="integration-server-sdk5-csharp-getterm"></a>

若設有終止時間，即傳回伺服器程序排定關閉的時間。伺服器程序在收到來自 的回`onProcessTerminate()`呼後會採取此動作Amazon GameLift Servers。 Amazon GameLift Servers`onProcessTerminate()`會呼叫 ，原因如下：
+ 當伺服器程序回報運作狀態不佳或未回應 時Amazon GameLift Servers。
+ 在縮減規模事件期間終止執行個體時。
+ 當執行個體因 [spot-instance 中斷](spot-tasks.md)而終止時。

### 語法
<a name="integration-server-sdk5-csharp-getterm-syntax"></a>

```
AwsDateTimeOutcome GetTerminationTime()
```

### 傳回值
<a name="integration-server-sdk5-csharp-getterm-return"></a>

如果成功， 會將終止時間傳回為 [AwsDateTimeOutcome](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-datatypes-awsdatetimeoutcome) 物件。值是終止時間，以自 以來經過的刻度表示`0001 00:00:00`。例如，日期時間值`2020-09-13 12:26:40 -000Z`等於`637355968000000000`刻度。如果沒有可用的終止時間， 會傳回錯誤訊息。

### 範例
<a name="integration-server-sdk5-csharp-getterm-example"></a>

```
AwsDateTimeOutcome getTerminationTimeOutcome = GameLiftServerAPI.GetTerminationTime(); 
```

## AcceptPlayerSession()
<a name="integration-server-sdk5-csharp-acceptplayersession"></a>

Amazon GameLift Servers 通知具有指定玩家工作階段 ID 的玩家已連線至伺服器程序，且需要驗證。 Amazon GameLift Servers 會驗證玩家工作階段 ID 是否有效。驗證玩家工作階段後， 會將玩家位置Amazon GameLift Servers的狀態從 RESERVED 變更為 ACTIVE。

### 語法
<a name="integration-server-sdk5-csharp-acceptplayersession-syntax"></a>

```
GenericOutcome AcceptPlayerSession(String playerSessionId)
```

### Parameters
<a name="integration-server-sdk5-csharp-acceptplayersession-parameter"></a>

playerSessionId  
建立新的玩家工作階段時，GameLift 發行的唯一 ID。

### 傳回值
<a name="integration-server-sdk5-csharp-acceptplayersession-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-csharp-acceptplayersession-example"></a>

此範例展示了用來處理連線請求的函數，其處理過程包括驗證和拒絕無效的玩家工作階段 ID。

```
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()
<a name="integration-server-sdk5-csharp-removeplayersession"></a>

Amazon GameLift Servers 通知玩家已中斷與伺服器程序的連線。作為回應， Amazon GameLift Servers 會將玩家位置變更為可用。

### 語法
<a name="integration-server-sdk5-csharp-removeplayersession-syntax"></a>

```
GenericOutcome RemovePlayerSession(String playerSessionId)
```

### Parameters
<a name="integration-server-sdk5-csharp-removeplayersession-parameter"></a>

**playerSessionId**  
建立新玩家工作階段Amazon GameLift Servers時由 發出的唯一 ID。

### 傳回值
<a name="integration-server-sdk5-csharp-removeplayersession-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-csharp-removeplayersession-example"></a>

```
GenericOutcome removePlayerSessionOutcome = GameLiftServerAPI.RemovePlayerSession(playerSessionId);
```

## DescribePlayerSessions()
<a name="integration-server-sdk5-csharp-describeplayersessions"></a>

擷取玩家工作階段資料，其中包括設定、工作階段中繼資料和玩家資料。使用此動作可取得單一玩家工作階段資訊、一個遊戲工作階段中所有玩家工作階段的資訊，或是與單一玩家 ID 關聯的所有玩家工作階段資訊。

### 語法
<a name="integration-server-sdk5-csharp-describeplayersessions-syntax"></a>

```
DescribePlayerSessionsOutcome DescribePlayerSessions(DescribePlayerSessionsRequest describePlayerSessionsRequest)
```

### Parameters
<a name="integration-server-sdk5-csharp-describeplayersessions-parameter"></a>

**[DescribePlayerSessionsRequest](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-dataypes-playersessions)**  
描述要擷取哪些玩家工作階段的[DescribePlayerSessionsRequest](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-dataypes-playersessions)物件。

### 傳回值
<a name="integration-server-sdk5-csharp-describeplayersessions-return"></a>

如果成功， 會傳回[DescribePlayerSessionsOutcome](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-datatypes-describeplayersessionsoutcome)物件，其中包含一組符合請求參數的玩家工作階段物件。

### 範例
<a name="integration-server-sdk5-csharp-describeplayersessions-example"></a>

此範例展示了讓所有玩家工作階段均主動連線至指定之遊戲工作階段的請求。透過省略 *NextToken* 並將*限制*值設定為 10， Amazon GameLift Servers會傳回符合請求的前 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()
<a name="integration-server-sdk5-csharp-startmatchbackfill"></a>

此動作會傳送請求，以便替 FlexMatch 所建立的遊戲工作階段​開放空位找到新玩家。如需詳細資訊，請參閱[FlexMatch回填功能](https://docs.aws.amazon.com/gameliftservers/latest/flexmatchguide/match-backfill.html)。

此為非同步動作。如果新玩家相符， 會使用回呼函數 Amazon GameLift Servers交付更新的配對建構器資料`OnUpdateGameSession()`。

一個伺服器程序一次僅能有一個使用中的配對回填請求。若要發送新請求，請先呼叫 [StopMatchBackfill()](#integration-server-sdk5-csharp-stopmatchbackfill) 取消原始請求。

### 語法
<a name="integration-server-sdk5-csharp-startmatchbackfill-syntax"></a>

```
StartMatchBackfillOutcome StartMatchBackfill (StartMatchBackfillRequest startBackfillRequest);
```

### Parameters
<a name="integration-server-sdk5-csharp-startmatchbackfill-parameter"></a>

**[StartMatchBackfillRequest](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-dataypes-startmatchbackfillrequest)**  
`StartMatchBackfillRequest` 物件會保留有關回填請求的資訊。

### 傳回值
<a name="integration-server-sdk5-csharp-startmatchbackfill-return"></a>

傳回具有相符回填票證 ID 或失敗並顯示錯誤訊息的[StartMatchBackfillOutcome](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-datatypes-startmatchbackfilloutcome)物件。

### 範例
<a name="integration-server-sdk5-csharp-startmatchbackfill-example"></a>

```
// 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()
<a name="integration-server-sdk5-csharp-stopmatchbackfill"></a>

取消作用中的配對回填請求。如需詳細資訊，請參閱[FlexMatch回填功能](https://docs.aws.amazon.com/gameliftservers/latest/flexmatchguide/match-backfill.html)。

### 語法
<a name="integration-server-sdk5-csharp-stopmatchbackfill-syntax"></a>

```
GenericOutcome StopMatchBackfill (StopMatchBackfillRequest stopBackfillRequest);
```

### Parameters
<a name="integration-server-sdk5-csharp-stopmatchbackfill-parameter"></a>

**[StopMatchBackfillRequest](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-dataypes-stopmatchbackfillrequest)**  
提供您正在停止之配對票證詳細資訊的`StopMatchBackfillRequest`物件。

### 傳回值
<a name="integration-server-sdk5-csharp-stopmatchbackfill-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-csharp-stopmatchbackfill-example"></a>

```
// 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()
<a name="integration-server-sdk5-csharp-getcomputecertificate"></a>

 擷取用於加密遊戲伺服器與遊戲用戶端之間網路連線的 TLS 憑證路徑。您可以在向 Amazon GameLift Servers Anywhere 機群註冊運算裝置時使用憑證路徑。如需詳細資訊，請參閱 [RegisterCompute](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_RegisterCompute.html)。

### 語法
<a name="integration-server-sdk5-csharp-getcomputecertificate-syntax"></a>

```
GetComputeCertificateOutcome GetComputeCertificate();
```

### 傳回值
<a name="integration-server-sdk5-csharp-getcomputecertificate-return"></a>

傳回包含下列項目的 GetComputeCertificateResponse 物件：
+  CertificatePath：運算資源上 TLS 憑證的路徑。使用 Amazon GameLift Servers受管機群時，此路徑包含：
  + `certificate.pem`：最終使用者憑證。完整的憑證鏈是`certificateChain.pem`附加到此憑證的 組合。
  + `certificateChain.pem`：包含根憑證和中繼憑證的憑證鏈。
  + `rootCertificate.pem`：根憑證。
  + `privateKey.pem`：最終使用者憑證的私有金鑰。
+ ComputeName：運算資源的名稱。

### 範例
<a name="integration-server-sdk5-csharp-getcomputecertificate-example"></a>

```
GetComputeCertificateOutcome getComputeCertificateOutcome = GameLiftServerAPI.GetComputeCertificate();
```

## GetFleetRoleCredentials()
<a name="integration-server-sdk5-csharp-getfleetrolecredentials"></a>

擷取授權 與其他 互動的 IAM 角色登入Amazon GameLift Servers資料 AWS 服務。如需詳細資訊，請參閱[將Amazon GameLift Servers託管遊戲伺服器連接到其他 AWS 資源](gamelift-sdk-server-resources.md)。

### 語法
<a name="integration-server-sdk5-csharp-getfleetrolecredentials-syntax"></a>

```
GetFleetRoleCredentialsOutcome GetFleetRoleCredentials(GetFleetRoleCredentialsRequest request);
```

### Parameters
<a name="integration-server-sdk5-csharp-getfleetrolecredentials-parameters"></a>

[GetFleetRoleCredentialsRequest](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-dataypes-getfleetrolecredentialsrequest)  
角色登入資料，可將 AWS 資源的有限存取權延伸到遊戲伺服器。

### 傳回值
<a name="integration-server-sdk5-csharp-getfleetrolecredentials-return"></a>

其會傳回 [GetFleetRoleCredentialsOutcome](integration-server-sdk5-csharp-datatypes.md#integration-server-sdk5-csharp-datatypes-getfleetrolecredentialsoutcome) 物件。

### 範例
<a name="integration-server-sdk5-csharp-getfleetrolecredentials-example"></a>

```
// form the fleet credentials request  
GetFleetRoleCredentialsRequest getFleetRoleCredentialsRequest = new GetFleetRoleCredentialsRequest(){  
  RoleArn = "arn:aws:iam::123456789012:role/service-role/exampleGameLiftAction"  
};
GetFleetRoleCredentialsOutcome GetFleetRoleCredentialsOutcome credentials = GetFleetRoleCredentials(getFleetRoleCredentialsRequest);
```

## Destroy()
<a name="integration-server-sdk5-csharp-destroy"></a>

從記憶體釋放Amazon GameLift Servers遊戲伺服器 SDK。最佳實務是在終止程序之後`ProcessEnding()`和之前呼叫此方法。如果您使用的是 Anywhere 機群，而且沒有在每次遊戲工作階段後終止伺服器程序，請在通知程序已準備好使用 託管遊戲工作階段之前，先呼叫 Amazon GameLift Servers `Destroy()`，然後`InitSDK()`重新初始化 `ProcessReady()`。

### 語法
<a name="integration-server-sdk5-csharp-destroy-syntax"></a>

```
GenericOutcome Destroy()
```

### 傳回值
<a name="integration-server-sdk5-csharp-destroy-return"></a>

傳回一般結果，其中包含成功或失敗以及錯誤訊息。

### 範例
<a name="integration-server-sdk5-csharp-destroy-example"></a>

```
// 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); 
  }
```