Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
SDK 5.x per server C# GameLift Server Amazon -- Azioni
Usa il riferimento al server SDK 5.x per integrare il tuo gioco multiplayer con cui eseguire l'hosting. Amazon GameLift Servers Per indicazioni sul processo di integrazione, consulta. Add (Aggiungi) GameLift Server Amazon al tuo server di gioco con il server SDK Se stai usando il Amazon GameLift Servers plugin per Unity, vedi ancheGameLift Server Amazon plugin per Unity (server SDK 5.x).
SDK 5.x per server C# GameLift Server Amazon -- Tipi di dati
Argomenti
GetSdkVersion()
Restituisce il numero di versione corrente dell'SDK integrato nel processo del server.
Sintassi
AwsStringOutcome GetSdkVersion();
Valore restituito
Se l'esito è positivo, restituisce la versione corrente dell'SDK come oggetto AwsStringOutcome. La stringa restituita include il numero di versione (esempio5.0.0). Se l'esito è negativo, verrà restituito un messaggio di errore.
Esempio
var getSdkVersionOutcome = GameLiftServerAPI.GetSdkVersion();
InitMetrics()
Inizializza il sistema di metriche per la raccolta e la segnalazione dei dati sulle prestazioni del server. Per ottenere risultati ottimali, chiama questo metodo prima per abilitare la raccolta delle metriche InitSDK() durante l'inizializzazione dell'SDK.
Sintassi
MetricsManagerOutcome InitMetrics(); MetricsManagerOutcome InitMetrics(MetricsParameters metricsParameters);
Parameters
- MetricsParameters (facoltativo)
-
Parametri di configurazione per la raccolta delle metriche. Se non fornito, utilizza valori predefiniti che possono essere sovrascritti dalle variabili di ambiente.
Valore restituito
In caso di successo, restituisce un MetricsManagerOutcome oggetto contenente l' MetricsManager istanza. Se l'esito è negativo, verrà restituito un messaggio di errore.
Esempio
// 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()
Inizializza l'Amazon GameLift ServersSDK per una flotta EC2 gestita. Chiama questo metodo all'avvio, prima che avvenga qualsiasi altra inizializzazione correlata. Amazon GameLift Servers Questo metodo legge i parametri del server dall'ambiente host per configurare la comunicazione tra il server e il Amazon GameLift Servers servizio. Utilizza un token di idempotenza, quindi puoi riprovare tranquillamente questa chiamata quando fallisce.
Sintassi
GenericOutcome InitSDK();
Valore restituito
In caso di successo, restituisce un InitSdkOutcome oggetto per indicare che il processo del server è pronto per la chiamata. ProcessReady()
Esempio
//Call InitSDK to establish a local connection with the GameLift agent to enable further communication. GenericOutcome initSDKOutcome = GameLiftServerAPI.InitSDK();
InitSDK()
Inizializza l'Amazon GameLift ServersSDK per una flotta Anywhere. Chiama questo metodo all'avvio, prima che avvenga qualsiasi altra inizializzazione correlata. Amazon GameLift Servers Questo metodo richiede parametri server espliciti per impostare la comunicazione tra il server e il Amazon GameLift Servers servizio. Utilizza un token di idempotenza, quindi puoi riprovare tranquillamente questa chiamata quando fallisce.
Sintassi
GenericOutcome InitSDK(ServerParameters serverParameters);
Parameters
- ServerParameters
-
Per inizializzare un server di gioco su una flotta Amazon GameLift Servers Anywhere, costruisci un
ServerParametersoggetto con le seguenti informazioni:-
L'URL WebSocket utilizzato per la connessione al tuo server di gioco.
-
L'ID del processo utilizzato per ospitare il tuo server di gioco.
-
L'ID del computer che ospita i processi del server di gioco.
-
L'ID del Amazon GameLift Servers parco macchine contenente il tuo computer Amazon GameLift Servers Anywhere.
-
Il token di autorizzazione generato dall'Amazon GameLift Serversoperazione.
-
Valore restituito
In caso di successo, restituisce un InitSdkOutcome oggetto per indicare che il processo del server è pronto per la chiamataProcessReady().
Nota
Se le chiamate a non InitSDK() riescono per le build di gioco distribuite alle flotte di Anywhere, controlla il ServerSdkVersion parametro utilizzato durante la creazione della risorsa di compilazione. Devi impostare esplicitamente questo valore sulla versione SDK del server in uso. Il valore predefinito per questo parametro è 4.x, che non è compatibile. Per risolvere questo problema, crea una nuova build e distribuiscila in una nuova flotta.
Esempio
//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()
Notifica Amazon GameLift Servers che il processo del server è pronto per ospitare sessioni di gioco. Chiama questo metodo dopo averlo InitSDK() richiamato. Questo metodo deve essere chiamato solo una volta per processo.
Sintassi
GenericOutcome ProcessReady(ProcessParameters processParameters)
Parameters
- ProcessParameters
-
Un
ProcessParametersoggetto contiene informazioni sul processo del server.
Valore restituito
Restituisce un risultato generico costituito da un esito positivo o negativo con un messaggio di errore.
Esempio
Questo esempio illustra le implementazioni del metodo e della funzione delegata.
// 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()
Notifica Amazon GameLift Servers che il processo server sta terminando. Chiama questo metodo dopo tutte le altre attività di pulizia (inclusa la chiusura della sessione di gioco attiva) e prima di terminare il processo. A seconda del risultatoProcessEnding(), il processo termina con successo (0) o errore (-1) e genera un evento relativo alla flotta. Se il processo termina con un errore, l'evento relativo alla flotta generato è. SERVER_PROCESS_TERMINATED_UNHEALTHY
Sintassi
GenericOutcome ProcessEnding()
Valore restituito
Restituisce un risultato generico costituito da un esito positivo o negativo con un messaggio di errore.
Esempio
Questo esempio chiama ProcessEnding() e Destroy() prima termina il processo del server con un codice di uscita di successo o errore.
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()
Notifica Amazon GameLift Servers che il processo server ha attivato una sessione di gioco ed è ora pronto a ricevere le connessioni dei giocatori. Questa azione dovrebbe essere richiamata come parte della funzione di onStartGameSession() callback, dopo l'inizializzazione della sessione di gioco.
Sintassi
GenericOutcome ActivateGameSession()
Valore restituito
Restituisce un risultato generico costituito da un esito positivo o negativo con un messaggio di errore.
Esempio
Questo esempio illustra la chiamata a ActivateGameSession() nell'ambito della funzione delegata onStartGameSession().
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()
Aggiorna la capacità della sessione di gioco corrente di accettare nuove sessioni giocatore. Una sessione di gioco può essere configurata per accettare o rifiutare tutte le nuove sessioni giocatore.
Sintassi
GenericOutcome UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy playerSessionPolicy)
Parameters
- giocatore SessionPolicy
-
Valore di stringa che indica se la sessione di gioco accetta nuovi giocatori.
I valori validi includono:
-
ACCEPT_ALL: accetta tutte le nuove sessioni giocatore.
-
DENY_ALL: rifiuta tutte le nuove sessioni giocatore.
-
Valore restituito
Restituisce un risultato generico costituito da un esito positivo o negativo con un messaggio di errore.
Esempio
Questo esempio definisce la policy di partecipazione alla sessione di gioco corrente per accettare tutti i giocatori.
GenericOutcome updatePlayerSessionPolicyOutcome = GameLiftServerAPI.UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy.ACCEPT_ALL);
GetGameSessionId()
Recupera l'ID della sessione di gioco ospitata dal processo del server attivo.
Per i processi inattivi che non vengono attivati durante una sessione di gioco, la chiamata restituisce un. GameLiftError
Sintassi
AwsStringOutcome GetGameSessionId()
Valore restituito
Se l'esito è positivo, l'ID della sessione di gioco verrà restituito come oggetto AwsStringOutcome. In caso di esito negativo, restituisce un messaggio di errore.»
Esempio
AwsStringOutcome getGameSessionIdOutcome = GameLiftServerAPI.GetGameSessionId();
GetTerminationTime()
Restituisce il tempo di arresto pianificato di un processo del server, se è disponibile un tempo di chiusura. Un processo server esegue questa azione dopo aver ricevuto una onProcessTerminate() richiamata daAmazon GameLift Servers. Amazon GameLift Serverschiamate onProcessTerminate() per i seguenti motivi:
-
Quando il processo del server ha segnalato problemi di salute o non ha risposto. Amazon GameLift Servers
-
Quando si termina l'istanza durante un evento di ridimensionamento.
-
Quando un'istanza viene terminata a causa di un'interruzione occasionale dell'istanza. Crea una coda per le istanze Spot
Sintassi
AwsDateTimeOutcome GetTerminationTime()
Valore restituito
In caso di successo, restituisce l'ora di terminazione come oggetto. AwsDateTimeOutcome Il valore è il tempo di terminazione, espresso in tick trascorsi da allora. 0001 00:00:00 Ad esempio, il valore della data e dell'ora 2020-09-13
12:26:40 -000Z è uguale ai tick. 637355968000000000 Se non è disponibile un'ora di cessazione, restituisce un messaggio di errore.
Esempio
AwsDateTimeOutcome getTerminationTimeOutcome = GameLiftServerAPI.GetTerminationTime();
AcceptPlayerSession()
Notifica Amazon GameLift Servers che un giocatore con l'ID di sessione specificato si è connesso al processo del server e deve essere convalidato. Amazon GameLift Serversverifica che l'ID della sessione del giocatore sia valido. Dopo che la sessione del giocatore è stata convalidata, Amazon GameLift Servers cambia lo stato dello slot del giocatore da RISERVATO a ATTIVO.
Sintassi
GenericOutcome AcceptPlayerSession(String playerSessionId)
Parameters
- giocatore SessionId
-
ID univoco rilasciato GameLift quando viene creata una nuova sessione di gioco.
Valore restituito
Restituisce un risultato generico costituito da un esito positivo o negativo con un messaggio di errore.
Esempio
Questo esempio illustra una funzione per gestire una richiesta di connessione, inclusi la convalida e il rifiuto di ID di sessioni giocatore non validi.
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()
Notifica Amazon GameLift Servers che un giocatore si è disconnesso dal processo del server. In risposta, imposta lo Amazon GameLift Servers slot del giocatore in disponibile.
Sintassi
GenericOutcome RemovePlayerSession(String playerSessionId)
Parameters
- giocatore SessionId
-
ID univoco rilasciato Amazon GameLift Servers quando viene creata una nuova sessione di gioco.
Valore restituito
Restituisce un risultato generico costituito da un esito positivo o negativo con un messaggio di errore.
Esempio
GenericOutcome removePlayerSessionOutcome = GameLiftServerAPI.RemovePlayerSession(playerSessionId);
DescribePlayerSessions()
Recupera i dati della sessione del giocatore che includono impostazioni, metadati della sessione e dati del giocatore. Utilizza questa operazione per ottenere le informazioni per una singola sessione giocatore, per tutte le sessioni giocatore in una sessione di gioco o per tutte le sessioni giocatore associate a un singolo ID giocatore.
Sintassi
DescribePlayerSessionsOutcome DescribePlayerSessions(DescribePlayerSessionsRequest describePlayerSessionsRequest)
Parameters
- DescribePlayerSessionsRequest
-
Un DescribePlayerSessionsRequest oggetto che descrive quali sessioni del giocatore recuperare.
Valore restituito
In caso di successo, restituisce un DescribePlayerSessionsOutcome oggetto che contiene un set di oggetti di sessione del giocatore che corrispondono ai parametri della richiesta.
Esempio
Questo esempio illustra una richiesta per tutte le sessioni giocatore attivamente connesse a una sessione di gioco specificata. Omettendo NextToken e impostando il valore Limit su 10, Amazon GameLift Servers restituirà i record delle prime 10 sessioni dei giocatori che corrispondono alla richiesta.
// 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()
Invia una richiesta per trovare nuovi giocatori per gli slot aperti in una sessione di gioco creata con FlexMatch. Per ulteriori informazioni, consulta la funzione di FlexMatch backfill.
Questa operazione è asincrona. Se vengono abbinati nuovi giocatori, Amazon GameLift Servers fornisce dati aggiornati sul matchmaker utilizzando la funzione di callback. OnUpdateGameSession()
Un processo del server può avere un solo backfill degli abbinamenti attivo alla volta. Per inviare una nuova richiesta, chiama prima StopMatchBackfill() per annullare la richiesta originale.
Sintassi
StartMatchBackfillOutcome StartMatchBackfill (StartMatchBackfillRequest startBackfillRequest);
Parameters
- StartMatchBackfillRequest
-
Un
StartMatchBackfillRequestoggetto contiene informazioni sulla richiesta di backfill.
Valore restituito
Restituisce un StartMatchBackfillOutcome oggetto con l'ID del ticket di backfill corrispondente o un errore con un messaggio di errore.
Esempio
// 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()
Annulla una richiesta di backfill di una partita attiva. Per ulteriori informazioni, consulta la funzione di FlexMatch backfill.
Sintassi
GenericOutcome StopMatchBackfill (StopMatchBackfillRequest stopBackfillRequest);
Parameters
- StopMatchBackfillRequest
-
Un
StopMatchBackfillRequestoggetto che fornisce dettagli sul ticket di matchmaking che stai interrompendo.
Valore restituito
Restituisce un risultato generico costituito da un esito positivo o negativo con un messaggio di errore.
Esempio
// 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()
Recupera il percorso del certificato TLS utilizzato per crittografare la connessione di rete tra il server di gioco e il client di gioco. Puoi utilizzare il percorso del certificato quando registri il tuo dispositivo informatico in una flotta Anywhere. Amazon GameLift Servers Per ulteriori informazioni, consultare RegisterCompute.
Sintassi
GetComputeCertificateOutcome GetComputeCertificate();
Valore restituito
Restituisce un GetComputeCertificateResponse oggetto che contiene quanto segue:
-
CertificatePath: il percorso del certificato TLS sulla risorsa di calcolo. Quando si utilizza un parco veicoli Amazon GameLift Servers gestito, questo percorso contiene:
-
certificate.pem: il certificato dell'utente finale. La catena completa di certificati è la combinazionecertificateChain.pemaggiunta a questo certificato. -
certificateChain.pem: la catena di certificati che contiene il certificato principale e i certificati intermedi. -
rootCertificate.pem: il certificato principale. -
privateKey.pem: la chiave privata per il certificato dell'utente finale.
-
-
ComputeName: il nome della risorsa di calcolo.
Esempio
GetComputeCertificateOutcome getComputeCertificateOutcome = GameLiftServerAPI.GetComputeCertificate();
GetFleetRoleCredentials()
Recupera le credenziali del ruolo IAM che autorizzano Amazon GameLift Servers a interagire con altri. Servizi AWS Per ulteriori informazioni, consulta Collega il tuo GameLift Server Amazon server di gioco ospitato su altro AWS risorse.
Sintassi
GetFleetRoleCredentialsOutcome GetFleetRoleCredentials(GetFleetRoleCredentialsRequest request);
Parameters
- GetFleetRoleCredentialsRequest
-
Credenziali di ruolo che estendono l'accesso limitato alle tue AWS risorse al server di gioco.
Valore restituito
Restituisce un oggetto GetFleetRoleCredentialsOutcome.
Esempio
// form the fleet credentials request GetFleetRoleCredentialsRequest getFleetRoleCredentialsRequest = new GetFleetRoleCredentialsRequest(){ RoleArn = "arn:aws:iam::123456789012:role/service-role/exampleGameLiftAction" }; GetFleetRoleCredentialsOutcome GetFleetRoleCredentialsOutcome credentials = GetFleetRoleCredentials(getFleetRoleCredentialsRequest);
ListContainersNetworkInfo()
Recupera le informazioni di rete per tutti i contenitori in esecuzione sulla stessa istanza, inclusi il nome, l'ID, l'indirizzo IP locale e il tipo di gruppo di contenitori di ciascun contenitore. Usa queste informazioni per consentire ai processi del server di gioco di scoprire e comunicare con altri contenitori in esecuzione sulla stessa istanza.
Questa azione è supportata solo sulle flotte di container. Quando viene richiamata da qualsiasi altro tipo di calcolo, restituisce un UNSUPPORTED_COMPUTE_TYPE_EXCEPTION errore. Amazon GameLift Serversottiene le informazioni di rete da un server di rilevamento che viene eseguito localmente sull'istanza.
Sintassi
ListContainersNetworkInfoOutcome ListContainersNetworkInfo();
Valore restituito
Restituisce un oggetto ListContainersNetworkInfoOutcome.
Esempio
ListContainersNetworkInfoOutcome listContainersNetworkInfoOutcome = GameLiftServerAPI.ListContainersNetworkInfo();
Distruggi ()
Libera l'SDK del server di Amazon GameLift Servers gioco dalla memoria. Come procedura consigliata, richiamate questo metodo dopo ProcessEnding() e prima di terminare il processo. Se utilizzi una flotta Anywhere e non interrompi i processi del server dopo ogni sessione di gioco, chiama Destroy() e poi InitSDK() reinizializza prima di notificare Amazon GameLift Servers che il processo è pronto per ospitare una sessione di gioco con. ProcessReady()
Sintassi
GenericOutcome Destroy()
Valore restituito
Restituisce un risultato generico costituito da un esito positivo o negativo con un messaggio di errore.
Esempio
// 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); }